This is a summary with links to my posts of the history and evolution of computer hardware and software.
In computers and software, history is ignored and its lessons spurned. What little software history we are taught is often wrong. Everyone who writes or uses software pays for this, and pays big. This is true at a large scale for computers.
https://www.blackliszt.com/2012/03/computer-history.html
Software history can be spectacularly bad about important things.
https://www.blackliszt.com/2019/08/the-comes-before-is-not-causation-fallacy-in-software-evolution.html
Bad software history is also rife on a smaller scale, for example cryptography.
https://www.blackliszt.com/2020/10/elizebeth-smith-friedman-the-cancelled-heroine-of-cryptography.html
Software history is largely ignored.
https://www.blackliszt.com/2015/06/dont-know-much-about-history.html
When you learn math, you are learning its history. When you get to calculus, you’re essentially up to the 1600’s. You build from the ground up. Not in computing, to its detriment.
https://www.blackliszt.com/2015/05/math-and-computer-science-vs-software-development.html
Studying history would show modern software people who think they’re solving big problems that the problem is decades old and that the box of failed solutions is overflowing.
https://www.blackliszt.com/2021/08/the-crisis-in-software-is-over-50-years-old.html
Software development is a giant mess. Studying its history and the attempts to clean up the mess is an essential part of constructive change.
https://www.blackliszt.com/2022/04/how-to-fix-software-development-and-security-a-brief-history.html
The history of other fields can have lessons that are highly relevant for software.
https://www.blackliszt.com/2012/07/what-can-software-learn-from-steamboats-and-antiseptic-surgery.html
https://www.blackliszt.com/2014/02/lessons-for-software-from-the-history-of-scurvy.html
https://www.blackliszt.com/2019/02/what-software-experts-think-about-blood-letting.html
Some aspects of computer history are so important and relevant that, when understood and applied, they make dramatic improvements to software development.
https://www.blackliszt.com/2013/12/fundamental-concepts-of-computing-speed-of-evolution.html
Software Evolution
Software evolves. But it evolves differently than other things studied by science. Virtually no one studies software history in any way, much less the patterns of evolution that become apparent when you study that history.
https://www.blackliszt.com/2019/06/the-evolution-of-software.html
Why should anybody bother to study software evolution? Knowing software evolution can help you predict the future! How? Software does not evolve the way most people think it does
https://www.blackliszt.com/2019/09/understanding-software-evolution-helps-you-predict-the-future-of-software.html
When studying software evolution it’s important to understand the underlying principles of automation – the things that computers and software are capable of doing. The fundamentals will tell you WHAT will happen, but not WHO or WHEN.
https://www.blackliszt.com/2020/01/the-fundamentals-of-computer-automation.html
The way you learn software evolution is to study both its history in general and how it has been used in different industries and domains.
https://www.blackliszt.com/2014/04/continents-and-islands-in-the-world-of-computers.html
One clear pattern of evolution is that a kind of software will be established in one domain and then slowly, sometimes over decades, appear in other domains, one by one.
https://www.blackliszt.com/2019/08/the-slow-spread-of-linear-programming-illustrates-how-in-old-vation-in-software-evolution-works.html
A similar pattern often occurs with simple kinds of software.
https://www.blackliszt.com/2019/09/simple-data-entry-technology-illustrates-how-in-old-vation-in-software-evolution-works.html
A peculiar aspect of software evolution is software fashions. They appear, grow strongly and often fade away as their awfulness becomes hard to avoid. Then they come back, usually re-named.
https://www.blackliszt.com/2019/05/recurring-software-fashion-nightmares.html
A typical result of a fashion-driven software trend is to increase costs without delivering benefits, which can happen even when it involves an intrinsically good thing like workflow automation.
https://www.blackliszt.com/2019/09/laser-disks-and-workflow-illustrate-the-insane-fashion-driven-nature-of-software-evolution.html
One of the forces of evolution is resistance to automation.
https://www.blackliszt.com/2020/01/luddites.html
Software Programming Language Evolution
Software people love to talk about progress and innovation. Most of what they claim as progress is little but milling around in a small box.
https://www.blackliszt.com/2020/09/software-programming-languages-50-years-of-progress.html
There is an odd evolution in programming languages, in which the relationship between data definitions and programs cycles from inside to outside the program and back.
https://www.blackliszt.com/2015/06/innovations-that-arent-data-definitions-inside-or-outside-the-program.html
However, there have been a couple major advances in the evolution of programming languages.
https://www.blackliszt.com/2020/09/the-giant-advances-in-software-programming-languages.html
While some truly powerful advances have become standard, others have been thoughtlessly discarded.
https://www.blackliszt.com/2021/09/software-programming-language-evolution-structures-blocks-and-macros.html
Other powerful advances, widely used for a time in the market, ended up being ignored or abandoned by academia and industry in favor of a productivity-killing combination of tools and technologies.
https://www.blackliszt.com/2020/11/software-programming-language-evolution-beyond-3gls.html
The emergence from academia of “structured programming” and the associated effort to find all GOTO statements and burn them at the stake was a particularly shameful instance of the evolution of programming languages.
https://www.blackliszt.com/2021/09/software-programming-language-evolution-the-structured-programming-goto-witch-hunt.html
While loads of people focus on language, programming tools that make huge contributions to the productivity of programmers have evolved: libraries and frameworks.
https://www.blackliszt.com/2021/10/software-programming-language-evolution-libraries-and-frameworks.html
Some programming languages that were supposed to be so much better than older ones led to major failures. But failures are expected in the normal world of software development, so the bad new languages kept marching along.
https://www.blackliszt.com/2021/01/software-programming-language-evolution-credit-card-software-examples-1.html
The small world of functional software languages has an interesting history.
https://www.blackliszt.com/2021/05/software-programming-language-evolution-functional-languages.html
Software Applications and Systems Evolution
One of the recurring evolution patterns is that functionality emerges on a new platform in roughly the same order as it emerged on earlier platforms. The timescale of the emergence may be compressed; the important aspect of the pattern isn’t the timing but the order. Here is an explanation of the general concept and how it worked for operating systems.
https://www.blackliszt.com/2020/10/software-evolution-functionality-on-a-new-platform.html
Here is how the same pattern of functionality on a new platform worked out in security services.
https://www.blackliszt.com/2020/11/software-evolution-functionality-on-a-new-platform-security-services.html
Here’s the pattern of existing functionality on a new platform as seen for remote access software.
https://www.blackliszt.com/2020/11/software-evolution-functionality-on-a-new-platform-remote-access.html
Just because you’re building a version of existing functionality for a new platform doesn’t mean you’ll succeed. You can screw it up in various ways, including being too early – if the market doesn’t think it has a problem, it won’t buy a solution.
https://www.blackliszt.com/2020/11/software-evolution-functionality-on-a-new-platform-market-research.html
Transaction monitors are a classic example of the pattern of functionality emerging on a technology platform, and then emerging in pretty much the same way in the same order on other platforms.
https://www.blackliszt.com/2021/02/software-evolution-functionality-on-a-new-platform-transaction-monitors.html
Once an application appears on a software platform, there is a consistent way the category of applications evolves on that platform. It goes from a custom application to a basic product, then parameters are added and finally a workbench.
https://www.blackliszt.com/2020/01/the-progression-of-abstraction-in-software-applications.html
Here are examples of the progression from prototype through increasing levels of abstraction.
https://www.blackliszt.com/2021/03/the-progression-towards-abstraction-on-a-software-platform-examples.html
Software automates human effort to varying degrees. One dimension of automation is depth, in which software evolves from recording what people do through helping them and eventually to replacing them.
https://www.blackliszt.com/2021/04/the-dimension-of-software-automation-depth.html
There is surprising pain and trouble of going from one stage of automation depth to the next. Unlike the progression to increasing levels of abstraction, customers tend to resist moving to the next stage of automation for various reasons including the fear of loss of control and power.
https://www.blackliszt.com/2021/05/the-dimension-of-software-automation-depth-examples.html
Here’s how the automation depth pattern plays out in “information access,” the set of facilities that enable people to find and use computer-based information for decision making.
https://www.blackliszt.com/2021/12/the-dimension-of-automation-depth-in-information-access.html
The patterns of automation play out in multiple dimensions. In addition to automation depth, there is automation breadth.
https://www.blackliszt.com/2021/11/the-dimension-of-software-automation-breadth.html
Here are a couple of clear examples of the evolution of software applications to increasing automation breadth.
https://www.blackliszt.com/2022/07/the-dimension-of-software-automation-breadth-examples.html
The evolution of spreadsheets is a good example of how these patterns work out in history, and clearly demonstrate the predictive power they have for anyone who cares to look.
https://www.blackliszt.com/2023/09/software-evolution-spreadsheet-example.html
As software evolves in these ways, it becomes increasingly nuts for a potential customer to build it for themselves. However, there are a surprising number of cases where a smart user can build a private version of commercially available software and win with it.
https://www.blackliszt.com/2023/09/software-evolution-build-buy-then-build.html
You would think that user interfaces would be thoroughly understood. When you look at a variety of UI’s you see that the underlying principles are clear but usually ignored.
https://www.blackliszt.com/2020/12/software-evolution-user-interface.html
https://www.blackliszt.com/2021/01/software-evolution-user-interface-concepts-whose-perspective.html
https://www.blackliszt.com/2020/01/how-to-design-software-user-interfaces-that-take-less-time.html
Does Software Always Evolve?
There is a large body of core software that evolves extremely slowly.
https://www.blackliszt.com/2023/07/does-software-evolve-rapidly.html
Once a kind of software gets built, it tends to live long past the problem for which it was the solution. Data was so big you needed storage. Special SW invented to handle it. Now it will all fit in memory (for most applications). But the SW and code practices live on!
https://www.blackliszt.com/2010/09/databases-and-applications.html
Yes, they’ve been obsoleted by modern hardware – but needed by software.
https://www.blackliszt.com/2010/01/paleolithic-mainframes-discovered-alive-in-data-center.html
While there are things that change in software and management, a surprising number of common things just get new names. The “cloud” is a typical example.
https://www.blackliszt.com/2011/12/the-name-game-of-moving-to-the-cloud.html
Another example is pure software, shown with SOA and micro-services.
https://www.blackliszt.com/2021/03/micro-services-the-forgotten-history-of-failures.html
One of the explosive growth areas of the internet boom was the invention and spread of social media. Most of the people who look at it ignore its deep roots in non-digital media.
https://www.blackliszt.com/2018/10/social-media-has-a-long-history.html
If and when serious study of computer software history and evolution finally starts to take place, perhaps Computer Science will start on the path to being, you know, scientific. And normal software development will stop being dominated by fashions.
https://www.blackliszt.com/2023/04/summary-computer-science.html
https://www.blackliszt.com/2023/07/summary-software-fashions.html