aggregator

Stagnation Leads to Immobility (880 words)

Chilling Words (Seth's blog) - Tue, 07/29/2008 - 23:59

If there is one thing I fear in regards to my professional life it is stagnation. The field of computer programming is far from a closed field; it is an exciting industry to be a part of, one with low barriers to entry, huge rewards, big payoffs, job satisfaction, and dynamic, vibrant, change. It is because the field is still open and being explored that stagnation in this field is especially dangerous, and yet I’ve met far too many people who have grown stagnant, and I have yet to meet an employer who actually combats it.

I have had the good fortune to work in more than just one industry. Sure I’ve always been some part of the IT department in whatever industry employed me, but I have not always worked in an IT shop. My last job is a particularly good example as a counter-foil to my argument. Printing is an old industry, old enough to be measured in the thousands of years. Technology changes and to some extent so does printing, but from what I am told offset printing is well established and in effect a closed system (by that I mean it is complete and thoroughly known).

No offset print shop in the world operates in a manner that is significantly different from another; there simply is not much more to learn about the technology other than the best ways to tune the machines for performance and/or quality. Given this it is not only safe to assume, but almost solid fact that a press operator can reach a point in his trade-skill in which he can learn no more, for there is no more to learn. Once he reaches this point it is worthless to continue to train him.

Contrast this with the programmer. Not a month goes by that I don’t hear tell of some programming language or technique that I was previously ignorant to. The history of the languages I use on a regular basis is laughably short, and yet programming as a skill and a career is older than I am. People are always coming up with better ways to solve the same problems we all face, and when they share these solutions we must learn them or continue to battle our problems, only now in futility.

If I were to bury my head in the sand, or as usually happens to the stagnant programmers I know bury my head in my code, I would quickly lose pace with the State of the Industry. That will then cause me to miss the fact that all the highly skilled programmers abandoned ship wholesale. This leaves me to sail on a lonely ship only sparsely populated with the other ostriches who cannot see the world around them for the code in front of them. I have some little experience with the world of theology and compared to computer programming it moves at a snail’s pace. In that academic field it can take years for an article to go from written to published.

The only way I have seen to keep pace with the rapid changes and developments in programming standards and practice is to spend some part of my day, every day, keeping tabs on what’s going on. Not only that I need to try it out and see how it works, and if indeed it will solve my problem. Anecdotally I watched Linus Torvalds present a rather arrogant talk about Git to Google. It was (and is) a fascinating piece of technology but I could not imagine I could find any use for it in my workplace or in my home. Weeks or months later everyone around me had started using Git, and most of the usage was for small projects. I made an excuse to try out the software and to make a long story short I am now using Git at home and began the conversion process at my last job, even going so far as to convince my replacement to continue the work.

Personally I still feel that i am more stagnant than I realize. I am still ignoring technologies such as Lisp, Haskell, Erlang, OCaml, Ruby, Ruby on Rails, CouchDB, SmallTalk, Lua, Arc, Nu, and D. I have no idea how any of those technologies would help either my personal projects or my work projects, and unless I make and take the time to investigate them I never will. I only know the MVC framework because I took the time to read about how someone solved a workflow problem that was driving me nuts, and now I cannot go anywhere on the Web without running into someone building yet another MVC framework.

My point to all of this is simply: Do not stop learning. It has been said that programmers do not practice, and that we ought. I will add to this and state that programmers do not research enough, and we ought. I will go so far as to say that we ought to work to change our job descriptions to include daily research and practice. I may never be a great innovator, but if I can learn from those who do innovate and share their methods and code, then I can be a great programmer, and so can you.

How to Kill a Project (771 words)

Chilling Words (Seth's blog) - Thu, 05/29/2008 - 23:57

I’m restless. At this time of night I should be calming down, relaxing, and preparing to go to sleep. I should be putting the day in a box and that box on a shelf, ready to archive it in some great warehouse of dusty, forgotten, boxes with faded labels. I’m not. I’m agitated; I’m frustrated; I’m wound up so tight I want to scream, yell, and engage in some full-contact physical activities (preferably ones where I’m the only one doing the full-contact, or I won’t last a minute).

I had one of those days where everything was clicking and going right; my project was nearing the finish line and just in time to make the deadline. I was going to make my deadline, and I was going to be rewarded with the promised raise. My hard work was paying off and my years of experience which told me I could hit the deadline was spot-on, a sign that I am maturing and not stagnating. Then four o’clock rolls around and I get the final piece I’ve been waiting weeks (months really) for … and everything falls apart.

I will not make my deadline, not by a long shot. Information was being withheld, the kind of information that dictates design. Suddenly my clever database schemas are superfluous and over-complicated; the code I wrote to accomplish the goal of the project doesn’t quite work, and is overkill. The project’s stated goal was ambitious and exciting; it would require a flexible framework to meet the demands, one that would operate on, near, or at the meta level of programming. It called for extreme flexibility, and so I built that, and it is a thing of beauty (despite the obvious need for some refactoring, but for version 1.0 alpha it’s amazing). Then the pricing data comes in, the all-important data that turns the other data into money, and instead of finding flexibility I found rigidity.

My deadline is tomorrow and the pricing data won’t work. It ignores all the flexibility called for by the project scope and specifications. To their defense we don’t have any official documented scope and specifications, something that annoys me and might very well be my fault; however, my company operates with loose structure and with an informality with which project specification documents would go unread (or worse, would only confuse people). I’m not a manager; I don’t really know what it takes to manage people, but I imagine waiting until the last minute to get pricing data to the programmer is probably covered in Project Management 101 under the section “10 Things that Kill Projects”.

The problem, as far as I can figure it out, is the folks who figured out the pricing could not manage to make their system of calculating prices conform to the flowchart I handed them as to how I planned on generating prices. Under the pressure of a looming deadline they worked furiously whilst ignoring the few design documents I had given to them. In some regards I can blame them, because they did have some indication of my expectations, and instead of alerting me of a design flaw on my part they worked independently and shot me down. This may not be their fault, because they were actually in communication with the project manager.

So can I blame the project manager? Not really, not in this case, because he in fact has only been the project manager for about a week. I’ve been hard at work on this for a few months, but the boss had other duties to attend to and decided he was in the way of my progress and passed off the project. With only one week to go this new project manager had a lot of catchup to do, and some decisions to make. He did not (and does not) have all the information he needs to make decisions, and is, I believe, operating under a different design than the one already in place.

If this were normal at my company I would just abandon ship, but this is the first time it’s happened. Regardless, that does not make it any less aggravating. I take program design very seriously. I like to have all the information up front; I want the full scope of the project laid out; I want to see the big picture. Complex systems require careful thought and considerate structure in order to avoid accidental tight coupling. I cannot build a dependency chart without having all the information.

I sympathize with my fellow programmers and designers who face this on every project. It’s a wonder anything gets done.

Lazy or Exhausted? (748 words)

Chilling Words (Seth's blog) - Sun, 05/11/2008 - 00:20

I may have stumbled upon something today, something I’m not sure I want to deal with. Some time when I was a kid my folks cautioned me against being lazy. My memory is hazy on the occasion, but knowing me I was probably being admonished for staying indoors reading books rather than going outside and playing, a condition I still suffer to this very day. Since that day (and probably even on that day) I’ve taken offense to being construed as lazy, but I’ve also been quite afraid of becoming lazy; somewhere, somehow our society has determined that laziness is a horrid trait placing a social stigma upon it. Quite often we blame things on the lazy, and quite often we label people as lazy when they don’t do what we think they ought. So when I force myself to be lazy and then feel physically better for it I find myself in a weird state of inner turmoil.

Nine months have nearly passed, and my daughter is about to be born. Like all children she has thrown her parents’s little world into utter chaos. My life has been a whirlwind of activity trying to get things ready to bring a baby into our home. We’ve had the nursery to create, complete with a new paint job, a new floor, new trim, and new furnishings; I’m not even sure if the decorations are done yet; we’ve not even managed to unpack all the baby gifts we’ve been given nor put enough of them away. At this very moment the crib is full of all manner of baby accouterments, with no room for a baby.

In the process of creating a nursery one room needed to be emptied, and the contents of that room spilled over into many others, with my study taking in the majority of the refugees from The Great Baby Migration of 2008. These are just some of the changes we’ve had to make, and I expect more are on the way, and these changes take time and energy to complete. Most of them aren’t even done, as my study is a war-zone of storage versus productivity and there is no clear victor in sight. There is only one seeming solution: time plus elbow grease.

I suppose it should not surprise me to discover that I’m exhausted, but it does. I have a literal pile of work that needs to be dealt with, combined with a short list of things I’d really love to do, and a long list of stuff that would be great if I could do. I suspect we all have these lists, and some of us have the piles as well, but what is hard to quantify is the toll these lists take upon a person, and the extent to which they contribute to a person’s exhaustion.

So here I sit with more work to do than time to do it, and no energy to do it, and I want a break. And then some voice in my head mentions the word “Lazy” and the inner turmoil starts anew. I’m out of energy, dead exhausted, losing sleep at nights, and I’m day-dreaming about vacations. So I took one today, sort-of. I did have a short list of things that needed to be done, but once I did them I decided to do nothing else but lay on the couch and watch T.V. You know what? I feel profoundly better.

So the inner turmoil is a-broiling again, and I’m trying to get a handle on it. Have I found a new angle to combat this inner voice accusing me of being a lazy lay-about? Was I really just exhausted and in need of a rest? And yet, on the other hand no one I know would dare call me a “work-a-holic” … score one for the lazy argument. For my part I cannot deny the physical change, and on that evidence alone I must conclude I am in fact exhausted, and taking down-time with the intent and purpose to rest is, in this case, not being lazy but is an effort to maintain my health.

In the end I still don’t like it. I don’t like struggling against being lazy versus taking a much needed rest. I’m just weeks away from becoming a father, and my actions will set an example and expectations for my child, and the last thing I want to do is approve of laziness, even if I only tacitly do so.

Syndicate content