Somehow we all agree about the importance of history in our society. We teach it to our younger ones, we quote it in our speeches, we talk about it during our dinners. Maybe it is because we had to memorize the names of battles fought ages ago, and we expect to capitalize on that fact so as to appear wise (if not arrogant) to others. We might even agree with history itself, shaking our heads in dismay to some extent, as we see the events unfolding nowadays. A phenomenon which, by all measures, tends to increase with age.
There is an old joke circulating in Twitter stating that
Those who do not study history are doomed to repeat it, yet those who _do_ study history are doomed to stand by helplessly while everyone repeats it.
Another one states, quite sadly, that
It seems like a large portion of being over 40 in tech involves listening to younger people with Big Ideas, sighing deeply, and muttering “yes, we all knew about that 20 years ago.”
Is there a way to way to avoid repeating mistakes in software engineering by applying history? There is such a fast pace in this industry that by the age of 35 most software developers have a “Senior” title, and, as Steven Sinofsky pointed out, a rather large collection of t-shirts bearing the names of obsolete technologies.
The study of programming history might not be the solution to all of the problems in our industry, for sure. It is also worth pointing out that most university curricula simply do not include any mention whatsoever of such subjects. Maybe it is time to start providing such information to students. The author of these lines certainly would approve a more general spread of this kind of information in the future.
A Short List Of Books
The following list provides a necessarily short, incomplete list of books that the author can recommend, to start an exploration in the subject of programming history.
Dealers Of Lightning
I would start with this title published in 2000 by Michael Hiltzik. The book traces the history of the Xerox Palo Alto Research Center (PARC) in the seventies, arguably a defining moment for the current period of technology we are living today.
In one of the most significant parts of the book, the author described how around 1972, there was an office somewhere in California where people were using a fully functioning GUI with a mouse, writing documents on a WYSIWYG word processing applications, printing those documents on a laser printer, and even sending them via e-mail. A place, by all means, 20 or 25 years ahead of its time, and where many ideas, including that of teaching programming to kids, became reality, even though it was not the reality that Xerox wanted to build.
The Dawn Of Software Engineering – From Turing To Dijkstra
This one is a rather obscure title published by Edgar G. Daylight. It is, however, an overlooked yet absolute masterpiece of incredible detail.
The author finds a quite interesting thread that links the influences of these two major pioneers of our field; through papers and references, their opinions shaped our programming languages and permeate until today in most of our day-to-day tasks.
John Von Neumann And The Origins Of Modern Computing
There are many biographies of John Von Neumann; but this one benefits from the experience of William Aspray, MIT researcher with lots of experience in the subject. The book delves into all of the contributions to science and technology of Von Neumann; they range from physics to mathematics, and of course, to programming, through the now ubiquitous hardware architecture that bears his name.
The result is a book whose lecture can only confirm the reader in the belief that Von Neumann was, together with Einstein and Gödel, one of the greatest minds of the twentieth century – and to top it off, the three shared offices in the same location, the Institute for Advanced Studies at Princeton. Only the Platonic Ἀκαδημία or the Solvay Conferences of Physics might have brought such minds together in human history.
Programming Languages: History And Fundamentals
The last one in the list, but by all means the greatest, is the summary by Jean E. Sammet, published in 1969 by Prentice-Hall and nowadays out of print, of the state of programming languages before Neil Armstrong set foot on the moon.
Outstanding in breadth and depth, the book covers around 120 programming languages available at the time of its publication, through 800 bibliographic notes. Some of those languages are still relevant today, like COBOL and FORTRAN, while most others have been left behind by technology and human memory. Each of those languages is studied in the context of their creation; the reason behind their existence, the hardware they required, and the teams involved in their creation. Archive.org contains the scanned promotion leaflet of the book worth a look.
There you go; four books, roughly ordered by their reading complexity, each providing the same conclusion in the mind of the reader: those wise words of Dame Shirley Bassey in that classic song of the nineties:
The newspapers shout a new style is growing,
But it don’t know if it’s coming or going,
There is fashion, there is fad;
Some is good, some is bad;
And the joke is rather sad,
That it’s all just a little bit of history repeating.