Pain of Recruiting Developers

Johand

Expert Member
Joined
Jan 21, 2005
Messages
3,244
Reaction score
2,526
Location
Cape Town
This is a bit of a rant about my pain we have finding developers to recruit at my work. I created and evaluate the technical tests. Finding developers that are even halfway competent is scary. But I want to bounce something from forum. We have an question in our interview - with the idea to test basic problem solving skills. The structure of the question is as follows:

Title: Problem Solving
Request: Write a routine in pseudo-code on paper that solves a basic problem . The input is a,b,c and the output should be x,y,z. The problem itself is very basic -> think high school CS level and it can be solved in about 4 to 6 lines of code.

Only 1 in 20 developers with 2+ years experience manages to give us an answer even worth looking at. The other shows no understanding of what pseudo-code is (we'll even accept code in any real language), don't solve the problem (does something else i.e. draws process diagrams for the context of the problem without address the problem). They don't even structure an answer.

And then on their list of programming languages they will add languages like Haskell and and sport a B.Sc (Computer Science) degree.

So my question is: Do most "developers" exclude problem solving skills from their job description? Is this something that is not expected from developers? Is "pseudo-code" such a foreign concept that it is reasonable for a developer not to know what it is? Where can we find junior developers with the basic skills?
 
At least you guys sound like you are on the right track. Writing some form of code during the interview is critical.

Rather than a written test I would suggest they solve the problem on a white board with a senior dev there, that way they can talk you through the solution. The idea is that one can better gauge their thought process. If the problem is to difficult, you could swap it out for an easier one during the interview. This could be why you are receiving so much written rubbish, maybe people don't understand, but don't want to waste the opportunity so they force the issue.

Another thing you don't address is the typical HR interview vs the technical one. Do you do them separately or all in one? I would suggest splitting them. If you developers don't have the time for technical interviews, filter the candidates on the HR one first.

If you have a strong team already and don't want to bring in rubbish to spoil what you've already built, consider recruiting straight out of university.

Edit: One last point is you should tell the candidates at very least that there will be a test, I wouldn't like to be "ambushed" like that.
 
Last edited:
Code:
declare a,b,c,x,y,z
start
read a,read b,read c
*magic*
output x,y,z

I suspect the new breed of diploma and degree "devs" may just be used to having a precise description of every process and variable a la Systems Analyst
 
Code:
declare a,b,c,x,y,z
start
read a,read b,read c
*magic*
output x,y,z

I suspect the new breed of diploma and degree "devs" may just be used to having a precise description of every process and variable a la Systems Analyst

+1 this is what I've dubbed the developer vs programmer dilemma.
 
I have myself been in a few interviews where I've needed to do tests etc.

In my first one, I found that initially (because I wasn't expecting it) I felt VERY intimidated, so much so that I almost told them to leave it. Then the one manager just said, "We're not trying to trick you, this isn't a trick question".

For some reason, that completely calmed me and I nailed it all. I'm not sure why I initially felt like they were attacking me...when i think back now its crazy.
 
Do you mind giving us the full question you ask them? I'm curious about it now... :D

Unfortunately I can't leak the question for obvious reasons - people will still write the test. Let me give something similar (I just made it up - but it has same structure and type of solution than our question):

A tour company owns a bus with a carrying capacity of 50 people. When the company needs to transport more than 50 people at the same time it will hire additional buses from a rental company - the rental buses can carry 30 passengers each. You are working on the tour-planning system for the company. Write a routine in pseudo-code that as input take the number of passengers and as output the number of buses the company should rent as well as the number of open seats available.

The problem is not so much that they don't know how to apply basic subtraction and division, it is that they don't even attempt to do that -> I get diagrams, process descriptions of tour companies. Flow charts of how screens work. Everything but a pseudo-code routine.

Another thing you don't address is the typical HR interview vs the technical one. Do you do them separately or all in one? I would suggest splitting them. If you developers don't have the time for technical interviews, filter the candidates on the HR one first.

This is the filter. HR administers the test on paper after the first interview, and then I or somebody else will quickly evaluate it when I have time later. HR does not provide any support but confirms with the applicants that they understand the concept of pseudo-code and they are told they can write it in any language they wish.

I suspect the new breed of diploma and degree "devs" may just be used to having a precise description of every process and variable a la Systems Analyst

Suspect so to, but the question is pretty clear on what is required. The fact that the title is "problem solving", the request is for "routine in pseudo-code" with "inputs" and "outputs".
 
I have myself been in a few interviews where I've needed to do tests etc.

In my first one, I found that initially (because I wasn't expecting it) I felt VERY intimidated, so much so that I almost told them to leave it. Then the one manager just said, "We're not trying to trick you, this isn't a trick question".

For some reason, that completely calmed me and I nailed it all. I'm not sure why I initially felt like they were attacking me...when i think back now its crazy.

+1

OP should keep in mind that all interviewees are nervous. Even more so with fresh grads. If this is your first or second interview ever, your mind will be running crazy second-guessing itself. I personally think that the interviews should be preceded by an 'open day' type event where no tests will be performed but rather the HR/interviewer will introduce the place to the candidates, talk to them (and not just about work) and make sure they both see each other as actual people, not machines with a task.

P.S. Just because I can't let a simple question go. Number of buses = 1 + ceil((x - 50)/30), open seats available = if x<=50: 50-x, else 30-(x-50)%30

P.S. will need a tweak for the else :p
 
Last edited:
+1

OP should keep in mind that all interviewees are nervous. Even more so with fresh grads. If this is your first or second interview ever, your mind will be running crazy second-guessing itself. I personally think that the interviews should be preceded by an 'open day' type event where no tests will be performed but rather the HR/interviewer will introduce the place to the candidates, talk to them (and not just about work) and make sure they both see each other as actual people, not machines with a task.
yeah, I was 8months out of varsity. Very much a nervous noob! whahaha
 
A tour company owns a bus with a carrying capacity of 50 people. When the company needs to transport more than 50 people at the same time it will hire additional buses from a rental company - the rental buses can carry 30 passengers each. You are working on the tour-planning system for the company. Write a routine in pseudo-code that as input take the number of passengers and as output the number of buses the company should rent as well as the number of open seats available.
Holy crap...ok, that's ridiculously simple. Seriously.
 
A tour company owns a bus with a carrying capacity of 50 people. When the company needs to transport more than 50 people at the same time it will hire additional buses from a rental company - the rental buses can carry 30 passengers each. You are working on the tour-planning system for the company. Write a routine in pseudo-code that as input take the number of passengers and as output the number of buses the company should rent as well as the number of open seats available.

Indeed quite simple,did it here quickly,basic Div,Mod and Case/If usage. Then again im part of the older generation of devmonkeys - pseudocode on paper then start building
 
This is now a "bus rental in different languages" thread. GO!


Code:
#!/usr/bin/perl
$in =  <STDIN>;
use POSIX qw(ceil);
if ($in < 50) {
        print "0 busses to be hired";
        }
        else
        {
                $in = $in - 50;
                $buses = $in / 30;
                $upbus = ceil($buses);
                $free =  ($upbus * 30) - $in;
                print "buses to rent = $upbus\n";
                print "free seats = $free\n";

        }
 
+1

P.S. Just because I can't let a simple question go. Number of buses = 1 + ceil((x - 50)/30), open seats available = if x<=50: 50-x, else 30-(x-50)%30

P.S. will need a tweak for the else :p

That will break if i enter 0 passengers :)
but then again, you weren't asked to clean/validate your input values.
(ah, php. PHP: ceil - The code below rounds a value up to a nearest multiple, away from zero)
 
I specially added a line to catch the >=0 exception and output "Lonely bus driver detected" :D
 
Hire based on contributions to existing projects.

A github repos URL is worth far more than any tests, questions or words on a CV.

Also, if you insist of giving them a test, for the love of zeus give them a machine and a compiler/interpreter and let them do real code.
 
This is now a "bus rental in different languages" thread. GO!


Code:
#!/usr/bin/perl
$in =  <STDIN>;
use POSIX qw(ceil);
if ($in < 50) {
        print "0 busses to be hired";
        }
        else
        {
                $in = $in - 50;
                $buses = $in / 30;
                $upbus = ceil($buses);
                $free =  ($upbus * 30) - $in;
                print "buses to rent = $upbus\n";
                print "free seats = $free\n";

        }

free seats on first non rental bus?
 
Here's a suggestion, why not sit your interviewees in front of a computer and ask them to write real code to solve your problem.
 
free seats on first non rental bus?
Code:
#!/usr/bin/perl
$in =  <STDIN>;
use POSIX qw(ceil);
if ($in < 50) {
        $spiderz_is_a_whore = 50 - $in;
        print "0 busses to be hired\n";
        print "free seats = $spiderz_is_a_whore\n";
        }
        else
        {
                $in = $in - 50;
                $buses = $in / 30;
                $upbus = ceil($buses);
                $free =  ($upbus * 30) - $in;
                print "buses to rent = $upbus\n";
                print "free seats = $free\n";

        }

and thats why you need QA like someone else said in one of these dev threads
 
Here's a suggestion, why not sit your interviewees in front of a computer and ask them to write real code to solve your problem.

Why bother if they cant solve logical problems?

I dont get why people are still shocked at the idea of a technical test. Every company I've ever interviewed at, bar none, has either had a technical test/exam or technical questions from a senior developer. Or both. And sometimes also "write us a program/website that does X and Y"

I hear the same things as the OP says from people in my company who do interviews. I dont understand it personally. I think what grates me more is what I see as lying. If I suck at Python, I'll tell you. But I'll point out how quickly I could learn it. I wont lie and tell you my Python skills are 9/10, as some candidates do.
 
Top
Sign up to the MyBroadband newsletter
X