In 1996, Len Widra a Principal Engineer at SGI and I got into a heated argument over the importance of software vs hardware.
I was a kid out of school with an ego to match. Of course, I thought I knew everything. The crux of our debate was whether software was a relevant technology or important technology.
Len’s observation was that software was irrelevant or something like that. Hardware, he observed, was the important technology.
As a software engineer, this was infuriating. As a computer scientist this was insulting. How dare he say that a bunch of silicon was more important than my code?
It’s been almost 18 years, and I’ve learned more.
What I have learned is that new software rarely if ever displaces old software unless some new hardware shows up. New hardware shows up and that new hardware makes the old software irrelevant or obsolete.
There is one interesting caveat. Some software applications are really dependent on the quality of the algorithms and as the algorithms improve the software gets obsoleted regardless of the underlying hardware changes. In many cases the emergence of new algorithms creates new hardware that in turn helps obsolete the old software.
For the vast majority of software systems, however, that’s simply not the case.
When you are looking for new opportunity in the technology space, what you need to look for is where new hardware is emerging. That new hardware, if it is sufficiently different will obsolete the old software that was tied to the new hardware creating new opportunities for new software.
A few examples:
(1) the emergence of x86 servers created the opening for Linux. Before x86 servers were a reality, the UNIX vendors owned the entire software and hardware stack. When x86 became good enough, a new software stack could win because it was tied to new hardware.
(2) Flash in the storage industry has truly created a massive disruption enabling many many many different kinds of software stacks.
(3) Merchant (aka Broadcomm) Silicon is creating a disruption in the networking space that reminds me of the x86 disruption.
(4) ARM processors made mobile computing plausible.
Maybe my favorite example is this picture from TIOBE Software that measures popularity of programming languages. TIOBE measures popularity – not use or lines of code – and has been doing that analysis for many years:
You look at the chart and you realize how slowly programming language popularity changes except for one programming language: Objective-C. The popularity of a single programming language changed in a dramatic fashion not because it was good or bad but because of a single new hardware platform that enabled new software.
Hardware creates disruption because it enables software that was impossible before. The carefully calibrated trade-offs that are baked into a system are tossed into the sea with new hardware. When you want to look for disruptions to your business, never look at software, software is irrelevant, look at the hardware …