The Need for Speed in the Software-Driven Business
In my previous post on the digital transformation journey towards a software-driven business, I discussed the importance of user experience and the need to leverage the right software platforms. Today we will discuss the third high-level question posed there: “What process will most rapidly drive my transformation into a software-driven business?” Or to quote Maverick from the movie Top Gun, “The need for speed!” My Iceman for this article is Shriram Natarajan, my colleague at Persistent Systems and an expert on agile methodologies and DevOps.
Volumes have been written on these subjects, and it is not our intent to summarize this material here. Rather, we focus on how these techniques very naturally support the short delivery cycles needed for success in the high-stakes world of digital transformation, where the cost of failure is high: lost competitive advantage, disinclination for future widespread innovative projects, and even obsolescence.
Software engineers cherish correctness and attention to detail. Despite this, software projects continue to lag behind other engineering endeavors in metrics such as quality, predictability, timeliness, and completeness. The usual reasons trotted out – that it is “more art than science”, that bridge makers do not get different destinations midway through the build – are cold comfort to the individual/team/enterprise having to deal with the consequences of buggy/late/over budget/incomplete projects. And in today’s digital environment, every enterprise has to deal with software – love it or hate it, you cannot ignore it.
Agile methodologies in software leverage the very characteristics of the problem and convert them into cornerstones of success. Recognize that the problem space is dynamic, and you eschew static methods to simplify it. You use the very dynamism of scope, schedule, and completeness to establish a process where the chances of success aggregated across multiple iterations are greatly increased. Agile methods break down complex problems into easily consumable and verifiable chunks of functionality. This also has the implicit advantage of being able to ship product incrementally and iteratively. The ability to capture the consumable, tested, acceptable functionality at the end of every iteration is a key tenet of DevOps. Having a robust continuous integration and continuous deployment mechanism ensures that your release train does not go down the wrong track and continues to delight customers every step of the way.
Agile methodologies have been shown to be effective in engineering teams, with improvements in predictability, quality, and business value delivered. Agile is scaling both in number and in purposes (i.e., in terms of number of engineering teams, and across different organizations within the company). Scaled Agile Framework (SAFe, in which Persistent is a partner) is a great approach to scale up agile methods and enable nimbleness at the enterprise level.
There are a few “must-have”s (or “must-achieve”s) for enterprises to successfully become agile:
- Establish (or reinforce) a cultural shift to agility from the executive suite on downwards. The metrics and control that executives expect of software projects need to align with the agile processes implemented.
- Foster a culture of mistake forgiveness. In fact, actively encourage people to make small mistakes so long as it furthers the team towards the end goal. “Small” can be defined by the time it takes to fail, or by the scope of the problem being addressed. The entire agile world spins on the notions of “we do not know yet” and “we think so but could be wrong”.
- Enable successes to be codified and built upon. Based on the specific agile practices you adopt, you will have the means to quantify and measure forward progress while recognizing the missteps along the way. To crystallize success, you will need to adopt a strong DevOps posture.
In today’s digital environment, the transformation to a software-driven business has to proceed rapidly and continuously. Incremental introduction of features, rapid in-market experiments of feature acceptance, and nimble re-engineering based on market feedback are all necessary to stay ahead of the competition. Our experience is that enterprises that are successful in transforming themselves in this manner tend to adopt agile in a big way. This success is in large part driven by their ability to forgive themselves for the small failed experiments in the grand journey.
Like Maverick and Iceman, they don’t fear the Danger Zone!