Vladimir Sedach

Have Emacs - Will Hack

August 28, 2011

Programmer myopia

Topic: Software engineering

We like to assume that people are basically competent and rational. Computer programmers enjoy pretending they are more competent and more rational than people in other professions.

In many cases neither of those assumptions is true.

Two popular memes surrounding programming languages in the 1980s and 1990s were the assertions that "garbage collection is too slow" and that "dynamic typing does not work for large programs."

Many programmers were convinced both those things were true. In hindsight they were completely wrong, as languages such as Tcl (more on the importance of Tcl in the history of programming languages in an upcoming post), Perl, Java, and Python "dragged people halfway to Lisp" and changed public perception.

How could so many people who consider themselves above-average in competence and rationality be so wrong? (Assume that every programmer is indeed a special snowflake and the Dunning-Kruger effect does not apply).

A hermit spent 10 years writing a program. 'My program can compute the motion of the stars on a 286-computer running MS DOS,' he proudly announced. 'Nobody owns a 286-computer or uses MS DOS anymore,' Fu-Tzu responded.

Eloquent JavaScript, Marijn Haverbeke

The problem is that programmers seem unable to think even a couple of years into the future. People complaining about garbage collection in the 1980s were looking back at their existing 8-bit Trash-80s instead of at contemporary computers being produced and the future computers being planned. The idea that computers can be good at automating rote tasks like managing memory and checking and inferring types never occured to them.

People have trouble imagining the future even if the trends, such as Moore's law, are in front of them. It takes a very long time for people to understand the right ideas. To paraphrase Alan Kay, being able to find the appropriate point of view really is better than a high IQ.

Here are some other Lisp myths that programmers believe out of ignorance, and that will take a long time to dispel: