There are many strategies whom to hire, especially when it comes to developers. I've hired many people, and always hired the best I could get. But there are other strategies. Problems do arise when the people you hire do not fit your hiring strategy. I mainly distinguish three stratgies:
- Hire the best,
- the mediocre
- or the cheapest.
Each strategy has different prerequisites and different impacts on a company.
Prerequisites: Excellent working conditions, challenging work, above average pay. You cannot hire the best with sub-average pay. You can get the best for average pay if the other factors speak for themselves.
Impact: Costs will be high, at least on paper. Great developers are around 5-10x as productive as cheap ones, but they at most cost twice as much. So from an economical view, it's always better to hire the best.
"The fastest students were finishing three or four times faster than the average students and as much as ten times faster than the slowest students. [...] It's not just a matter of "10 times more productive." It's that the "average productive" developer never hits the high notes that make great software."
Robert Glass writes in one of the best books about software development:
"The best programmers are up to 28 times better than the worst programmers, according to â€œindividual differencesâ€ research. Given that their pay is never commensurate, they are the biggest bargains in the software field."
I've written in 7 Bad Signs not to Work for a Software Company or Startup about the reasons not to work for a company:
- No Source Control
- No top tools or only home brewed ones (IDE, Build System, â€¦)
- They donâ€™t let you talk to or see developers
- High turnover
- Hiring is mainly done by HR, not by developers/technical staff
- No decent hardware
If your company shows these signs it's higly likely you will not attract the best. After you're hired the best, be sure to keep them. Do not demotivate them as I've written in "Developer Motivation and Satisfaction". Your best hiring strategy does not help if you keep losing developers.
I've interviewed many developers, and rejected most of them, but all of them got a job somewhere else (probably at a company who think they only hire the best) so I assume the most prevalent strategy is hiring mediocre developers.
Prerequisites: Essentially none, most of the developers are mediocre.
Impact: Development will take longer. It will be harder to stay competitve because of the lack of technical innovation which is driven by the best developers.
Why do managers hire mediocre developers? Phil Haack writes in "10 Developers For The Price Of One":
Itâ€™s because most managers donâ€™t believe this productivity disparity despite repeated verification by multiple studies.
Prerequisites: Your process and quality assumptions must be adapted. More micromanagement, more oversight.
A process where one member (architect) specifies everything and the cheap coders write the code. You need to forsee and anticipate the maintanence problems and deal with them. Often it's cheaper to outsource than to hire cheap coders. I would not recommend this, it only works if executed perfectly, and most managers are not that good.
I would go with the best, but if that's not possible for some reasons, know that you do not hire the best and act accordingly. Failure arises when you hire cheap or mediocre but think you've hired the best, a pattern I've seen over and over again.
What do you think? I'm interested in comments.