It was truly eye-opening to read Reginald Braithwaite’s observation:
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 mentions is Imran, who clearly expresses frustration at the number of aspiring programmers who fail at even the simplest coding tasks:
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.
Imran developed a set of questions, famously known as “FizzBuzz Questions,” to identify these candidates. A typical FizzBuzz question is:
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.
This sentiment is echoed by Dan Kegel, who faced similar issues when 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!
The recurring theme from Reginald, Dan, and Imran paints a concerning picture. While it’s understandable for new software developers to have a learning curve, it’s deeply troubling that individuals applying for programming roles cannot even write the most basic programs. This reflects a fundamental gap between those who can program and those who, despite appearances, cannot. It’s almost a disservice to the profession for someone to apply as a programmer without possessing these foundational skills.
This stark divide – why can’t so many aspiring programmers program? – underscores the necessity of simple screening tests like FizzBuzz. It’s not about setting an impossibly high bar; it’s about ensuring that interviewers aren’t wasting valuable time on candidates who lack the most rudimentary programming abilities. The FizzBuzz test, intentionally designed to be straightforward, serves as an effective filter. As a commenter on Imran’s post rightly pointed out:
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.
Perhaps the issue isn’t the difficulty of the tests, but rather the lack of practical coding experience among applicants. It raises the question: why can’t computer science graduates, and even self-proclaimed senior programmers, solve such a basic coding problem? Is there a disconnect between academic learning and practical application? Are fundamental programming skills being overlooked in education, or are individuals misrepresenting their capabilities?
The experience highlights the critical need to assess coding ability upfront. At Vertigo, a code sample is mandatory even before a phone interview. Furthermore, on-site interviews include a brief coding exercise – a basic application to be built within an hour. This approach, while occasionally revealing some unexpected failures, has generally proven successful. It allows interviews to focus on more advanced software engineering discussions, rather than being derailed by fundamental coding deficiencies. It allows for the “luxury” of interviewing programmers who can, in fact, program.
It’s almost ironic that such extensive pre-screening is needed just to ensure candidates possess basic programming skills. It would be comical if the situation weren’t so disheartening. While certifications may not be the definitive answer, this situation does prompt reflection on Steve McConnell’s vision of establishing software engineering as a truly recognized profession. The ability to program, it seems, should be a baseline expectation, not a surprising rarity. The prevalence of FizzBuzz failures suggests a deeper issue within the pipeline of aspiring software developers, and understanding why can’t they program is crucial for the future of the field.
Comments are closed due to volume.