Hiring overpriced developers is bad business too. You want to get the most value from your programmers for the least total cost.
It’s well known to anyone that understands software development that there are huge differences between average programmers and great programmers.
If you’re hiring developers, take the time to read this post and the others I link to. It’s much cheaper than hiring a bad developer.
Read these posts. They’re probably better than this one:
- Three myths about developer effectiveness « niksilver.com
- In Silicon Valley, Buying Companies for Their Engineers – NYTimes.com
Mark Zuckerberg was quoted as saying:
Someone who is exceptional in their role is not just a little better than someone who is pretty good. They are 100 times better.
Listen to this guy. He got a 1590 on his SATs. Oh, and he created Facebook. He may have written all the original code himself to get the site up & running, but there’s no way in hell he could have created what Facebook is now all by himself. He had to hire awesome programmers. And be a bit lucky and have a great strategy, of course.
So why are so many companies hesitant to pay 2 or 3 times as much, or even just 50% more for a really good developer, than an average one?
One simple answer to this is easily derived from my original claim: these companies don’t understand software development. It’s amazing, yet sad, how many companies that employ software developers probably fall in to this category. Sometimes you can teach them, but most software engineers don’t want to spend their days teaching their superiors how to do their job. The smart companies will hire someone good (if possible — see the quote from Paul Graham below) and let them be free to produce great results.
I’m willing to bet insecurity is another big reason. Good software developers are wicked smart, and it can be difficult and intimidating to manage someone smarter than you. If a manager or lead that doesn’t own the company is hiring, there can be a real fear that the person they hire could end up replacing them. In my experience and opinion, if you’ve got anyone like that, it’s probably best to get rid of them anyway. For a company with awesome people, new opportunity and growth will be created like magic, and you’ll have enough trouble finding people to hire, let alone thinking of replacing or getting rid of anybody.
It seems inflexible budgets are another issue. I think a lot of hiring managers and business people focus a lot on salary, but don’t look at project cost at the same time. They’re thinking, “I can’t afford this developer at $150K per year.”, but for some reason they think they can afford for the project to take 5 times as long having the $50K per year developer do it. It seems a lot of people would prefer to piss away their money slowly albeit at a higher total cost.
But when I think about what killed most of the startups in the e-commerce business back in the 90s, it was bad programmers. A lot of those companies were started by business guys who thought the way startups worked was that you had some clever idea and then hired programmers to implement it. That’s actually much harder than it sounds—almost impossibly hard in fact—because business guys can’t tell which are the good programmers. They don’t even get a shot at the best ones, because no one really good wants a job implementing the vision of a business guy.
So, if you can’t tell a good programmer from a bad one, it’s a lot riskier to pay someone $150K than $50K.
I’m currently working part-time as a freelance software developer & consultant. A recent client brought on a junior programmer for about ¼ of my hourly rate to help with some work. He thought he was going to save some money, and get more done quickly (as this person was available full-time, whereas I was only working for him about 10 hours/week). I helped locate and screen the candidate. He completed a coding test that I wrote that tested the basic skills necessary for the job. Although I had high hopes, it took the programmer 6 – 10 times as long to produce the same work at a similar level of quality, and I still had to provide a lot of assistance along the way. Keep in mind that this was the best person that we could find available at the time, for a cheaper rate, that was able to make it through the coding test.
On another project, I was switched from a development role to a consulting role (basically no billable hours) when the client’s original developer was able to devote time to the project again. He’s a smart guy and a good developer, and he knew the code base & the business requirements better than me. Plus, he was only half the cost per hour. It made complete sense. I would have done the same thing. I would also hire him myself if I had a project and he was available and interested – and there are very few developers that I’ve met that I would hire for my own business.
I’m not going to pretend to have the answers here, but I’ll put in my $0.02 anyway.
If you employ software developers, and aren’t Google or Facebook, go read this book:
When it’s time to find great programmers, I am going to have to agree with Paul on this one – it’s a hard problem. Not only are they hard to identify, but there are so few of them. If you’re not in Silicon Valley, Boston, Austin, or Seattle, you’re going to have an even harder time, because a lot of the best talent has already moved there.
We all know resumes are subjective at best. So look on a resume for points that are more objective. Look for test scores (SAT/ACT/GRE), class ranking, grades, and what school he/she went to (Harvard, Stanford, MIT?). These aren’t a guarantee of how someone will perform, but at least they’ll tell you a person’s got the aptitude. If you’re hiring anyone for anything longer than a couple of months, aptitude matters more than experience.
You can try and use LinkedIn and recommendations, or visit a coworking space with a lot of freelancers that know each other, but there’s always the risk the it’s all one big circle jerk.
You might use a programmer’s Stack Overflow reputation as a guide. But not all good programmers are on Stack Overflow.
You can look at a candidate’s Github account & code. If they’ve got repositories with a lot of forks, that’s a good sign. But not all good programmers have their code forked a lot, and not all good programmers put code up on GitHub. Github is not the new resume.
Test your candidates. Whiteboard tests are good, aptitude tests are good, pair programming is good, and coding tests to be completed offline are excellent. I spent 4 hours writing a coding test for PHP that I can re-use, and it was well worth the investment. When I passed out the test, applicants dropped like flies, and I was left with only those that were both willing and capable.
Some thoughts from Quora. On the topic of recommendations, it should go without saying, but make sure that if you’re getting recommendations from someone, you get them from a good source. Don’t ask your business buddy for recommendations for good programmers – ask the best programmers or tech people you know, if possible. The value of a recommendation is much higher if the person giving it has authority in the field.
I’ve said before that you should find developers that code in their spare time. Although this is a great way to identify passion, it says nothing about aptitude. Having someone that hacks all night long on their own code, but takes 4x as long to solve programming problems as the guy who spends his spare time learning Kendo isn’t going to help you much.
Again, it’s all about minimizing risk and these are just tools to use. You have to use them all together on an individual basis, and hope for the best. These are a much better ways to minimize risk than hiring a cheap programmer.
Once you’ve got developers, do everything you can to help them collaborate effectively and be as efficient as possible.
Other Interesting Stuff
This post by Paul Graham is another favorite: What Happened to Yahoo.