Why Canât Programmers... Program?
I was incredulous when I read this observation from Reginald Braithwaite:
Like me, the author is having trouble with the fact that 199 out of 200 applicants for every programming job canât write code at all. I repeat: they canât write any code whatsoever.
The author heâs referring to is Imran, who is evidently turning away lots of programmers who canât write a simple program:
After a fair bit of trial and error Iâve discovered that people who struggle to code donât just struggle on big problems, or even smallish problems (i.e. write a implementation of a linked list). They struggle with tiny problems.
So I set out to develop questions that can identify this kind of developer and came up with a class of questions I call âFizzBuzz Questionsâ named after a game children often play (or are made to play) in schools in the UK. An example of a Fizz-Buzz question is the following:
Write a program that prints the numbers from 1 to 100. But for multiples of three print âFizzâ instead of the number and for the multiples of five print âBuzz.â For numbers which are multiples of both three and five print âFizzBuzz.â
Most good programmers should be able to write out on paper a program which does this in a under a couple of minutes. Want to know something scary? The majority of comp sci graduates canât. Iâve also seen self-proclaimed senior programmers take more than 10-15 minutes to write a solution.
Dan Kegel had a similar experience hiring entry-level programmers:
A surprisingly large fraction of applicants, even those with mastersâ degrees and PhDs in computer science, fail during interviews when asked to carry out basic programming tasks. For example, Iâve personally interviewed graduates who canât answer âWrite a loop that counts from 1 to 10â or âWhatâs the number after F in hexadecimal?â Less trivially, Iâve interviewed many candidates who canât use recursion to solve a real problem. These are basic skills; anyone who lacks them probably hasnât done much programming.
Speaking on behalf of software engineers who have to interview prospective new hires, I can safely say that weâre tired of talking to candidates who canât program their way out of a paper bag. If you can successfully write a loop that goes from 1 to 10 in every language on your resume, can do simple arithmetic without a calculator, and can use recursion to solve a real problem, youâre already ahead of the pack!
Between Reginald, Dan, and Imran, Iâm starting to get a little worried. Iâm more than willing to cut freshly minted software developers slack at the beginning of their career. Everybody has to start somewhere. But I am disturbed and appalled that any so-called programmer would apply for a job without being able to write the simplest of programs. Thatâs a slap in the face to anyone who writes software for a living.
The vast divide between those who can program and those who cannot program is well known. I assumed anyone applying for a job as a programmer had already crossed this chasm. Apparently this is not a reasonable assumption to make. Apparently, FizzBuzz style screening is required to keep interviewers from wasting their time interviewing programmers who canât program.
Lest you think the FizzBuzz test is too easy â and it is blindingly, intentionally easy â a commenter to Imranâs post notes its efficacy:
Iâd hate interviewers to dismiss [the FizzBuzz] test as being too easy - in my experience it is genuinely astonishing how many candidates are incapable of the simplest programming tasks.
Maybe itâs foolish to begin interviewing a programmer without looking at their code first. At Vertigo, we require a code sample before we even proceed to the phone interview stage. And our on-site interview includes a small coding exercise. Nothing difficult, mind you, just a basic exercise to go through the motions of building a small application in an hour or so. Although there have been one or two notable flame-outs, for the most part, this strategy has worked well for us. It lets us focus on actual software engineering in the interview without resorting to tedious puzzle questions.
Itâs a shame you have to do so much pre-screening to have the luxury of interviewing programmers who can actually program. Itâd be funny if it wasnât so damn depressing. Iâm no fan of certification, but it does make me wonder if Steve McConnell was on to something with all his talk of creating a true profession of software engineering.
Due to high volume, comments for this entry are now closed.