Hiring the Best Coders

No one really disputes anymore that the best coders are at least 10 times more productive than the…er…not so good ones. Steve McConnell even named his blog 10x Software Development in order to ram home this very point.

So how do you go about hiring the 10x developers who are going to transform your company, make you a small personal fortune and allow you to retire next week?

One solution that I proposed in my post Is C++ The Only Real Language is asking your candidates one simple question: “Can you code in C++?”

If they answer yes then hire them. Otherwise show them the door and delete their CV from your hard drive. Wait! I’m only kidding. I know there are good programmers out there who don’t know C++. Somewhere. Probably.

More seriously Frank Wiles provides some excellent thoughts in his post A Guide to Hiring Programmers: The High Cost of Low Quality. The two pieces of advice I particularly agree with are:

  • Focus on hiring good programmers in any language rather than hiring someone who knows a specific language
  • Seriously consider offering flexible working conditions to strong candidates (i.e. working from home, part time, family friendly, flexi-time)

Additionally I would like to add three observations of my own on how to recruit the best:

Don’t Wait Until You’re Desperate

There is sometimes a temptation to believe that once you have won some work you can employ an extra developer or two to meet the resource requirement. But guess what, finding and hiring high calibre candidates in a few weeks is practically impossible. To build a strong development team you need to be constantly on the look out for great talent. If you are lucky enough to find some then you need to make sure that you have work for them to do. In his post Avoiding Hiring Mistakes: Be Ready To Break Schemas Pawel Brodzinski makes the point that if you find a “perfect” candidate then you should “find a place” for them on your team (I have to add that Pawel’s whole Avoiding Hiring Mistakes Series is well worth a read).

Coders Should Interview Coders

If you are not a developer then you are the wrong person to identify a strong candidate. Only good coders can identify fellow star geeks. You don’t have to take my word for it. In his essay The 18 Mistakes That Kill Startups Paul Graham spells it out:

“So how do you pick good programmers if you’re not a programmer? I don’t think there’s an answer. I was about to say you’d have to find a good programmer to help you hire people. But if you can’t recognize good programmers, how would you even do that?”

In this situation my advice is to identify one or two developers on your team that get the most done and get them involved in interviews. Note that they may not be the people you like most/make the best conversation/enjoy meetings. But that doesn’t matter: you want the ones that write the best code quickest.

Include a Practical Exercise in the Interview

In schools it is common place when interviewing teaching candidates for them to deliver a lesson to a classroom full of students. This is, of course, an excellent way of assessing their teaching ability. Similarly, for the last technical interview I was involved with, I found some production code that contained a bug for the candidates to fix. Interestingly candidates that seemed weak often surprised us in the practical exercise and were able to talk us through the program logic, ask relevant questions and propose solutions. Conversely a candidate who interviewed well did not necessarily turn out to be technically competent. To save yourself some time it is well worth including some level of techncal questioning as part of your telephone screening of candidates as suggested by Jeff Atwood in Getting the Interview Phone Screen Right.

Want to know what others think about what to look for when you’re hiring? It is one of the questions I have been asking in my series of PM Interviews.

Advertisements

5 comments so far

  1. […] I’ve lately been challenged with the task of growing my development staff (if you’re a perl developer, know OOP and are interested in the Nashville area, by the way, contact me). As I do this, I find myself challenged with the age-old task: how do you recognize a truly great programmer? The kind of programmer that will grow with you as your products and business evolves?

    While pondering this, I’ve run across a few articles that summarize things very well: […]

  2. Pierre on

    Hi,

    > “Can you code in C++?”

    Hmm… some *really good* programmers disagree:

    “C++ is an insult to the human brain”
    (Niklaus Wirth)

    “I invented the term Object-Oriented, and I can
    tell you I did not have C++ in mind”
    (Alan Kay)

    “There are only two things wrong with C++: The
    initial concept and the implementation”
    (Bertrand Meyer)

    > “Focus on hiring good programmers in any language”

    Are less-than-average levels in many areas more
    desirable than real expertise in a very useful
    area? This can be discussed.

    Now, the real question is about what “the Best Coders”
    can achieve in comparison to “err, not so good coders”.
    For a real-life example, see:

    http://trustleap.ch/

    The TrustLeap G-WAN Web server puts Microsoft (and many
    others) to shame, without budget, and in only 2 months.

  3. Matthew on

    Good coders don’t necessarily code in C++, but good coders have reasons why they do or don’t code in a particular language. Reasoning and understanding trump knowledge, and knowledge in the absence of reasoning and understanding is simply dangerous.

  4. Pierre on

    @Matthew

    > Good coders don’t necessarily code in C++

    For a simple reason: C++ (like COBOL) is defeating the
    very purpose of programming in the first place.

    You can only be a C++ fan if you don’t understand how it
    works (and are not curious enought to look at the code
    it generates).

    > good coders have reasons why they do or don’t code in
    > a particular language

    Precisely: there’s absolutely nothing from C++ that can
    be seen as a progress.

    Proof?

    Compare the BOOST library’s Web server to http://gwan.ch/

    C++ is loosing on all facets: security, footprint, code clarity… and performances.

    That’s all the difference between Academics and engineers.


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: