Digital Transformation and Competitive Advantage through Continuous Delivery
Business Competitiveness through Incremental First Mover Advantage
First mover advantage is critical to any business that wants to be competitive in its chosen market. Today, this is not just important in delivering products and services but also in the software platforms each company provides to its customer base. Satya Nadella, CEO of Microsoft said, “Every company is a software company. You have to start thinking and operating like a digital company.” This means the way companies deliver innovation through software can be a real source of business competitiveness and agility. Any company that can deliver customer value through continuous delivery will have an incremental first mover advantage on a daily basis. This can not only lead to a competitive advantage but also potential market dominance as illustrated by companies such as Amazon, eBay and Netflix.
Digital transformation has happened over the past 100 years in the delivery of physical products through the integration of manufacturing and supply chains. In 1913, Henry Ford installed the first moving assembly line and reduced the time it took to build a car from more than 12 hours to two hours and 30 minutes. He saw that he could perform a business transformation by automating a “craft” process made up of individual common elements. Now fully automated and integrated production lines can produce a car every 90 seconds. This can only be done when the configuration of all elements of the manufacturing process which produce the final products are operated by fully integrated software systems. So why is it so difficult to emulate this in software engineering?
To achieve continuous delivery, we need to look at this as a system engineering problem rather than a software innovation problem
Digital Transformation of the Software Delivery Process
One misconception is that software engineering is a “craft” profession. Companies focus on the invention process where each software element is created through the individual skill of each software engineer. Many believe it is not possible to automate this craft process. In addition, in many software companies, each project team has its own individual delivery process and the outputs are then handed onto a separate team for delivery into a production environment. This results in multiple delivery processes for similar types of artefacts and no single “owner” of the process from idea to production and support.
To achieve continuous delivery, we need to look at this as a system engineering problem rather than asoftware innovation problem. If each software item can be delivered as regular artefacts then this means that we can achieve digital transformation by focusing on lean concepts such as flow, pipeline orchestration, impedance matching, waste reduction and dependency integration.
Continuous Delivery through DevOps
Using DevOps tools, practices and techniques enables not only, the digital transformation of the software process, but also powers this transformation through the collaboration between all the teams involved in the delivery process from idea to production. DevOps concepts, such as configuration as code and version control of everything, can enable the complete automation of the delivery process where the state of configuration of every item of the process is always known. Here all aspects of the system, from compute power to infrastructure provisioning through to application and data delivery, are engineered to enable the flow of value from artefact creation through to application use. This reduces reliance on implicit human knowledge and key person dependency inherent in many of the delivery processes used today. This, in turn, improves quality and stability by significantly reducing the opportunity for human errors and time delays cause by the “risk of touch”. Using DevOps tools means multiple identical systems can be created repeatedly and reliably. If any configuration element is found not to be correct then it is codified and captured once. From then on, this new codified knowledge is used to deliver any new or replacement systems automatically. This has a positive feedback effect on business profitability because it means, not only are the cost of operations reduced, but also this saved cost can then be invested in creating and delivering value through software innovation.
Achieving Continuous Delivery through Business Transformation
Creating systems which have their configurations and states fully defined is not easy. It involves investment in the codification of systems similar in complexity to creating integrated manufacturing production lines. Indeed, it is made even harder in that, the “machines” used in the software delivery process are virtual, in the sense that the software toolset used is invisible to the human eye. Making these tools pipelines, and the progress of software artefacts through them, visible is critical to enabling better management of the system itself.
Tools are a necessary but not sufficient condition for DevOps to succeed. In addition, it is important to understand that business processes and cultural habits also need to change. Because of previous delivery issues, most companies will have additional governance processes and separation of duties. This will naturally create silos which are antipatterns to DevOps success. Breaking down these barriers must be done in a sensitive way so as not to imply lack of commitment or professionalism from either side. Building relationships and demonstrating deployment competence of the development teams are often the only way to change opinions. This digital transformation will often experience resistance unless the benefits DevOps can be clearly demonstrated. This takes time and effort but the rewards are potentially revolutionary in terms of business results and organisational performance.