Agile transformation journeys typically get started with goals that may strive to reduce cycle time, bring predictability to software development, reduce defects and risks to business. The most challenging, and impacting part of this journey is to introduce lasting changes to engineering practices, and collaboration across teams involved in software craftsmanship. Essentially, embracing DevOps.
DevOps is a practice, and a movement that aims to create a smooth flow of software from an idea to its use. DevOps also aims to make software releases frequent, routine and stable. High performing teams collaborating effectively deliver frequently, in a stable manner and apply what they have learnt from each iteration.
Creating a continuously improving DevOps movement is challenging. DevOps practices impact multiple areas across people, processes and technology. Sivaguru in his blogpost on DevOps and the software lifecycleprovides a good introduction to all things that are DevOps.
Starting a DevOps improvement initiative may appear daunting – enterprises have many areas where improvements must be tackled simultaneously – testing, deployments, environments, tooling and so on. Successful DevOps initiatives usually have a sequence of activities across engineering, software development and people processes.
Creating a programme view for DevOps improvements helps leaders manage this complexity. Smaller, defined chunks of work with clear objectives, success criteria and budget provisions help teams improve through several iterations. This also helps teams pivot based on learning from earlier stages and to move forward at their comfortable pace.
The picture below provides a view in to one such programme approach. While, each organization is unique and the approach must be contextualized, this is a phased time-bound approach that sets the objectives at every level and raises the bar in stages.
Cultural and engineering indicators of success are useful to understand whether teams are maturing and have sustaining practices at the end of every stage. Choosing right metrics, deeply influences engineering practice and helps enhance collaboration between teams.
A statement that is often heard is that organizations do not see any visible improvement to frequent and stable deliveries even after improvement initiatives on deployment automation, CI tools and test coverage. In many of these cases, managing these individual initiatives as a phased DevOps programme with common goals does the trick . A programme view allows managers to get a sense of where they are in the DevOps landscape and navigate better towards success.
In the next few posts, I hope to cover some examples of making choices in each area of the overall Devops programme to help create sustainable changes to DevOps culture in your teams.