Six Decades of Software Engineering
Mainframes were born in the 1960s, along with the earliest electronic telephone switching systems. Minicomputers arrived in the 70s, and so did ARPANET. PCs came of age the 80s, as well as languages that were so simple we figured anyone could use them. This led to many a disaster – from bloated, unmaintainable corporate systems to medical device failures. And so the 90’s became the decade of
heavy process; but it was also the decade that open source software came of age.
Then along came Y2K, which brought us the Internet companies, Agile software development, and the decade of teams. Try as they might to be autonomous, the teams inherited monolithic databases and deep dependencies. To solve these problems, the 2010’s became a decade devoted to flow (DevOps) and architecture (microservices). Now in the 2020’s our world has changed dramatically, faster than anyone could have imagined, and we have to learn how to change our software just as fast.
From my first ‘Hello World’ in 1961, I’ve watched software migrate from automating business processes, to a product in its own right, to a fundamental element of our infrastructure. This talk will cover some of the early principles behind great software engineering that are as true today as they were a half century ago; and it will cover a few mistakes we made that we do not need to repeat.