Why will it take a monopoly for us to conquer interstellar travel? Because software written in a competitive environment is always riddled with bugs.
Note the qualifier here: a competitive environment. I could probably say all software with some confidence, but my specialty is commercial, not government or NGO. There are indications even open-source is dubious (Heartbleed, anyone?). I do know about commercial software – I’ve been in software development my entire career, from quality assurance to core development, tools and forensics. The companies I have worked for range from tiny (me) and mid-sized startups to a huge multinational with employees in the tens of thousands. I am co-author of a few patents (which is another subject), one of which was the foundation for a $multi-tens-of billions product. So yes, I am promoting myself as a reasonably reliable authority on the subject. The projects I have worked on are as varied as drivers, applications for experts and regular folks like yourself, and embedded systems. It’s the latter that is really scary.
An embedded system is any piece of code you can’t interact with directly. This code is everywhere, from washing machines to space stations. Most of the chips in your computer, be it a phone or laptop, have ‘firmware’ which is really just geek-speak for software you can’t get at. It’s embedded. On top of that you have the operating system that does the thing you expect from the gizmo, like take calls. The firmware and the OS have to work together perfectly or things break. Most of the time, it works reasonably well. But we’ve all had times when web sites would not work, the printer or laptop needed rebooting, the phone just ‘hung,’ the interface just plain stopped interfacing. In all of these cases, it’s due to a bug. More on them below, if you’re wondering why things break so often.
Why competition results in bugs
One phrase answers this one: time to market. Every competitive enterprise has a component of time involved, and technology more than most. If you can’t get your product to market before the other company, they are going to grab the majority of the profits. The first entrant can demand the highest prices (remember those first iPhones?), establish brand identity, and ‘take market share.’ That’s another classic phrase: taking share is partially a mind thing. We humans tend to believe the first person we hear when a new concept is broached. The first ones get to say, this is how it should be (soapbar shaped, dead little icons in a grid, etc.). The other aspects of market share are practical: once you buy that shiny new toy you’ll need spare parts, you might be paying for maintenance or on a contract-you’re ‘locked in’ as our marketing guys say. The second guy, the also-ran, the Zune, if you will, has a tough row to hoe. Breaking in as #2 is not so easy. It takes big bucks, just ask Samsung, or HTC.
Thus, the pressure on companies to get the product to market is overwhelming. This adds stresses already present, as mentioned: getting it right (quality) costs time and money. If you haven’t sold the widget yet you don’t have money coming in to fund the R&D. It’s always speculative, so R&D money is limited. And now we see that of the three legs of the software triangle (features, time, money), features are what make the product, while time and money are where the shortcuts will be taken. Since quality = time * money, you have a classic tradeoff: features or quality
Guess which wins.