What is the history of programming? There is none. There are many. It is too long. Let me summarise.
There is no history of programming, in the sense of a recording of the events and developments related to the field. Many of these events went unrecorded, or ignored, or lost. Even the important ones.
Two significant early deployments of digital computers were the Colossus, designed and built in the UK, and the ENIAC in the US. Both were military projects. We may know something of these machines – in the case of Colossus, enough to build a replica – but not their history.
Many programmers like to lead a review with the question: what else did you try? So what trade offs led to the design of the Colossus? How did the maintenance budget affect the choice of technology? Was the lifetime of the project considered? What else could ENIAC have been? What else did you try?
History Is Written By The Authors
In addition to lacking enough history, we suffer from too much. Anyone with a writing implement and the ability to order events chronologically – correctly or otherwise – can construct a narrative where none exists.
A great way to understand the capriciousness of history is to read business nonfiction. Go to your local library, and take out a few books by American authors on succeeding at business. They will have gold embossed titles like romance fiction, and proudly tell you that you can “skip the MBA” if you read this one book.
Look up either Steve Jobs or Howard Schultz in the index. They’ll be there. Read what each author has to say. It will tell you that Apple, or Starbucks, succeeded because the CEO did the thing that is the title of the book in embossed gold letters.
Now you’ll need a second hand bookstore or a bigger library for the next step. Find business books from the 1990s. Look up whichever revolving-door Apple CEO was in seat at the time. They’ll be there. This time, the author tells you that Apple is failing because they did not do the thing that is the title of the book.
We find that the narrative is made to fit the events, and select events at that. History is written by the people who write history, not by the people who make it. Because there is no “making history”. There is only selection and interpretation.
History is an attempt to tell the story of why some thing turned out the way it did by showing how events led up to that thing. But the people involved at the time didn’t necessarily know about those other events. Or they didn’t care. Or they knew about other events, which historians are ignorant of.
In this way, history can be like economics. Economists say that people or businesses act in the ways that they do because of bounded rationality. In fact, both the bounds and the rationality were invented by economists. People act as they do because of emotion, and whim, and caprice. Ask somebody why they made a particular choice, and they may be able to construct a post hoc rationalisation, but they are probably guessing.
History is just economic post hoc rationalising on the scale of a society. Somebody wants to tell a story about why the world is the way it is, so they look for records of events and fit them into their story. Like Rudyard Kipling, they want to explain why things are “just so”.
All of this is not to destroy programming history. I mean simply to cast it in the light it deserves. A light under which we apply a healthy dose of scepticism.
A summary history of programming by an Agile consultant is likely to talk up the Snowbird meeting and successful Agile projects. It might be silent on successful clean-room engineering projects undertaken by IBM.
The history written by a software engineering academic may talk up particular journal articles or conference proceedings, ignoring that many systems have been without knowledge of them. Meanwhile, a “pragmatic”, “move fast and break things” historian might downplay the relevance of stuffy academic journals. That author is still likely to drop the occasional “considered harmful” or “premature optimisation” into conversation.
A Linux fan will tell you that Linux was at the “right place, right time” when post dot-bomb companies needed to renew their proprietary Unix licenses without owning much cash. They may not mention that FreeBSD, OpenBSD, NetBSD, Minix and others were in that place at that time, too.
Someone who wants to explain how Apple introduced graphical computing to the mass market will talk about Steve Jobs taking the GUI from Xerox PARC, like Prometheus taking fire from Mount Olympus. They might not mention that the first GUI to achieve mass market success was actually Windows 3.1.
History Is Live
All of this is to say that programmers should not consume histories of programming. Not uncritically, anyway. We are its history. Choose values, principles and practices because they work for you, not because they “won”.
They did not “win”. There was no competition. There may have been competition between businesses, but not between technologies or tools. Certainly not between values, principles, and practices. Besides, businesses “win” by remaining in business, not by having better values or superior technology.