Wednesday, April 10, 2013

Going Green - Hiring a Junior Developer

So you've decided to expand your team, and you're going to do so by adding an entry level developer. Good for you. Here are some thoughts and suggestions that might be able to help.


When interviewing a candidate for a junior level role what exactly should you be looking for? Well, by definition they don't have very much experience so that's out. If you're lucky they have contributed to, or created a few open source projects; but that isn't likely. Really at this point you're looking for a basic understanding of programming concepts, your programming language of choice, and whether or not the candidate has a personality.

Optimally, you should have a few members of your team sit down with the candidate and have an informal discussion as a way of determining whether or not the candidate fits with the group on a social level.

Algorithmic Code Test

Since you are specifically looking to hire a junior level developer, you probably won't have much success with asking complicated questions about your programming language or platform of choice. In my opinion you should stay away from having a candidate do the 'Fizz Buzz' problem or writing a Fibonacci number generator as those exercises are played with the solutions well known. Instead try the following questions which are designed to be simple enough to work on a white board and require no knowledge of a specific programming language. 

Given the following list of numbers: [1, 2, 3, 4, 5]
  1. Write a function that will sum the numbers present in the list.
  2. Write a function that will sum only the odd numbers present in the list.
  3. Write a function that will sum only the highest and lowest numbers present in the list. 
  4. Write a function that utilizes recursion to sum the numbers present in the list. 
Keep in mind the idea here is to see how the candidate attempts the problems above. Yes these questions seem a little too easy, but I've seen a few candidates really struggle to answer them. 


So, you've decided that you are going to hire the candidate as a junior developer. There are some things that you need to keep in mind.

The new developer isn't going to add to your team's velocity, at all. In fact you can expect to see a decline in velocity as the rest of your team (hopefully) rally's around the new hire in an effort to get them up to speed as quickly as possible.

Be realistic in your expectations on this because it's probably going to be the new reality for several sprints.


Junior level developers should start small. Like I said above, you shouldn't expect or demand that they add to your teams project velocity at first. One idea is to assign the developer a few technical debt items (you do keep a backlog of those right), and submit their changes to the team for review. This is a nice gentle way to introduce the new developer to your code base and processes without overwhelming them with a major feature.

Side note, don't just sit the new hire down in front of a computer and have them "read code" all day. That's just asinine. 


The addition of a junior developer can be a great boon for your team. The act of teaching allows your more senior team members to gain a bit of supervisory experience as well as a bit of reinforcement for their own knowledge. All that being said, remember, it is unfair to your team as well as the new junior developer to expect too much too soon.