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.
|
1980
1990
2000
2010
2020
2030
2040
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 >