Wednesday, November 1st, 2006

Why Can’t Experienced Programmers Solve an Easy Problem?

I have recently had the peculiar experience of trying to hire software developers. I have read resumes, posted on different job boards, talked to people live and by phone.

The funny thing is that I have had to reject almost every single applicant.

You might say that perhaps I was too demanding. That’s certainly possible, but I don’t think that’s the case. The only thing I was looking for was the ability to independently solve simple programming problems. If I had lowered my requirements any further I don’t know what I’d be hiring but certainly it wouldn’t be software developers.

After having read dozens of resumes I felt confident in the abilities of a few candidates. They all had the right keywords in their resumes. They all had valuable real life experience. They all had been able to keep a job for more than a year. They had good educations.

So I administered my little litmus test. The test was to write a routine that finds the largest possible product of two numbers in an array of positive integers. I like this test because it’s just a couple of lines of code, so it shouldn’t take too long for the candidate - I don’t want to waste their time unnecessarily. At the same time there are many ways to solve the problem - some better than others.

I gave each candidate unlimited time to solve the problem. Since there weren’t any time constraints I didn’t think anyone would fail, and I expected to see excellent solutions.

What I saw was… strange. I gave the test to the people I thought were the top ten people from a set of 40-50 candidates from Silicon Valley.

Only two candidates came up with a working solution.

Even people who submitted their answers via email submitted non working solutions!

It’s not a large sample. Maybe I failed to find the top candidates out of all the applicants. But as anecdotal as it might be I am still shocked. How can highly educated software developers with many years of experience fail to write software to find the two largest numbers in a list?

What do you think? Is the educational system so horrible? Is software development fundamentally hard? Are resumes misleading? Did I just run across a bad batch?

Update 1: The cuzimatter links were updated on February 28th, 2007.


Comments are closed.