The tech job market is crowded. So crowded that it can be difficult to find and hire great people that care about the work that they do especially when you are a small startup. This is especially true for programmers where their resume may not exactly match up with their actual talent.
A lot of hackers can say on their resume that they have programmed with ‘X’ framework for 5 years and have worked on ‘Y’ project that saved a startup ‘Z’ millions of dollars. But what a piece of paper cannot show is just how much drive, smarts, talent, and zeal that said hacker actually has.
Because of that it is important to dive a little deeper when one is looking to hire great developer. Some ideas to consider are as follows:
Do they really like programming?
It is a good thing to look at a developer’s sample code from past assignments, especially things that they have worked on in their spare time.
You and I may think that if you don’t like to do something you should not make a career of it. But that is not the case for many people. There are many young people that go to college and think that if they major in something that they will make big money, not caring at all what the work will entail. Make sure that the candidate really likes programming. Even loves programming and considers themselves a bona fide hacker. If they get up in the morning thinking about a new design they want to try or have figured out a problem in their sleep, this is the person with passion and drive that you want to hire.
Always ask for sample code
Throughout the searching and interview process there are some things about the prospective developer’s personality that you can take note of:
Look at the organization of their code. Is it clear? Well documented? Not overly documented? Does the code use some advanced ideas and represent a decent design?
Also, ask what the hardest part of her code was to overcome. Can she speak clearly about the problem and explain to you how she solved it?
Another word of caution; if she cannot provide sample code or her sample code is horrid, then this person is not the great one that you are looking for.
Look for general attributes that a hacker should have
- Can they learn quickly and efficiently?
- Check their personality. Is this someone that you could work with on a team for hours a day?
- Do they ask many question about your product? Do they actually seem interested in what you are offering?
- Make sure their attitude is that of someone that wants to learn, not overly confident and acting as if they know everything about programming and various technologies.
Ask difficult technical questions
Not only will asking the potential developer about difficult concepts such as the point of polymorphism, interfaces, threading and design patterns inform you whether or not she knows what she is talking about, it will also show you what she is generally interested in the technology realm. Not every great programmer is going to know very difficult concepts regarding programming languages and software development, but asking them to discuss these ideas will let you know where they stand, what their strengths and weaknesses are, and what they are interested in as a developer.
Major and GPA is insignificant
I’ve met many great developerss who have not majored in Computer Science or a related field. Having a degree in a technical field is an added bonus, but it does not make a great programmer.
Understand them as a developer and a person
Has the candidate had a solid streak of being able to get things done on time? Even under pressure? How do they handle stress and how do they manage themselves to push out many productive hours of developing? Even with difficult questions and problems, are they persistent enough to follow through and solve them?
Probably the most important thing that you can use to judge if someone is great at programming other than them being passionate and smart is assessing their drive. Drive is a an amazing thing. It will take someone who is of mediocre to good talent and push them over the edge of becoming a great, pragmatic programmer.
Follow up and test them
Large software development companies are looking for excellent engineers and to do so they tend to give them problems to take home and solve through programming. This is a great way to understand how the potential developer works and how well they can solve problems.
The programming assignment does not even have to be difficult. In fact, if you really want to weed out average hackers, give them a simple assignment and take a look at their code. Is there duplicate logic? Certain lines that can be totally omitted? If you see this type of code then you can guarantee that the programmer is not on her “A” game.
Also, if you want to give them a larger test you could potentially hire them for freelance work on a small project and see how they pan out. This can sometimes be an expensive thing to do, but if you have a feeling that they are someone you want in the first place, it can’t hurt to have them do a little paid work for you to see how they fit.
It’s important to get it right
Hiring a great programmer takes time and experience to do. It’s easy to get caught up in their skills and experience list, but if they don’t have the correct hacker mindset and attitude, they may be the completely wrong person.
There are many developers out their that like to code and do a good job of it. But there is a much smaller percentage that live and breath software development, beautiful code, and have the drive to solve difficult and interesting problems. Finding these type of hackers is worth the extra effort and time as they produce the best results for your startup while they are being fulfilled intellectually.