Why is it so hard to hire good software developers? That is the question I’ve been asking myself recently. The company I work for is currently looking for two software developers and it is incredibly disheartening to see the quality of candidates.
First off the quality of the CVs. We’ve taken a two pronged approach to this. We used a recruitment agency and we advertised ourselves. What a difference between the two approaches! The CVs we got from the recruitment agency were at least sufficient quality to warrant an interview. The vast majority of the CVs we got from our advertising efforts were useless. Half didn’t even live within a commutable distance.
Of those that we did interview two thirds didn’t make it past the first interview. This is an informal meeting where we ask some questions based on what’s in their CV and try and assess their personality. If they mention that they’ve got SQL Server experience we’ll ask questions on that. If they say they’ve got Reporting Services experience we’ll delve a bit further.
We are looking for C# developers, but we don’t mind VB.NET guys because the main learning curve is the .NET Framework and that is the same for C# and VB.NET. The hundred or so differences come from the language syntax and that can be overcome in a short period of time.
The second interview is really a technical test. We give the candidate a specification and walk them through it. The application is sufficiently small that it is just possible to complete everything in the allotted two hours, but most don’t – and we don’t expect candidates to complete it, although we do expect that they will get a fair way through it. Part of what we are looking for is to see how their thought processes work, so the spec is sufficiently loose that they can make choices to show off their skills.
We’ve found that it really is the best way to discover if the candidate can actually do the work. The application is not difficult by any stretch of the imagination and we’d expect anyone with a few years experience or a computing or software engineering degree to be able to complete a fair portion of it. It is, admittedly, slightly larger the Scott Hanselman’s example of the Buzz-Fizz program. But, then, we also want to see how they would structure a more realistic application rather than just a single simple algorithm.
So, what would we recommend? Listening to DotNetRocks is a good start. Download it to your MP3 player or burn it to a CD and listen to it on your commute to and from work. Most people waste that entire time going to and from work, so start doing something useful with it. I vaguely remember a study that suggested that if you drive 12,000 miles per year (a 24 mile commute) you could learn as much as a 3 year degree course in 4 years.
Next, watching episodes of dnrTV will help. If you need to learn about some newer technologies then the Developer Platform Evangelists at Microsoft UK have produced an number of Nuggets – short 10-ish minute videos showing a single concept.
But, what is next for us? We are considering going back to basics. If we can’t find someone with the relevant skills then we’ll have to hire someone without those skills. But we can’t hire someone with a few years “experience” because they’ll want more money than they are worth, so fresh graduates or especially talented folk that are crossing from another field in IT will be what we are looking for.