37 Signals has a post on how to hire a tech guy if you’re not techie yourself. It’s a good high level post. Here are some of my additional thoughts from a techie point of view.
Is He On Stackoverflow?
If the programmer doesn’t have a Stackoverflow(SO) account, that’s -1 point for me. Having an SO account is a prerequisite these days. Ok, so he has an SO account, what is his activity rate like? Does has ask more questions then answers? Generally speaking, having a high score from asking questions is not as impressive as having a high score from answering questions.
Is He On Github Or Bitbucket?
It’s a very bad sign if he’s not on either sites. Look into the number of repositories he’s created and if they are popular as indicated by number of stars and forks. Also, check out the projects he has forked. Forked projects indicate an itch he’s trying to solve for his own project which shows he’s able to:
- Trouble shoot his own problems
- Get things done
- Use an existing solution, tweak it without re-rolling this own solution which would undoubtedly take longer and potentially be buggier
Does He Display An Ability To Learn
Programming is one of those industries which redefines the goal posts every year. To use the cliche, change is really the only constant. It is of utmost importance that he possess a growth mindset and has the ability to learn autonomously. One way of spotting this trait is by looking at his background. Some of the most effective programmers I know are autodidacts who started their career in a completely different field. Of course, this is by no means a litmus test but it does shed light on the candidate.
Is He Intellectually Curious
This point is heavily correlated with the previous point. Most of the best programmers are intellectually curious; not necessary in programming itself. I find the best way to see this in a person is through an informal conversation. Looking at this pet projects or what he does in his free time is also a good place to start. Does he hack on arduino projects in his free time? Is he learning to play a musical instrument? Does his twitter feed contain good observations about current affairs?
Communication is an a key trait that most people overlook. A “good” programmer that is unable to communicate his ideas well is a bad programmer. Most projects that go south stems from misunderstanding of project requirements. Again, the best way to see this is having a face to face chat and see how he articulates his thoughts. If he maintains a blog, read it. If he is on twitter, follow him. One side point: if he keeps a blog that is mostly tech-oriented, that’s good sign that he’s passionate about what he does.
If you’re bringing him on trial, take note of his responsiveness and willingness to ask questions. The more initiative he takes in seeking to clarify uncertainties, the better.
Does He Give Back To The Community
No one likes to work with an asshole. One good litmus asshole test is to see if he gives back to the community. Does he hold meetup sessions? Is he answering questions on Stackoverflow? Does he blog about this discoveries? Does he active in the local user group that he specialises in? Does he respond to newbie questions in a polite manner as opposed to RTFM?
At the end of the day, you should beg/borrow/steal another programmer to screen him for his actual technical competence. If he can’t produce fizzbuzz in under 5 minutes, you’ve got a stinker no matter how well he passes all the points I’ve listed above. To quote Jeff Atwood:
“Maybe it’s foolish to begin interviewing a programmer without looking at their code first”
Sounds like a no-brainer to me.