Found via Slashdot, Frank Wiles writes in his blog about why hiring the top programmers results in a better product and ultimately at a cheaper cost, contrary to popular thinking. His reasons are similar to what I’ve been thinking.
If you’ve ever read The Mythical Man Month, then many of his thoughts will sound familiar. A single expert programmer is equivalent to several average programmers. Therefore hiring a few experts yields numerous returns, such as:
- Each developer will be more content with their job, due in part to the higher than average salary, but also because his or her co-workers are of a much higher quality which improves anyone’s job satisfaction.
- Development would require less overall communication as there are less people to communicate with. This obviously improves efficiency as anyone who has been on a 20+ person conference call can attest to. Or read the Mythical Man Month if you want a more in-depth analysis of this phenomenon.
- Experts travel in the same social circles. Having one expert on staff makes it much easier to find other experts in the same field, no matter what field that may be.
- You would save 2/3rds on infrastructure costs. Things like cubicles, computers, cell phones, free lunches, training costs, travel, office space, air conditioning, electricity, etc, etc. The list is essentially endless.
- Your HR department would have 1/3rd the number of developers that it would need to take care of. Less paper work, less questions, less everything, and less turn over because of the lower number of employees.
- Oh and you’d save $300k/year on your labor costs. Not to mention non-salary benefits such as stock options, retirement matches, health insurance premiums, perks, etc. You could spend as much as $100k/year on your talent searches and still be $200k/year ahead. Hell, you could dedicate an entire HR person just to this task.
This idea goes hand in hand with my previous post about hiring Python programmers: Python (and related language) programmers are “better” because they aren’t your average, run-of-the-mill programmer. They take pride in their work and care about their code. Almost by definition a Python, Ruby, et al. programmer is a better programmer.
Don’t get me wrong. There are many fantastic programmers out there (I know quite a few on GIDForums that I would consider experts) but I don’t know how well they meet Mr. Wiles’ definition of “expert”. Judging by many of the code snippets posted on WTF.com, I suspect that the vast majority of so-called programmers are average to below average.
Personally, I don’t consider myself a great programmer. I haven’t been programming for many years and I have very few applications under my belt. But I would consider myself a generalist, which is a good thing according to Mr. Wiles:
Experience is key, but not necessarily in ways you might imagine. Time in the saddle, with a particular language is not as important as diversity of experience. Someone who has worked in several disparate industries, a generalist, is often a much better developer than one who has spent years in the same industry. There are exceptions to this, but in general I have found this to be the case. Bonus points if your developer was a systems administrator in a former life.
I know from discussions with many bosses over the years that I have a unique viewpoint on life that isn’t often found among normal employees. Personally, I like to say, “I’m not innovative, just lazy.” But my ideas are often so out-of-the-box (though I think they’re pretty darn obvious) that I end up being the “golden boy” of the shop.
Hmm, I feel like I went off on a tangent so I’ll close with this: Anyone can learn to program; the best developers are the ones who realize there may be a better way to do something.