5 Challenges Companies Face Hiring Developers

Last week I talked about some of the challenges that developers face when finding a job. While there are real challenges for finding a developer job, they pale in comparison to the challenges companies face finding good developers. Here are some of the difficulties I've run into when trying to hire developers:

1. Scarce Senior Talent

There is way more demand for senior developers than there is supply. This is great for developers with a lot of experience, as it keeps their salaries high, but the dynamics of this mismatch make it very hard for companies to bring on senior talent. This is a structural problem that needs to be solved both by society as a whole, and by individual companies. We as a society need to increase STEM education and professional training like code bootcamps, as well as pass comprehensive immigration reform to increase the supply of new engineers. Companies need to do a better job training and keeping developers engaged and writing code, instead of pushing them away to different career paths to decrease 'developer churn'.

2. No Single Labor Marketplace

When a company decides that it's time to hire, that is when the real decisions start getting made. Companies can advertise on a plethora of websites, hire a recruiter on commission, hire a recruiter on staff if they are large enough, attend career fairs, and even spam people on LinkedIn directly. There are so many different channels, all with different messages being communicated, and all come at a great cost to companies - which can be up to 15% of a developers first year's salary if a recruiter is used. It would be wonderful if there were a single 'marketplace' where companies and developers could connect, with highly structured data about candidates and companies along with opportunities for more long term matchmaking.

3. Conducting Interviews

I've been on a lot of interviews, and they have been all over the map. Some companies are highly structured, and make you sign up for their customized interview software, and then proceed through a series of 4-6 interviews - some cultural, some technical. Other companies, mostly small startups, have almost no process and vary greatly in terms of how they conduct their interviews. I've received two job offers in the past without even writing a single line of code, and on the other end of the spectrum have been trapped in 2 hour long white boarding sessions. The reason for all this diversity is that no one really knows what they are doing, and so just do what seems right, or what was done in the past. Google has actually concluded that there is no correlation between interview performance and job performance. We need more research and insight into how to hire people, since it is the most important decision companies make - and right now they are flying blind.

4. Onboarding Junior Developers

Most companies either can't or choose not to onboard new developers, and even the few companies that do often mess it up. Taking a smart, hard working but inexperienced developer and slowly mentoring them into a senior developer is a gargantuan task, but can be extremely valuable for the employer over time. I'm pretty fortunate to be at a company that is doing just that. I pair a lot, every piece of code I write is submitted as a pull request and reviewed, I get occasional lectures on topics like RESTful design, or best practices in writing JavaScript functions, frequent reviews, and basically all the support I need. In return I've grown tremendously as a developer, and am adding substantially more value day by day. I've written a few times before about how important this is to figure out, but it seems like whatever solution emerges it will involved winning over the hearts and minds of a lot of companies to agree to onboard juniors, along with guidance of how to do it successfully.

5. Retaining Developers

Many developers find that the only way to get more money, or move up in the hierarchy of an organization is to change jobs. Other developers change jobs because the company culture is lacking, or they just aren't being treated well. It's actually a huge blunder for companies to lose their talent since it costs so much to find a replacement, and it would take a while for a new person to get up to speed let alone productive with the codebase. Companies can create a good culture pretty cheaply, and should make it a priority to make coming to work enjoyable. At my company we get lunch ordered in every week, have biweekly retrospectives which act as organization acupuncture and let people express concerns, and are constantly joking both out loud and over slack. This kind of happiness is cheap but keeps people wanting to stay. Companies should also make sure to give aggressive raises, and not wait for magical 1 year anniversaries - but rather figure out a way of continuously paying their developers more as they gain new skills.