Hiring programmers is a difficult task. Not only must you ensure that your selected candidates know the job; you must also make sure that they fit in with your company’s objectives. Not every good programmer is good for your company.
This article highlights steps that must not be missed when hiring programmers in Nigeria.
Never Ever Hire a Programmer if you are Not One:
Of course you can interview a candidate for issues other than the technical aspect of the job; like work ethics, discipline, company culture, educational qualifications e.t.c. But if you are not a programmer, you have no business hiring a programmer. When I was a newbie, I got hired by a lot of people who saw my petty jobs, with fancy UI, and were impressed. I got paid writing a lot of crappy, unscalable, undocumented software. This would never have happened if I was interviewed first by a senior developer.
A qualified company CTO should interview the candidates. If you have no CTO, please delegate to a hiring firm/consultant. The danger in hiring bad programmers is that they will litter your company with other bad programmers, and if you ever manage to get a good one, they will frustrate him/her out of the company. God help you and your customers when that happens.
Even if you are not employing a developer on a full time basis, but for just a one-time project, get someone you know is deep in the game to interview him first. There are many good developers here on Nairaland that can help you.
Invite applications from ‘passionate programmers’; NOT CERTIFICATE HOLDERS: sorry, but programmers are scarce and really good ones that will deliver reliable, scalable software are almost impossible to find. If you put in the barrier of certificates, you make a hard nut harder. Programming is a task that people master by putting in dedication and practice- Not by going to school and getting fancy certificates.
Also, if a CV has too many certificates listed, it should raise eyebrows. The fact that there are so many certificates is a strong indication that the person has not really sat down to code for long lengths of time.
Of course there are positions for which certificate barriers are welcome. These include project manager, software architect, e.t.c.. But for ‘programmer’-the guy who writes or maintains code pursuant to given specifications; a certificate shouldn’t matter during first screening.
Its also okay to add technology restrictions but rather than languages; emphasize platforms. If you already have PHP programmers, adding a Node.js programmer to the mix wont hurt.
I want a web programmer is right.
I want a C# WPF programmer is wrong
I want a Windows Desktop Programmer is right.
Ask to solve reasonable programming problems:
When I say programming questions, I don’t mean sort algorithms and asymptotic notations. You are hiring programmers; not computer scientists. What matters is that they know relevant data structures, design patterns, and how to use them to solve common business problems efficiently.
Off the top of my head examples will be:
1. Give problems that require the programmer to use polymorphism in solving. Don’t mention this. Programmers who have never come in contact with this will use other clearly non-efficient, code-obfuscating, tightly coupled strategies.
2. Give problems that involve hashmaps, hashsets, linkedlists, stacks, queues.et.c. These are data structures you don’t learn by reading ‘for dummies books’ or ‘learn java in 21 days books’.
3. Write code with subtle bugs and ask them to correct it. Candidates new to debugging will fail at this juncture.
4. You can add algorithms but this should be used to determine the best candidate-not the worst candidate.
5. Let candidates solve these in languages of their choice.
What to take out of this stage is: my candidates are actual programmers…not 3 month old newbies.
Ask to see written projects:
At this juncture, you have eliminated so many potential disasters. You should probably stop in your tracks and send me a ‘thank you’ mail before you continue.
Its unfortunate that this is the stage where many Nigerian employers actually start the hiring process. Its plain wrong. Many of the projects your candidates claim to own could have been written by other people. Also, how do you know they didn’t copy huge amounts of it from somewhere? And how much time do you actually spend on each software to determine and appreciate its strong points and weak points? Believe me, many software projects look beautiful and properly structured; until you put them to personal use. That’s why companies hire professional testers to detect bugs.
What you should take out of this stage: the technologies your candidates are familiar with!
You cant integrate another person’s code in yours, except you are familiar with the technology that person used. You should also take note of how these projects relate to what your company does, which brings us to the next stage.
Have them work on projects similar to what your company does:
If you have to pay them for the project, by all means do! But you need to be sure that a programmer can handle a typical project in your company before hiring them. Many java spring programmers will have difficulty writing java android and your company is a business environment, not a programming school!
Also, when they work on company project, you see subtle things like how they relate with your team, and how much they understand company objectives. By the end of this exercise, you already know who you want to hire and who you don’t. The next stage is usually unnecessary except in certain circumstances.
If you are deeply interested in certificates. now is the time to ask for those.:
There are positions and circumstances for which certificates are necessary. A university degree for instance shows that a candidate respects and obeys authority. A school dropout on the other hand is a sign of strong self-will and possible disregard for authority, while a candidate who has no tertiary education whatsoever, should ordinary be expected to be wanting in certain social/ethical skills.
Notice that I deliberately omitted mentioning discipline here. The truth is; no one learns programming, or any other valuable skill for that matter, without discipline. If your candidate made it this far; they are disciplined and just need motivation.
This step can be handled by a non-technical person