40 years ago, Fred Brooks made a prediction about software development that still holds true today.
In his classic book, The Mythical Man-Month - 20th anniversary edition" features an essay titled "No Silver Bullet - Essence and Accident in Software Engineering" originally published in 1986 which states:
There is no single development, in either technology or management technique, which by itself promises even one order-of-magnitude improvement within a decade in productivity, in reliability, in simplicity.
Published in 1995, this edition of the book is perfectly timed to assess the outcome of this statement. The author then carefully reviews the state of software at the time to conclude the statement was indeed correct. How could he be so certain in his ten-year prediction? The explanation is actually not too complex. It's based on the essential nature of the problems of software. According to Brooks:
[...] to see what rate of progress we can expect in software technology, let us examine its difficulties. Following Aristotle, I divide them into essence - the difficulties inherent in the nature of the software - and accidents - those difficulties that today attend its production but that are not inherent.
Brooks then lists four essential properties that are inherent to software making:
▪️ Complexity - software systems are frequently more complex than most other things humans build, that comes from size and the non-linear nature of its growth.
▪️ Conformity - systems are complex because we humans impose complex rules to them, not because they're necessarily naturally complex.
▪️ Changeability - the more successful software becomes the more people want to change it to meet demands beyond the original domain.
▪️ Invisibility - it's impossible to perfectly model the structure of any minimally complex system in our limited 3 dimensional understanding of the universe because it naturally requires many more dimensions so all attempts of mapping it through diagrams are inherently incomplete.
Reading Brooks' essay almost 40 years after it was originally published is quite shocking for how modern it still sounds. For all the progress we've made over these years it's clear that we are still mostly attacking the accidental problems of software development. Here are some examples:
📌 Automated tests, code linting and CI tools that run every time code is changed can significantly prevent bugs and enable larger teams to work safely in the same codebase.
📌 Modern databases and cloud computing significantly reduce the toil of scaling systems to a virtually unlimited number of users.
📌 Observability tools have made the work of identifying issues and debugging much faster and effective.
📌 AI assisted development is the new kid on the block and it's helping developers to write code and fix problems much faster than before.
📌 Advancements in "workstations" - as Brooks himself mentions in the book - is still a source of improvements through ever more powerful chips in computers and mobile phones.
But we too made progress in fixing the essence, although most of the progress is mostly incremental to things Brooks already recognized:
📌 Open source has certainly made a dent into developer productivity by defining standards and abstracting away complexity related to things like: protocols, basic system management features and even machine learning. This is mentioned in the book as "buy vs. build" and recognized to address essential difficulties. The use of APIs also had a significant impact on this.
📌 AI assisted development also deserves some recognition here as it enables faster understanding and navigating essential complexity in software.
📌 LLMs also have the potential to provide a path to solving issues that were previously overly complex or beyond our technology capabilities.
There's a lot of talk on what will be the impact of AI in the field, but studies so far haven't identified an improvement of 10x in productivity. Many industry players are promising a revolution but whether it's actually going to happen is still to be seen. For the most part it seems like Brooks' prediction is still valid today as it was 30 years ago.
What do you think? Will AI improve to become the mythical silver bullet? Share your thoughts in the comments 👇
--
Subscribe to the newsletter to get weekly posts on improving your engineering skills beyond the code.
Buy the Strategic Software Engineering book on Amazon.
Top comments (0)