As I was making my weekly rounds of the software blogging universe, I came across this fascinating post by John Cook. Besides having a delightfully alliterative title, it struck a chord with me due to my similar experiences.
I’ve been a student of programmer productivity for over three years now, especially as it relates to hiring, pay, and experience. The last two paragraphs of Mr. Cook’s post made me smile, as I can relate. The best (most productive in this sense) programmers aren’t necessarily the smartest or most technically skilled; they just have a special talent for recognizing and applying the best solution to a given problem. They recognize common problems and that existing, stable code exists to solve them. At a higher level, they realize when they’re building the wrong thing or applying a hack rather than a long-term solution, and call it out to the appropriate people. In fact, these skills aren’t endemic to the current definition of a “programmer” at all, but are often best applied at the managerial or director level. Often, developers (or even managers) don’t have the clout to interrupt an ill-designed project or feature, even when it’s clearly off-track.
I’m very excited to start putting on some more hats in my new business endeavor besides the old, crusty programmer one. Call me biased, but I’ve always considered developers the single most important link in the production of software. They are what connect the business idea to its implementation, and thus can have the biggest impact on not just performance and accuracy, but requirement satisfaction and usability. The best developer can not only implement a fast, clean, and elegant software solution, but prevent a poor user interface or inappropriate system from ever being realized. Those latter cases represent the lion’s share of wasted time and money in a software project as constant redesigns and reworks are required.
It would be interesting to extrapolate this concept to the productivity divide between large and small software companies or the necessity of software CEOs to have an excellent technical background. Perhaps in a future post.