Tuesday, August 05, 2008

The Elephant in the Server Room

50% of all people doing business software development should find a new profession.

The dotcom bubble brought us so many bad colleagues. A friend of mine once told me: In 97 he moved from France to the Valley. He basically spoke no English, and was immediately offered several positions as team lead. He couldn't understand their questions and he couldn't articulate answers. It didn't matter; they offered him the job based on his resume and his ability to draw UML diagrams.

There are more interesting stories that may or may not be true, but my friend's experience best summarizes the time for me. If you had a good looking resume (true or not) and you showed any sign of knowledge, you were hired.

Even after the bubble burst, technologists have enjoyed almost constant demand. In 1999 (when I took my first programming job) I was only making ~$20,000 a year. By 2001 I was making ~$45,000, and ~$60,000 in 2003. During the "tough" years I was enjoying ~20% raises annually. I was very junior in those days, but the average programmer was so bad that I looked like a natural team lead.

My salary history is only anecdotal evidence, but I've heard similar stories from other friends enough times to be entirely comfortable with the assertion that any decent programmer was rarely out of work and was often overpaid.

Not everyone was making bad decisions in those days. My two favorite managers from those days didn't even want to hire me. They had candidates ahead of me, but those candidates were getting even more ridiculous offers elsewhere. I took the jobs the better candidates didn't want and worked my way up. I was junior, but I had desire and ability. Those managers wanted the best, but they had to settle for what I was bringing to the table. If I was junior and commanding decent salaries, imagine what the good guys were getting paid.

Luckily, everywhere I went there were a few people who were senior, smart, and willing to help out an aspiring team member. They were the team members who took all the hard work and always delivered early. The Hero Coders of those days.

There were definitely smart managers and smart developers back then, but they were (and are still) the minority.

Now, "those days" are over and technologists are in higher demand than ever. I don't think we got rid of many of the dotcom bubble bad apples, and now we're bringing in a whole new batch of terrible software developers.

The situation is worsened by the immaturity of our profession. Who really knows how to deliver software efficiently? Martin Fowler, Joel on Software, Kent Beck, Zed Shaw? I know who's practices I prefer, but it would be quite naive to ignore the possibility that I've been led down the wrong path.

Teams are generally built around shared practices, so if you pick the wrong practices chances are you are on the wrong team. If the entire team is doing something wrong, who could tell the manager? Who would even know? Realistically, the team would carry on under-delivering until someone with another perspective enters the picture. But, there's no guarantee that the newcomer is correct either.

If we cant be sure what the best practices are, how would we know who to fire? It's tough to say, but I have a few things that I look for in co-workers.
  • Attention to Quality
  • The Desire to Improve
  • The Ability to Adapt
  • Strong Collaboration Skills
Those general skills ensure that your team will continue to evolve as practices are discovered and matured.

Do you pass the test?
  • Have you tried Test Driven Development? Can you name something you liked and something you disliked?
  • What language(s) that are gaining popularity, but not yet mainstream, have you written Hello World in?
  • Do you read books or blogs looking for new ideas at least (on average) once every two weeks?
  • Do you at least attempt to learn a new language every year?
  • If you don't understand a requirement, do you IM, phone, or go talk to the business?
  • Have you ever run a code coverage or cyclomatic complexity tool against your codebase?
  • and so on...
On average, 50% of the people I've worked with cannot answer those questions correctly. If you can't answer them correctly
  • You're junior and could use a good mentor
  • Or, it's time to find a new profession.
Josh Graham pointed out that this isn't a new idea. The same thing was said 10 years ago, and the same thing will probably be said 10 years from now. That's a fair point, but I think it's worth saying -- over and over. We shouldn't accept the the current state of things. If you aren't a fit, you should find something else to do. If you're colleagues aren't serious about their craft, you should encourage them to find something else to do. If you manage weak programmers, you should force them to find something else to do.

Software will be delivered even if the situation stays the same, but shaking things up could deliver faster, cheaper, and better software. And, that world is a better place to live.
Post a Comment