Recruiting developers is often a problem for organisations as the skills required are different from those in other sectors and can be hard to assess.
Development often has a great deal in common with more creative fields, where suitability for a job is not so much about qualifications but about what you can do and how you can communicate.
So what can companies do to discover the developer talent they need? We spoke to Mike Bartlett, CEO of developer community site Gitter to get his perspective.
What's wrong with the traditional approach where you simply advertise a job and wait for applications to roll in?
Very seldom is great talent looking for a new job. The best engineers will be highly in demand and can effectively pick and choose where they work and what they work on. If you want the best, as you should, not only do you have to go out and find them, but you're also going to have to convince them why they should be working for you. Higher salaries, better free lunches and more ping-pong tables just won't cut it any more.
You need to start building relationships far in advance of hiring, building trust and an understanding of why working for you is better than working for someone else.
If you're just placing ads on traditional jobs boards or using regular recruiters, you’re probably going to get a large number of CVs through the door and spend a huge amount of time trying to figure out if the candidate is any good. This is hugely time consuming not only for the hiring manager, but will also take time out of your existing development team's schedule as they are generally the ones having to dig into each applicant individually.
Do companies sometimes fail to effectively assess technical skills as part of the recruitment process?
The most common failure is assessing how the candidate works with your particular technology stack, the code you've already written and -- most important -- with the team.
We've seen, and even used, a lot of developer testing techniques. There are particular exercises that will test competency, for example with a particular algorithm and understanding if the candidate truly understands computer science, logic and reasoning and these can weed out some of the obvious bad hires.
What we've found really effective is doing pair programming tests where the applicant will come and spend three or four hours sitting with one of your existing developers and working together on a real problem within your own environment. This will not only test software development skills, but communication skills, team work and a you'll get a really good sense of how that person behaves in real working conditions.
What can businesses do to look for candidates rather than waiting for them to appear?
The whole team should always be hiring. Make sure your developers are always on the look out for great people to hire. This means going to meetups and not just listening to the presentations, but socialising with the other attendees and getting to know one another. It means actively contributing to open source projects and hanging out in the online communities such as our own developer network, Gitter, and building relationships with the people who stand out.
There are great tools such as Workable or Lever where you can give your whole team access and help keep a list of prospective future candidates in a centralised place.
What can developers themselves do to make them more attractive to prospective employers?
Get stuck into the online communities and contribute back to open source projects. Pretty much every technology stack used in software development today is open source; rather than just reporting bugs back to the project maintainers, if you can roll up your sleeves and get stuck into the code, find the bug and send a proposed fix back to the project, you'll immediately gain a lot of credibility and be seen as contributing back to the ecosystem.
Developer recruitment is a bit like online dating really, isn't it?
Oddly enough, I met my wife on Match.com. If she reads me comparing our relationship to hiring developers, I think I might find myself in a lot of trouble!