Post Format

The Difficulties Of Finding Good People

12 comments

My company has been looking for the past while to hire someone with very strong software development skills using Microsoft ASP.NET with C#, SQL Server and a host of the usual 3 letter acronyms (which I won’t bore you with). It’s pretty much the standard skill-set of any current developer that works on the Microsoft platform building web applications – so nothing out of the ordinary.

In addition to these skills we’re after someone who can not only sit in a corner and write code, but can go in front of business people (i.e. non-technical types) and gather requirements, spec out a piece of work, build it, deal with customer changes and ship it to end users. Someone who can work on their own and as part of a team as the projects dictate, has no ego and is just a normal person at the end of the day. We’re pretty much looking for someone like me or Ian. Writing a blog or being obsessed with your hair is not a requirement! ;)

Now that said, what we’re really after is someone who’s smart and gets the job done. We’d far rather hire someone who has less experience in our toolset but is smart enough to pick it up than someone with loads of experience but isn’t very bright. As a further twist, I along with my boss have been doing the interviewing! Although I’ve not interviewed everybody, thank goodness.

The thing I’ve found amazing about the experience is that we’ve been taking the absolute best CVs that have come in, throwing loads of others out. We’ve been in the software game for long enough to know what we’re looking for and time after time we read a CV and think “hey, this person looks great, with their experience they could be the one”. We bring them in and time and time again they bear absolutely no resemblance to the person on their CV.

We split the interview into 3 parts.

  1. A light-hearted overview of the company, the department, the development team.
  2. We ask them about their experience, some of the projects they’ve worked on and more importantly what their thought process was about decisions they’ve made and how they approached any problems they came across. We’re just trying to stimulate a conversation to see how their mind works and if they’d be a good fit for the team (no prima donnas please).
  3. A short technical test (which I wrote).

A rabbit in a hatIt’s the last part that’s surprised me the most. Since it’s an interview situation, you’re under a lot more pressure than in a normal day so there’s no point making that worse with an extremely complicated trick problem. The test is in fact very easy. You get to sit down with Visual Studio 2005 to write a single method for an already-existing console application. You’ve got a spec telling you exactly what it needs to do and some helper classes and methods to provide you with what you need. In essence you need to match all orders for a given customer and the code is already there to return all the customers and all the orders for a given customer. It should take no more than 10-15 minutes and when I wrote it some of us thought it was so easy that it would be a waste of time.

Even under the pressure of an interview situation anybody who can actually write code should be able to waltz through it. Since you have full access to the documentation and internet in the test, even if you don’t know C# but can write any sort of code, you can probably work it out!

We leave them to have a read of the spec and come back to answer any questions they might have. Then we give them 10-20 minutes and see how they’ve done. It’s not a black-and-white right-or-wrong test as it’s really just to see if they can actually write code and if it doesn’t work first time (none of the code I ever write does) then can they debug it and work out what’s wrong, with some help from us if need be. You wouldn’t hire a magician without watching them do a few tricks would you? There are lots of opportunities to ask what-if questions just like you’d do in the real world and rather than a “test” we look at it as a way of having a discussion.

But what’s left me utterly beside myself is that virtually all the people we’ve interviewed that consider themselves to be very strong developers have done absolutely terribly at the test! It beggars belief that people who can’t even compare a string to another string should be writing software for a living – comparing strings is one of the most basic things you can do in software. It’s like a plumber not knowing how to turn off the hot water supply. Some of the interviewees have 15 years development experience with CVs that look far better than mine and talk the talk, but have clearly managed to survive using the drag-and-drop method of writing software without ever understanding what they’re actually doing. No hire.

A lovely chrome piece of pipingNow I know we’re not going to attract the creme de la creme to work on a hill above Halifax in Yorkshire even if we do score 8/12 on the Joel Test (which isn’t too bad – and we’d have 11/12 if it weren’t for some of our management). And I know that most decent people aren’t looking for jobs because their employers realise how important they are and pay them so much money that they’d never leave (heh heh, yeah right). But we’re surely not being unrealistic to think we could find some people who can actually write software and communicate with other human beings.

One thing about the technical test we’ve found is that it hasn’t made us change our opinions about a candidate. If they were doing badly and did well on the test we’ve still said ‘no’ and if they’ve done well everywhere but the test we don’t rule them out. By having a chat with someone for an hour we reckon we can pretty much tell if they’re a good fit or not even without testing their coding so for now we’re going to move the test into the second interview stage (which is usually just a formality and chance to meet the director and more senior people than us) and use it as final confirmation rather than wasting half an hour with someone now that we already know we’d not hire.

Fortunately the last time we hired someone we found a guy who really blew us away. I was starting to lose hope that decent people existed but then in walked my future colleague who was clearly a really nice guy, intelligent, sharp, on the same wavelength as my boss and I and of course he flew through the technical test in record time!

But until we get lucky enough that another superstar walks through the door we’re wasting a hell of a lot of time interviewing people who we can tell within 20 minutes aren’t going to cut it – but because we’re nice people we don’t say “Stop! There’s no point carrying on – get out!”, we give people every opportunity to show us what they’ve got. It’s hard work and I’m glad I don’t have to do it all the time. I’m almost inclined to take the advice I read somewhere about recruiting and throw half the CVs in the bin because you wouldn’t want to hire someone who’s unlucky! ;)

Posted by

Scotsman, footballer, software developer, bounty hunter, photographer, dog owner, risk taker, heart breaker, nice guy. Some of those are lies.

12 Comments Join the Conversation

  1. I’m going through the same process and have found that phone screening soon weeds out the really bad ones and saves you money.

    A couple of years ago I was looking for C++ people and found no end of good candidates. However, finding people with strong C#, ASP .NET etc. is proving really difficult. In the meantime, the market (in France) has improved (in favour of developers), so I’m not sure if it is because there is a shortage of people with this skill-set or if they have already been snapped up elsewhere…are you looking for a job by the way?

    Reply

  2. Sounds like phone screening is the way to go!

    And there certainly seem to be many people who claim to have those skills around – it’s just they don’t! I’m alright just now thanks, but more about that later. ;-)

    Reply

  3. I know this sounds like a spam, (it’s not! I actually read the post!) but I think it may be a great opportunity to network at the Microsoft Joint Launch Events (The UK Events are in March). I’m looking forward to it because my company is also looking to find some IT pros and hopefully build a good dev team (where .NET frameworks are a must). If you do go, I would keep an eye on the people who are picking up a promotional copy of SQL Server 2008. In my experience, IT pros are usually not actively looking for jobs but might consider one if they meet people at an event.
    **************
    Nico del Castillo
    Microsoft 2008 Joint Launch Team
    http://www.microsoft.com/2008jointlaunch

    Reply

  4. when interviewed at Bristol Uni I was asked how you calculated the tangent of a circle and I (ok I hadn’t slept for 40+ hours) was dumb struck. Then I choose Dundee and had the pleasure in meeting you.

    I have no idea was C++ or C# is I thought it was like writting bas?*!d

    hope you and the long suffering are well must see you soon

    ps been back on my bike recently after quitting smoking

    Reply

  5. Nico: Heh heh, I’ll take your word for it! You’re right though, being proactive and going out to find quality people sounds like a good idea if you have the time and resources to do it.

    Pete: Hi! You’re right, we really should get together – it’s been far too long and time just seems to fly by so quickly these days.

    The tangent of a circle?! I can’t even remember what a tangent is – school and Uni were a long time ago…

    And you’ve quit smoking?! Well done! Jamie’s tried a few times to quit over the years but hasn’t been able to do it. My bike is gathering dust in my garage sadly – will have to get out on it when it gets a bit warmer.

    And it is in fact a pipe fitting which will be attached to our downstairs toilet sink when we get a plumber sorted out! At least I think it’s a pipe fitting… ;-)

    Reply

  6. tell Jamie to try Champix tablets available from the doctor you still need will power but its a lot easier

    Reply

  7. Thanks for sharing your thoughts and advice!
    I find it often very difficult to pick out potential co-workers, co-thinkers and to find a balance in doing this quickly and gentle all the same.

    I’m starting up my own business in programming (mainly small office related ExcelVBA solutions) and multimedia game, for wich I want to gather talent on project base.

    The first I do myself. I don’t want to brag, but I know my VBA stuff better then most of the ‘credited’ professionals, wich makes it sometimes a real pain to find a solution for a particular problem.

    But for the latter, it takes a special breed, like you and me, to have a brain that’s equally creative as analytic. A lot of ideas, but also high standards… we don’t have lives enough! So finding the right colleagues is very important.

    Yes, people tend to exaggerate in CV’s and also when you first meet them (f.i. when attending network communities or events). Of course, who wouldn’t. But in the end, you don’t want to send home the people you asked to join you. So I think it’s a great idea to extend the interview with a quick simple test. Also to bring up a conversation about problem-solving.

    I do have one question though. Would you ever ‘test’ a potential candidate on the spot, like at an event? Maybe not, but I would be glad to hear if you have any suggestions. Thanks in advance.

    PS: sorry for my poor english, it’s not my native language as I’m Dutch :-)

    Reply

  8. I think just having a chat to get to grips with whether the potential candidate is on your wavelength or not is much more important than trying to test them under those circumstances. I usually find that withing about 10 minutes of talking to someone about technical and non-technical matters you can get a pretty good impression of whether you can work with them or not and whether they’re smart or not. The good thing about an informal chat like that is they’re not in interview mode so are more likely to be their true selves – some great people get incredibly nervous in interviews.

    And your English is excellent, I wouldn’t have known you were anything other than a native English speaker! :)

    Reply

  9. I totally agree, having an informal chit-chat reveals more ‘human’ information than you’d ever get from interviewing a candidate. I don’t consider any test to be a replacement for that. Programmers are humans too :-) and I believe it’s equally important to have good social skills.

    The thing is, although I manage quit well in quickly getting to know how people think and how they will act in a team, their real potential remains quite obscure. Sure, I know for myself that even the simplest test can seem a hard thing if under pressure. And smart people can also think too far. But sometimes you need to know if someone is fit for the job, without going through the whole thing of interviewing or assessments. If it isn’t required, I’d rather not.

    F.e. When I visit a network community were young professionals and starters meet in a informal setting to talk, to eat and to play a game and so one, I often ask myself how I can bring a nice conversation to the point where I can explain my needs, and see if this person could do the magic, without giving the impression that I’m offering a job. I don’t want to watch a complex demo or hear an elaborate explanation of technical terms. Just a simplified testcase would be more than enough. Making the test is not the problem, but presenting it smoothly, making it as natural part of the nice conversation, I find that difficult.

    You had already some good idea’s, so I thought, with all your wits ;-)…

    PS: Thanks for compliment, AND the swift reply! Didn’t see that coming *LOL*

    Reply

Leave a Reply

Required fields are marked *.

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s