One of the most enduring mistakes software architects make is what I call the Turing Machine Fallacy. The argument goes like this.
1. My system solves this fantastic class of problems
2. This system will address all problems.
3. Therefore, there is no room for any other system
The most recent example of this fallacy was the cloud. Four years ago, when I joined VMware, everyone assumed that the public cloud was the future. The assumption was that a small set of public cloud providers would provide the infrastructure that everyone would consume. That computing infrastructure was fundamentally undifferentiated and, therefore, not something that would be worth investing in.
I didn’t, don’t, and never will agree.
I believed when VMware’s stock price was in the mid-’50s that this was a ridiculous proposition.
In short, my point is the following. If you believe that a single computing infrastructure will meet all computing needs, you also believe that all software will run on a single computing platform and that that computing platform is X.
We have a name for X, it’s called a Turing Machine, and last I checked, the guys selling paper were not making a lot of money.
I believe that the minute the industry has coalesced around yet another fake Turing Machine, I need to start looking for the thing that will replace it.
But why do I believe this?
Because fundamentally, the software is an approximation of the real world. The software is a model of the real world. It is not the real world. And the real-world changes. And when the world changes, the software approximations become increasingly ill-fitting until they no longer fit. And changing software is very, very hard.
Changing software is so hard that new software fits into the gaps between the current software and the real world.
The strategic system software architect’s role is to recognize that your job is to see where the approximations are ill-fitting and cause investment to happen in solutions that will fit into those areas.
And those investments are software that is – by definition – different than the current winning system architecture. And those investments will drive hardware investments to support that software. And the hardware architecture, which is, in turn, an approximation of reality, will change. And as the hardware architecture changes to adapt to the change in software architecture, the winning system stops being the final answer to software system architecture.
We realize that the system architecture is not a universal Turing Machine but a computer.
Hardware evolves to support software, which is continuously evolving to support a changing world. Performance, form factor, power consumption, and legal requirements are in constant flux, and therefore the needs change as well.
And so to end on a proof point, in 2015, everyone assumed that Amazon would own The Cloud. And yet, here we are, and what is clear is that there will be a plethora of clouds – private, public, authoritarian, IoT, etc. Each with their optimizations that deal with their specific requirements.
The universal Turing Machine is an excellent mathematical abstraction, but there is no such thing in the real world where I live and work.
Leave a Reply