I have noticed a trend in the evolution of teams when it comes to DevOps maturity over the years, which I now call the winding road to maturity. Surprisingly, this pattern is seen in a lot of different work environments: deployment automation, test automation and many others. I will use the deployment automation scenario here but, believe me, it applies to many other technical aspects as well.
Here is my current model, which I have shared with many clients and colleagues over time:
Stage 1: “Do it All Manually.” – We do everything manually, each time. We do all the steps in our checklist for deployments or test or whatever it is that we consider to be our daily job. Not a lot of optimization at this stage and it feels all very heavy-handed.
Stage 2: “Do the Necessary Manually.” – Over time, we realize that there are many steps that we can skip if we do a quick impact assessment and, based on that assessment, only execute the steps that are required (for instance, not redeploying unchanged components or not executing tests for functionality that has not changed). We are now in a world where each deployment looks different based on our assessments. Now, this is difficult if there is a high turnover of resources or when transitioning to newbies as they wouldn’t have the skills/knowledge to do reliable assessments.
Stage 3: “Automate the One Way.” – Then we discover automation. However, automation of the impact assessments is more complicated than automating one common process, so we go back to running all steps each time. This reduces the effort for deployments but might impact the actual duration.
Stage 4: “Optimize for Performance.” – Once we have mastered automation, we start to look for ways to optimize it. We find ways of identifying only the steps that are required for each activity and dynamically create the automation playbook that gets executed. Now we have reduced effort and are continuing to reduce overall duration as well. We are an optimizing organization based on reliable automation.
Stage 5: “Cloud Barrier.” – In this new Cloud-based DevOps model, we do everything each time again. We completely instantiate the environment (infrastructure as code). In the scenario of test automation, we create several environments in parallel and run tests in parallel to reduce time rather than basing a subset of tests on an impact assessment.
Please feel free to use my model to help chart out your organizational journey. It is possible to short-cut the winding road to maturity but, as is the case with cycling up a mountain, a short-cut will be much steeper and will require some extra effort. See you on the top of the mountain!