Thoughts on Hiring Developers

Gabriel posted this rant regarding his frustration with trying to find the right developer talent for positions that we were trying fill. At the time, I was the final decision maker regarding these interview candidates, so I thought I would offer my perspective.

First of all, let me say that we did find the types of individuals we wanted. It just took time and work. We made offers to a couple of individuals who turned us down for counter offers. I would imagine we also passed on some developers who could have been really good. This would be because either we did a poor job of asking the right questions and learning about the candidate or the candidate did a poor job of selling us that they are the right person for the job. Regardless, if they did not make an impression, they did not get an offer. It’s too expensive to give a person an opportunity and have them turn out to be the wrong person which causes the team’s productivity to suffer.

There is some discussion in the comments of Gabriel’s post about “low quality” developers are not able to land “high quality” jobs because those jobs require you to already be highly skilled. I do not think this is true. A lower skilled individual just has to try harder. I am impressed with candidates that I meet who are currently working in a lower skilled development position and have the desire to move to a higher one. First it shows that they acknowledge their skill level. Second it shows that they have enough interest in development to want to become better. If you want a shot at something, show that you deserve it.

It is very true that a great deal of interviewers do a poor job of interviewing. Sometimes the interviewer does all the talking instead of asking good questions. Sometimes the interviewer asks questions about something new that they just learned themselves. Regardless how the interviewer conducts the interview, it is important for the candidate to “wow” the interviewer with at least one thing. It can be something technical, team related, enthusiasm, … something. If a candidate leaves and fails to do this, then it may the interviewer saying “I am not sure”, which then they will often move on to another candidate.

With the interviews that Gabriel described, we tried to give the candidate every opportunity to wow us. Most did not. I wish they did. I believe with most candidates, we gave them feedback and what we thought they should be learning in the hopes they would call us six months later and let us know of they’re progress. Maybe some will?

Below are a few thoughts that came to mind as factors when narrowing down the candidates.

Honesty

What I mean by honesty is whether or not the candidate is honest to you and themselves about their knowledge and skill. Do they put things on their resume that they do not really know?  A person may tailor their resume to be specific to a particular job application, but they should not try to make themself look smarter than they are because it will ultimately hurt them later. I understand that most people are capable of learning anything given the opportunity, but padding their skills makes them look dishonest. A great deal of hiring managers are not extremely technical and will throw out resumes if they do not contain certain buzz words, but those are probably lowered skilled jobs anyway. Higher skilled development positions are likely to have higher skilled interviewers.

If I ask a candidate about a skill on their resume and they explain to me that they’re a beginner in that skill, I am OK with that answer as long as they have some experience with the skill and they are honest about their level. But if the person tries to fake it and try to make me think they know more than they really do, then I have already made my decision that this person is not the right person for the job. How can I trust someone to do a task properly if I cannot trust them to tell me what they know and do not know?

Commitment

Though some shops are forty hours a week shops, many are not. It is important to ensure that expectations regarding level of effort are well understood between the candidate and the employer. If extra hours need to be worked, then how much and how often? Is the candidate willing to commit to this? How will it look if one team member consistently works the minimum while others are working extra? It’s important that the team have a similar level of commitment or they will not really be a team.

Technical Skill

All candidates possess as least some technical skill (we hope) but technology is so broad and and there are millions of different ways to solve problems. The chances that a candidate’s skills match perfectly are very slim. There will be gaps between what a new hire knows and what they need to know to perform their work. Experienced programmers will be expected to fill those gaps more quickly than less experienced programmers. The challenge of a hiring manager is to determine if the gaps are acceptable for the given candidate and open position. The challenge of the candidate is to convince the hiring manger that they will easily fill those gaps.

On / Off The Job Training

I think most developers would say that they could learn just about anything given the opportunity and we have all had the opportunity to learn a great deal of things “on the job”. But I have always felt that it was my duty as a professional to also learn things outside of my job. I want to know if a candidate is willing to invest in themselves before I invest three months to train them. I want to make sure I get the best return on investment that I can get. A candidate that demonstrates that they will work extra hard to get up to speed makes me feel good about investing in them.

When a candidate is coming from a lower skilled position, I want to know what are they doing currently to improve themselves. Yes, we all are busy, but a great deal of us still find time to read outside of work, if not code. If the under skilled candidate is not currently working to increase their skills, then I am sorry that I do not have any interest in teaching them. They have to make an effort more than just saying “I want”.

Compensation

Of course everyone wants to get as must money as they can and every company wants to spend as little money as possible, but with higher compensation, comes higher expectations. Salary negotiation is about aligning those expectations. If the salary is too low, the new hire will not be happy and end up leaving for more money later. If the salary is too high, then the new hire is at risk if their work does not live up to company expectations. There has to be a balance. Some companies may have unreasonable expectations for an offered salary. Some candidates may have unreasonable salary requirements for their skill level. Even if a person has several years of experience, they may need to lower their compensation requirements if they are considering moving into an area where they are less experienced.

Compensation can be based on other factors besides experience and technical skill such as  innovation, commitment, work quality and leadership. You do not have to be good at everything but you need to be good at something.

Conclusion

Hiring the right people is hard. Searching for the right job is hard. Having the right attitude and expectations can make it easier, but nothing can make it easy. Good luck to all!

Related Articles:

Post Footer automatically generated by Add Post Footer Plugin for wordpress.

About Ray Houston

Ray is a software development leader and architect with 20 years hands-on experience. He enjoys finding elegant solutions to complex problems and delivering real value to customers. Ray is a speaker and contributor to community events.
This entry was posted in Uncategorized. Bookmark the permalink. Follow any comments here with the RSS feed for this post.

11 Responses to Thoughts on Hiring Developers

  1. Excellent post. Honesty is a big requirement for me, too.

  2. KevDog says:

    I don’t have the link handy, but in general you are incorrect that lower skilled individuals are being brought on. Unless people match the req exactly, people don’t even pass the resume screen.

    Everyone wants to hire a senior (whatever that means) developer and no one wants to train juniors. Sort of self-defeating, don’t you think?

  3. Paul says:

    Great read, would like to see some of the questions your ask and a little on how you structure the interview. I am trying to fill a position and feel I must not be asking the right questions enabling the interviewee the chance to shine.

  4. middledd says:

    For those who noticed my 3 pages of comments (which probably spurred this blog post), the below quote epitomizes my complaints:

    “There is some discussion in the comments of Gabriel’s post about “low quality” developers are not able to land “high quality” jobs because those jobs require you to already be highly skilled. I do not think this is true. A lower skilled individual just has to try harder. I am impressed with candidates that I meet who are currently working in a lower skilled development position and have the desire to move to a higher one. First it shows that they acknowledge their skill level. Second it shows that they have enough interest in development to want to become better. If you want a shot at something, show that you deserve it.”

    I think that is completely incorrect. I have ALWAYS been a very motivated individual when it comes to trying to succeed at something that I have set my mind on. I have also always heard companies offering lip service saying that they really want someone who is junior and eager to learn, before I interview with them. However, I have also been told, on a few occasions, that the companies love my skills and they absolutely loved the ambition i showed during the interview process. However, they simply found someone who was “more senior” to fill the position. In those situations, I do not think there was anything i could have done to get those positions, even though they intially said they were not looking for someone senior. I have even been in situations where I have gone through the employers’ headhunter, made it through 3 sometimes 4 rounds of interviews, passed the tests and everything. Then have the manager of the company call me personally, expressing regret b/c although I was exactly what they SAID they wanted and sometimes MORE, they eventually found someone that was simply more experienced than I.

    Maybe it’s just me. Maybe I have simply had a lot of back luck finding a truly good place to work in the past (I LOVE my current job). Maybe, quite frankly, maybe I just wasn’t as motivated in the past as I am now. HOWEVER, I strongly strongly strongly do not believe that is the case. And I strongly strongly strongly believe that I am far from alone; in fact, I honestly feel that many devs who have gone through alot of interviews would share my viewpoint.

  5. middledd says:

    And KevDog’s reply above is a perfect example of what I’m trying to say. They even did interviews on CNN and other places where companies said flat out, they can’t afford to hire Junior level persons. The companies they talked to ALL said NOT ONE THING about ambition, drive, motivation, desire to learn – they ALL pointed to experience as the driving factor in their search for employees. I just feel like, unless you know someone (and i’m starting to place more time and energy into networking), or unless you credentials are A+ material, you aren’t really given a chance unless you start completely at the bottom (ie. the helpdesk) and somehow work your way to being a skilled developer. That’s even how I got into this game.

    So, while your organization (and i’m sure the other organizations that you network with) are most likely the exception and do highly value the more personal aspects of the candidates you interview – from the outside looking in you are the exception. And it just makes it frustrating to hear companies such as yourself say that you value one thing, and then get “stabbed in the back” so to speak by all these other companies that care nothing about their employees or the personal side of the equation and only care about their bottom line and in bringing on experienced persons. I’d much rather you try to show these other companies how to develop and cultivate talent, than “rant” about the skill level of the developers.

    Obviously I read your blog, and I will continue to do so. So I don’t really believe YOU are as arrogant as the rest and I value your opinion, however, I just want to let you all know that from the outside looking in, the picture doesnt appear to be anything close to what you are describing.

  6. Ray Houston says:

    @KevDog and @middledd – you may be correct that most companies only want senior developers. Perhaps you should target specific companies that are willing to take a chance on a junior?

    @middledd, you have a very good point and I think I will write a blog post about hiring a junior and how it was successful. It’s sounds like you did finally have success and land the job you wanted. That is awesome. I encourage you to blog about your experience. I’d love to read it.

    In an interview there are other factors at play that could distroy your chances. How did you dress? Did you show humility or did you come off as aggrogant? Were you confident without being over confident? Did you make any off colored commits? Where you playing with your phone? Did you have body oder? All of these things have been factors with some candidates that I’ve interviewed throughout the years. I remembered a long time ago I interviewed a fellow that was well dress but had a large metal bracelet that kept banging on table as he talked with his hands. I didn’t mind the bracelet but the banging noise destracted me so much that I didn’t listen to anything he had to say.

  7. Paul says:

    Just an note about hiring Jr. Devs. One question I will ALWAYS as a Jr. dev is, “What are the last couple programming related books you read and what did you think of them?” I use this question to gauge the dev’s desire to learn and grow in a more Sr. Dev role.

  8. Ray Houston says:

    @Paul (forth comment) – what we did, which I felt worked really well, is that we told them in advance to study up on the SOLID principles. We would tell them that it doesn’t matter if they completely understood them or not, but we’d use them as a talking point during the interview. When the candidate came it, we would have a projector in a small conference room with me typing code into notepad (to reduce distraction). I’d start off with something like:

    public interface IWeapon
    {
    }

    public interface ICharacter
    {
    }

    public void HandleAttack(IWeapon weapon, ICharacter character)
    {
    }

    We’d then ask them about interfaces, coupling, etc. We’d ask them to modify HandleAttack (change method parameters if they want) to really orchestrate the attack, which forces them to think about implementation details such whether the Character is the attacker or the target. Does the Attack method go on the Weapon or the Character. How does the Weapon affect the character? What if we add other types of weapons that affect other attributes such as speed? What if Weapons can affect things other than Characters such as Environments. If we add new Weapons to the program, how much code would I have to change?

    We’d spend about an hour doing this. Throughout, we would explain how the SOLID principles apply and throw in additional challenges if they did well. There was no right or wrong answer and we would be upfront with the candidates about this. The code would look completely different each time. It helped us see how they think and interacted with others. We could also tell if they were excited by the principles or if they would rather not bother.

  9. Siderite says:

    I was in high school and my friends and colleagues were discussing girls. Some of the girls were just great, but they expected too much. Others were rather easy, but nothing to learn there. But the subtlety was always around the negotiation. One girl wanted a very specific thing from her boy, but not actually specify it; another would test the boy non stop until he would quit; one would say she preffered honesty and love, but she would always choose the guy who falsely advertised himself. Then girls would complain about the poor quality of boys and what jerks we were and enumerated the qualities they all thought were great in a guy, then ended up being best friends with him if ever found.

    Reading this series of posts of yours, I realise that I’ve heard this kind of talk before, right then :)

  10. Kelly says:

    When I was a hiring manager for the development team at my company, we had some criteria we looked for. Experience was one, but we hired many recent graduates without experience, simply because they had the drive and they found the field exciting. One individual brought in his Nintendo DS and showed us some games he developed. Another wowed us with his learning of 4 different languages simultaneously.

    We could have hired a senior individual but did not. He told us at the interview that he doesn’t do the learning on his own time. To us, the field was not a passion or an interest, but simply a job. We wanted people who would push the company and the development team to the next level, challenge their colleagues, and introduce new things to the team.

    If that was not there, all we got was a “code monkey” which would be a burden to all – the managers, the colleagues, and the company.

    • Some Dude says:

      I’m surprised that everyone expects developers to be “passionate” about their work to the extent that they’ll go home and do it (for free). Nobody demands that a plumber, mechanic, politician, doctor etc do unpaid work. People often have a high number of life demands that preclude much, if any, unpaid work. Important things like kids, community activities and hobbies that round out the individual (and maybe keep the individual from being so round…) .

      as a tid bit: “passion” has original meanings of suffering and pain. I do not want to suffer under any hobby …

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>