The reality television show Masterchef is extremely popular. Its popularity stems from the fact that it demonstrates how ordinary but passionate people can, with a little competitiveness and a lot of mentoring become masters in their craft. The Masterchef analogy can be applied to the DevOps journey. Any person, team or organisation can become high performing, responsive and effective with enough passion, mentoring and a burning platform for change.
DevOps isn’t just a set of recipes for deploying software, or the joining together of two disparate technical disciplines. It’s a philosophy shift that is predicated on the belief that your customer will no longer wait for you to release new features, they’ll go to your competitors because they are doing it faster.
As part of an Agile journey, DevOps helps organisations to become more efficient in delivering value (what we call the effective-efficient loop). In order to meet this challenge, you need a consistent approach to infrastructure setup, automated integration and deployment processes; and quality deliverables that are able to hit the production environment whenever the business needs it to.
In this blog post I will be deconstructing the DevOps practice using the Masterchef analogy so that we can see how each element helps in closing the effective-efficient loop to create value.
Let’s start with the team. Universally this is the most important factor in the success of any venture. I have seen good teams perform amazing feats with little support, structure, or budget but with a shared vision, an unrelenting passion to commit to that vision and to be able to work with one another to ensure that everyone is contributing. The contestants that are most successful in the Masterchef Pressure Test team challenges are those who are able to self-organise, recognise others’ strengths, and work together to get the job done. Only through collaboration can these individuals produce a truly masterful dish under pressure.
In DevOps this requires a team that works together to adhere to good software practices and to build quality into their software. A clean and consistent process for building and deploying into environments is key to the successful delivery of value. This is accomplished by great teams who trust each other.
Development and Operations teams have been separated and siloed through the implementation of plan-build-run organisation structures and no longer trust one another. These teams should be combined once more so that they appreciate their different skill sets and responsibilities. This will help unify their joint roles in being accountable for realising business value through releasing software into the production environment.
In Masterchef, the chefs act as mentors and motivators for the team as well as the visionaries for the creation of the dish. This is a little different to head chefs in a real restaurant where command and control is traditionally the norm. DevOps leadership is vital for a team starting out. DevOps leaders straddle both development and operations practices in order to harmonise teams in the new paradigm.
As we have all seen, great meals require a clean bench, a good oven, a sharp set of knives, bowls and spoons so that we can cook with confidence. In the DevOps kitchen we have our build tools, our infrastructure and containers, and our monitoring tools.
The basis of great cooking is the reliability and the consistency of the kitchen. This is very true of DevOps – the key is consistency. Selecting automated processes for creating environments, building and deploying software in a dependable way reduces the risk of:
- Environments being created as “masterpieces” – hand-crafted environments with subtle differences that may cause unpredictable software behaviour (and are hard to debug).
- Software reacting differently in different environments due to inconsistent versions, dependencies and incomplete builds.
- Poor compliance with quality checks due to incorrect testing practices between environments.
Our tools encompass source control management, build artefact management, and release management that ensure a consistent approach to releasing software into production.
Virtualisation and cloud technologies have really increased the tooling capability to automate the process of provisioning environments in a consistent and reliable manner. Containerisation provisioning and monitoring technologies like Docker, Pivotal’s Cloud Foundry and serverless technologies like Amazon Lambda not only lower the cost base of operational support of applications but help to optimise efficiency of the infrastructure that applications run on. Imagine an oven that can heat up and cool down when it senses that the meal being cooked requires it.
The recipe is where all the magic happens in Masterchef. It is the process that brings all the aspects of a cook together and creates the delicious meal. The DevOps recipe ensures that we are doing things the right way, incorporating the practices like measuring cost of delay, limiting work in process (WIP), slicing stories and orchestrating the processes to build and deploy software.
Reducing the batch size of software and delivering value in smaller but faster pieces is a bit like breaking down a recipe into its requisite parts. Build up the dish in pieces and plate up as you finish each piece. Aligning the size of the pieces of software being developed with the cadence of delivering that software can be achieved by adopting a service-oriented-architecture and microservices approach.
The recipe can be prescriptive so that new chefs are able to follow each step but as they become more experienced they can improve the process with their own style and flair. While this seems to be at odds with the tenant of needing a consistent approach, there is a recognition that all processes can be improved by people and therefore adaptation of processes are a normal part of continuous improvement, a major tenet of Agility.
In order to become a truly great chef, you have to practice, practice, practice. Being able to build and deploy software, quickly and safely in a consistent manner takes practice too. DevOps requires deploying into various environments over and over again. This enables the team to build up a level of mastery as well as banking value early.
Fresh, high quality ingredients are integral to producing a high quality meal. Sound development practices, coding standards and lean ideas and are also key ingredients to producing a quality result in software too.
Test-driven and behaviour-driven practices as well as refactoring and technical debt recovery ensures that the software is of the highest quality and focusses on having a stable production environment at all times. These assist in reducing inconsistencies and improving the overall quality of the software that will be deployed.
The final dish in DevOps is represented by the quality of the working software. This not only includes the functional parts of the software, but the infrastructure description (infrastructure-as-code) and automated test scenarios as well. These can all be baselined, and packaged up as release candidates so that they can be propagated across environments in a consistent fashion.
So as you can see, just like Masterchef, there are many aspects to DevOps that need to come together in harmony to create a truly masterful result. DevOps is an important capability that accelerates your Agile journey because it fosters collaboration, discipline, alignment to quality and realising business value. The final result – a DevOps degustation creates a delightful customer experience.