
Abstract: Software generally isn’t constructed the way Mercedes-Benz, BMW and Audi make cars, but it could be and it should be. Achieving this takes committed investment in precision software engineering. Software made that way would be great, cost-effective, and profitable and would readily displace the competition.
This is a story about how engineering is done. The car industry illustrates what does and could happen in software engineering.
When the car industry was young, there was a lot of innovation. Brilliant, young engineers were rapidly advancing the state of motor vehicle design and trying things out. At the peak, were the Bugattis and Ferraris of the world, who designed and engineered to a very high standard, but with very little standardisation. I doubt there is a single nut or bolt on a Bugatti that has a standard thread. None of that mattered, when the engineers and craftsmen were brilliant and could incorporate good ideas and novel innovations just by going down the work shop and machining some new parts. It’s what made those cars so outstanding, but it’s also what makes maintaining them such an astronomically expensive nightmare. To repair anything on those cars requires a brilliant engineer. An ordinary mechanic won’t do and there are no economies of scale in the production of replacement parts. Works of art they may be, but so is every part you need to replace.
At the same time as the Ferraris and Bugattis, were a bunch of forgettable engineers that frankly made second rate cars. Many of the Marques have come and gone, especially those that built to a price or rushed their designs to market without adequate testing. If their engineering wasn’t brilliant, then it was simply poor. Those of us old enough to remember can readily recall mass market cars that rusted away in a few years, broke down often and generally required constant love and attention, plus a never ending supply of cheaply produced, but expensive to fit, replacement parts. We drove junk, most of us. I spent most of my early twenties at the parts counter of the local dealership. My car just wasn’t built or designed very well. But it was cheap, relative to a Ferrari or a Bugatti and driving was so much more attractive than walking.
During periods of rapid innovation, nothing is engineered with longevity in mind or tested adequately, but the market tolerates it because the engineers are making something that has never been made before. But it has very high utility. That, or they are making it at a price that was previously beyond the reach of most people. Even the cheapest designs had the virtue or making utility accessible.
At some point in time, when the technology begins to mature and what are obviously the best design approaches begin to emerge, the market becomes less tolerant of un-maintainable, expensive works of art, or cheaply and poorly designed cars that keep on breaking down and rusting away. At some point, precision engineering is called for. The engineering design goal is to produce the:
- most robust
- easiest to maintain
- simplest
- most elegant
- most long-lived
product that can be:
- engineered to a reasonable price
- taking advantage of economies of scale in the production of standardised components
- increasing the reliability, performance and features of the car
- while enhancing owner satisfaction
That’s a much more difficult engineering problem than rapidly and brilliantly innovating, or of mass producing something not quite good enough at a rock bottom price.
This precision engineering is what Mercedes Benz, BMW and Audi have pursued. Their goal has been to engineer:
- a quality product
- which is safe
- that requires relatively low maintenance
- which lasts a long time
- is reliable
- has very high levels of performance, comfort and innovative appointments
- which is also breathtakingly beautiful
- is a pleasure to own
To achieve those goals, there is a lot of engineering and design work that has to go into:
- each and every component
- their materials
- the processes required to produce them to a consistently high quality
- the systems and processes to bring all of the parts together into a coherent, complex, well-built whole
Precision engineering, while requiring a huge investment in first class, highly innovative engineering, does not mean these cars are slow or expensive to produce. There are processes engineered that ensure that quality is built in and that construction of the car is efficient and flawless. Quality is designed into every aspect of producing the car and flaws are deliberately designed out. Efficiency comes from not having to do things twice and finding ways to produce components with very tight tolerances and little variance. These cars represent good value for money, because they run and run. But even these could be improved upon. The reliance on materials like plastic and rubber is usually what causes these cars to fail.
Precision engineering also exists in the world of Formula One car design, but here the design goals are very different, though the engineering is utterly brilliant. Here, the car still is a sort of artwork, designed for ultimate speed, strength and light weight, but not necessarily for longevity. However, the engineering practices are disciplined, repeatable, dependable and efficient. Teams can produce parts in small numbers at a consistently outstanding quality. They have to. Race wins depend upon it.
Precision engineering is about designing the best overall package and the best individual components, plus the processes to produce the parts the best way and put them together into the finished vehicle the best way. Engineers design everything:
- the car
- the parts
- the materials
- the methods of part production
- the methods of component assembly into finished vehicles
Nothing is left to chance. Engineering ideas are applied to every link in this complex chain to reduce the likelihood of making anything that fails to satisfy the hard-to-achieve and multi-faceted design goals.
The software industry, I assert, has no equivalent of a Mercedes-Benz, BMW or Audi. There are still lots of innovative software engineering shops that throw things together rapidly, producing highly useful and brilliant results. However, these pieces of software are rarely reliable, scalable, robust, standardised, extensible or cheaply maintainable. They require a constant flow of brilliant software engineers to keep them going at all, let alone extend, and can be considered to be really expensive works of art. Maintenance is an astronomically expensive nightmare.
I’ve seen many innovative software companies attempt to exist using this rapid prototyping, but somewhat undisciplined, style of software process, but they fail to charge enough money for their works (as would be required, if you were a Ferrari or a Bugatti). Consequently, they eventually lose the economic ability to continue. Once money gets tight, the excessive demands on brilliant engineers begin and the best simply leave and find another place to play.
At the other end of the software market are those that produce cheap and cheerful software, from standardised components (as far as is possible). These “mash-ups” can bring extraordinary functionality into the hands of even the most cash-strapped users, but ultimately these pieces of software are “expensive-to-live-with” junk, too. They’re the equivalent of British Leyland cars of the seventies. They’re not too pretty, they can’t be relied upon, they lack distinguishing innovation, but they work well enough, most of the time. However, they do not have high performance, many features, or last very well. It’s brittle engineering.
Some of these software products are characterised by:
- bugs
- crashes
- poor user experience
- wasteful use of machine resources
- they run slowly
- they leak memory
- they are hard to use
- upgrades are frequent and risky
So much of the software out there falls into this category. It is very hard to rely upon it or live with it, because it requires constant care and attention. Most browser software and operating systems (like Windows) fall into this category. They need constant updates, re-boots, they often fail to work at all after an upgrade and they perpetuate many egregious design flaws, often for decades.
I think the world is ripe for precision software engineering, where:
- the individual software components are engineered with care
- how you construct and test the components is engineered with just as much care
- processes that are repeatable and disciplined are put in place to reliably construct the parts
- the parts go together with processes and designs that make it seamless, fast and easy
- the components go together in an orderly, efficient, flawless, reliable, dependable way
to construct a software product that:
- has excellent performance
- uses minimal machine resources
- is highly featured
- produces an outstanding user experience
- at a very low cost of ownership
This software can exist and engineers know how to produce it. It also doesn’t have to cost significantly more than junk ware, and costs considerably less than the astronomically expensive “work of art” approach to software construction. However, what it would take is significant investment in the software engineering.
If software engineering was funded by owners committed to precision software engineering, you wouldn’t see the venture capital, exit-route-strategy-driven, corner-cutting that afflicts most innovative software ventures. If an owner and funder were truly committed to creating a software product using the engineering ethos of a Mercedes-Benz, BMW or Audi, then the product would be excellent, easy to use, cheap to maintain, reliable and of the very highest performance.
I think the time has come to produce precision engineered software. There is a ready market for it. It would be profitable, as these German car companies have proven by analogy. There really is less and less room and tolerance for cheaply made junk ware and astronomically expensive to maintain, prissy, fussy, one-of-a-kind, but brilliant, prima donna ware.
The first step is to construct a plant to:
- make software reliably and efficiently
- to design best of breed software components
- to bring together into state of the art software products
- that out-class the cheaper products
- but which are almost as good as the most brilliant custom-made product
That would revolutionise the software industry.