Neil's News

Programming TNG

19 June 2013

The notorious FizzBuzz problem has become a standard tool for separating those who can code from those who can't. Possessing a computer science degree is not a guarantee of success. How one can graduate with a Master's degree from the likes of MIT, yet be unable to write FizzBuzz is something I cannot explain, yet I have seen it with my own eyes. The shocking truth is that only 0.5% of people who submit their resumes for a programming job can pass FizzBuzz.

Other than repeatedly interviewing for positions, what are these FizzBuzz-failures doing? Today, they aren't doing much. But until recently they powered the computer industry. And soon they will be joined in unemployment by half of current programmers. Let's take a trip into the past and extrapolate the future.

Below is list of tasks ranked by programming skills (reality is not one-dimensional, with most programmers having a matrix of competencies in different areas, but let's keep things simple). Use the timeline to step through the decades.

In 1980 if one had a thousand numbers to add together then you needed to get a programmer to write a simple program. Lots of low-skill programmers were used to perform table calculations.

At the high end, JIT compilers were just starting to become possible. Vision processing was, for the most part, out of reach.

Next >

By 1990 a whole class of programming had been wiped out. Table calculations were replaced by Lotus 1-2-3, VisiCalc, and Excel. Markup languages became the new lowest level for programmers (HTML didn't exist in the '80s, but other formats did).

Meanwhile, all programming tasks got slightly easier, with the advent of cursor keys, mice, higher memory limits, etc. Vision processing became barely within reach for the best programmers.

Next >

By 2000 the army of HTML programmers who were the foot soldiers of the dot-com boom found themselves slowly squeezed out of a job by authoring tools and content-management systems. The simplest form of programming left was performing system maintenance tasks such as chronjobs for backups.

Meanwhile, all programming tasks got slightly easier, with the advent of Internet knowledge sharing, Java, faster CPUs, etc. Vision processing became firmly within reach for the best programmers.

Next >

By 2010 most system maintenance tasks had been automated with self-maintenance and auto-updating. Many system administrators disappeared due to cloud computing. Building a finite state machine to parse a data structure became the new low-skill limit.

Meanwhile, all programming tasks got slightly easier, with the advent of better tools, higher level languages, vast libraries, etc. Natural language processing started to appear on the horizon.

Next >

We are not at 2020 yet, but already the low-skill limit is rising. DTD declarations make finite state machines unnecessary in many cases.

While at the high end, natural language systems such as Siri are starting to appear.

Next >

If the trend continues, decade by decade the low-skill limit for being an employable programmer will rise. The programming field is being eaten away from the bottom.

Next >

By 2040 (the decade that today's elementary school students become the next generation of programmers), they will have to rank in the upper 50% of the current skill range, just to get an entry-level programming job.

We are constantly being inundated with reports of how there is a shortage of programmers. While that may be true today, what will matter far more in the future is the quality of programmers, not the quantity. Any programmer who can't hack together a JIT compiler in 2040 will be as useless as a programmer who can't solve FizzBuzz today.

Looking at the field of professional sports provides inspiration. Everyone has gym classes early on. Those (and only those) who exhibit talent and interest are encouraged year after year. From a fraction of a percent of the population one gets a group of extremely talented professionals who can go on to compete at Olympic levels. The days when one can limp through a few classes and get a career doing table calculations are long gone.

[The preceding is part of a talk I gave on behalf of Google at the Computing At School conference in Birmingham last week. The remainder of the talk detailed methods of how to achieve high levels of programming proficiency, much of it based on observations of CS in Vietnam. I'll post more in a few months once we are ready to launch.]

< Previous | Next >

Legal yada yada: My views do not necessarily represent those of my employer or my goldfish.