Why your future success depends on your software strategy
The Smart Utopia
More than ever, society is dreaming of a utopian future where “Smart” technologies such as AI, IOT, Big Data and Autonomous Vehicles improve quality of life for the majority of the world’s populace. All of these advances are entirely dependent on software driven innovation. Therefore, mastering the ability to innovate in software is absolutely key to establishing a leading position in any market that will depend on “Smart” technology.
Business strategy is ultimately the science of ensuring future success. This involves anticipating the future, identifying critical issues and designing a plan of action to get there. There is one critical issue common to all “Smart” technologies, namely that the whole business of software engineering is currently based on fundamentally weak foundations.
These issues are nowhere better addressed than in a seminal paper written by Professor Jesse Poore of the University of Tennessee, “A Tale of Three Disciplines … and a Revolution”. Where other engineering disciplines systematically build upon formalisms that provide them with a solid foundation, software engineering currently only rarely does. For example, Aeronautical Engineering makes routine use of Aerodynamics, Flight Mechanics and Thermodynamics, all of which are based on proven scientific and mathematical principles. In contrast, mainstream software engineering relies on the use of informal methods exercised on a trial and error basis.
Building “Smart” technologies on weak foundations is an inherently risky business. Today, software engineering struggles to build demonstrably robust, reliable and resilient systems that perform seemingly relatively simple, constrained tasks. This struggle is most publicly manifest in the increasing occurrence of automotive recalls, for example. But fortunately, so far the cost and consequences of software failures have been relatively limited, with events such as the loss of power in the entire Northeast corridor of the US and Canada being the exception rather than the rule. However, the trend is not reassuring. In its annual “Software Fails Watch” report, the CEO of Tricentis remarks, “software plays a larger part in consumer and business interactions than ever before, and, yet, the number of news stories of reports of bugs being released into production only continues to grow.”
“The more lives and resources are at stake, the higher confidence we want that the software will work as intended.”
Prof Max Tegmark
The fact that to date relatively few lives have been lost due directly to software failures is because the context in which most of today’s software systems operate is constrained. For example, in the automotive world, software is currently used largely for driver assistance/comfort applications where the effects of a failure are constrained to non-critical systems within an individual vehicle and the driver is expected to function as the ultimate safety mechanism.
“Smart” systems of the future will be orders of magnitude more complex than those we build today, not only in terms their capabilities but also their dependency on other complex, sophisticated systems. For example, from a software perspective, a level 5 autonomous vehicle will be vastly more sophisticated than any vehicle on the road today. But Smart Mobility also envisions “platooning” autonomous vehicles together in convoys – a complex system of complex systems. The consequences of the failure of any part of such a system have the potential to cause havoc and affect many lives. The weak foundations upon which software engineering is currently based offer no means to mitigate these issues with any degree of certainty.
Inflated Total Cost of Ownership
The weak foundations of software engineering lead to an inflated total cost of ownership (TCO) for software (dependent) products. But because most software engineering organisations embrace the weak foundation paradigm these costs have become the accepted norm. Clearly then there is a huge opportunity to disrupt the status quo for any software engineering organisation capable of delivering a lower TCO by supplanting the weak foundations paradigm with a more rigorous approach.
Mastering Software Driven Innovation
Mastering software driven innovation begins with establishing strong foundations in software engineering. For instance, this means adopting and deploying analytical tools and techniques that prevent, detect and eliminate defects early in the development lifecycle. Agile development methods, continuous integration and continuous deployment further speed and strengthen an organisation’s ability to reduce feature development time & costs, achieve high quality results, and build a maintainable and reusable code base. With the benefits of strong foundations, development teams can focus on rapidly innovating in software and mastering increasing complexity. Businesses that can rapidly innovate in software can also more rapidly innovate with software, enabling the delivery of market leading Smart Products and Services.
Future winners in the race to achieve dominance in “Smart” products and services will be those organisations capable of mastering software driven innovation. Strong foundations in software engineering are a pre-requisite for successful software driven innovation.
The weak foundation paradigm is the industry’s currently accepted norm and is deeply ingrained into most software engineering organisations. Herein lies both the opportunity, the threat and the need for a strategic approach.