What makes a good programming challenge

How effective are programming challenges in the recruiting process? [closed]

Closed . This question is based on opinion. No responses are currently accepted.

Would you like to improve this question? Update the question so it can be answered with facts and quotes by editing this post.

Closed 5 years ago.

I think our company can create challenges to find software developer candidates who:

  • Good at solving problems, not convincing recruiters.
  • More likely to be afraid of coming to us at a career fair.
  • More likely they are underutilized in their current programming job but too introverted to do anything about it.

For an example, see this article that describes how Facebook uses Piet to hide an email address in a picture.

I just can't find any studies or hard data on whether this actually works or not.


Like any tool, they can be extremely helpful or extremely dangerous. A drill makes your life so much easier - until you pierce your hand and land in the emergency room. The same goes for the programming challenges in recruiting.

The good : This may be an effective way to spot someone who may not be that convincing on paper as a programmer. The one with a degree in something that has very little to do with what people normally consider "programming" - biology, political science, art history ...

If they can handle your challenges, then great. You kind of learned to program and it seems stuck. If they're stuck, their application may just be something that slipped through HR.

The bad : A poorly written programming challenge scores the Programming skills not really . It tests that Solving puzzles using programming skills . The problem is that the second question is a two variable question - are you good at puzzle solving and can you do said puzzle solving through code? It is possible to have a perfectly talented programmer who utterly fails at solving puzzles.

Most of the programming problems I've seen also fail because of people who have the be close whatever you want depending on how it was written.

There are ways to mitigate both. For the latter, I would consider accepting "partial credit" in the form of solutions that don't really offer themselves. "This is how I would solve this ..." etc if you are really looking for problem solvers. After all, very few people code all on their own, and if their answer had been correct, if they could ask an older colleague, "Hey Jim, do you know a good way to implement X?" your team.

The former is a little more difficult because the burden for it is yours. Choose puzzles / problems / challenges that are important. If no one in your group has ever come across anything remotely similar to the traveling salesman problem at work, then you shouldn't be making Traveling Salesman a clever challenge. That way, when they don't master the problem-solving aspect of "solve the problem and code it", at least something that actually shows up, rather than an arbitrary move your team spat out over lunch, they fail.

Very effective.

... as long as your recruiting process is not only associated with programming problems. I get annoyed and hate doing the technical assessment of an interview, but it does is a simple Measure to filter out idiots. Filtering out idiots is at the core of the recruiting process so you can spend more time on those can spend that for the role suitable are .

I think it's very important during the interview to see what people are saying under pressure. If they have a tendency to spit out a bunch of blatant crap it's easy to tell, and I'll know that person isn't worth my time.

More likely to be afraid of coming to us at a career fair.

That's not a bad thing. If your potential candidate is unwilling to bet that they are worth hiring, do you really want to hire them?

I'm assuming you want someone to be part of a team - as such, the better programmer is the person who works better with the existing team members. You want to bring together a group of people who can communicate effectively with each other, who actually get on well (they don't have to be friends, but they need good relationship and respect), who are willing to agree and use common development standards (code and process) who are ready to help their universities when they deal with a new problem or have a mental block (four-eyes theory). You also need to find a mix of personality types. So, if you have a team of introverts who rarely speak, bringing in a more talkative team member can definitely help to improve team dynamics, which will make the team more productive. On the other hand,

After you get a person to fit into this mix, it is a good idea to consider technical skills / abilities. These must also complement each other. Everyone has different areas they are strong at, others are fine, and some have no idea. So you have to put together a mix of strengths that is relevant to the project in question. Remember that an advanced programmer who works well with a good programmer will get the level of his work raised by the stronger person. The weak link in the chain is relationships, not skills (assuming the skill is on the team)

Good luck putting it together.

We use cookies and other tracking technologies to improve your browsing experience on our website, to show you personalized content and targeted ads, to analyze our website traffic, and to understand where our visitors are coming from.

By continuing, you consent to our use of cookies and other tracking technologies and affirm you're at least 16 years old or have consent from a parent or guardian.

You can read details in our Cookie policy and Privacy policy.