Why Can’t Aspiring Programmers Code Simple Programs?

It was genuinely surprising to discover Reginald Braithwaite’s observation, highlighting a significant issue in the programming world:

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, Imran, further elaborates on this concern, detailing his experiences turning away numerous programmers who lack fundamental coding abilities:

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 then introduces the “FizzBuzz Questions” as a method to identify these developers. 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”.

The expectation is that most competent programmers should be able to solve this problem on paper within minutes. However, the reality is alarming: the majority of computer science graduates struggle with it. Even self-proclaimed senior programmers often take longer than 10-15 minutes to produce a solution.

Dan Kegel echoed similar experiences when hiring entry-level programmers, noting a disconcerting lack of basic programming skills among applicants:

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.

These accounts from Reginald, Dan, and Imran paint a worrying picture. While it’s reasonable to expect junior developers to have a learning curve, it’s deeply concerning that individuals applying for programming roles cannot demonstrate even the most rudimentary programming capabilities. This reflects poorly on the state of programmer education and the hiring process itself.

This significant gap – the divide between those who can genuinely program and those who cannot – is a well-documented phenomenon. It’s often assumed that anyone applying for a programmer position has already crossed this fundamental threshold. Yet, the evidence suggests this is not a safe assumption. FizzBuzz-style screening tests have become necessary to filter out candidates who, astonishingly, cannot program.

Some might dismiss the FizzBuzz test as overly simplistic – and indeed, its simplicity is intentional. However, as a commenter on Imran’s post points out, its effectiveness is undeniable:

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 initial step in hiring should always involve evaluating a candidate’s code. At Vertigo, a code sample is mandatory before even proceeding to a phone interview. Furthermore, the on-site interview includes a brief coding exercise – a basic task designed to simulate the process of building a small application within an hour. While occasional failures occur, this approach has generally proven successful. It allows interviews to concentrate on more advanced software engineering concepts, moving beyond basic competency checks and avoiding reliance on abstract puzzle questions.

It’s unfortunate that such rigorous pre-screening is needed just to reach the point of interviewing programmers who can actually program. The situation would be almost comical if it weren’t so disheartening. While certifications may not be a perfect solution, these widespread anecdotes raise questions about Steve McConnell’s long-standing advocacy for establishing software engineering as a truly recognized profession. The inability of a significant portion of programming job applicants to perform basic coding tasks underscores a critical issue that demands attention within the tech industry.

Comments

No comments yet. Why don’t you start the discussion?

Leave a Reply

Your email address will not be published. Required fields are marked *