There have been some great posts recently regarding the difficulting in defining DevOps e.g https://www.jumpcloud.com/what-is-devops-blog/ and following on from that http://www.scriptrock.com/blog/the-problem-with-defining-devops.
My view is that some of the confusion, and the multiplicity of opinions about what DevOps is, comes about because people are using the wrong cognitive frame when looking at DevOps, and maybe a bit of re-framing is in order.
Firstly, a bit of background. In The Blind Watchmaker (1986, pp. 295-296) Richard Dawkins explains that DNA is like a recipe, not a blueprint. You can’t take a slice of cake and then pull up the “cake engineering blueprint” and point to the section that specifies that part of the cake (as opposed to comparing a car or plane part to a blueprint, for example). You have a recipe… but there isn’t a one-to-one correspondence between the recipe and the cake.
“A recipe in a cookery book is not, in any sense, a blueprint for the cake that will finally emerge from the oven…. a recipe is not a scale model, not a description of a finished cake, not in any sense a point-for-point representation. It is a set of instructions which, if obeyed in the right order, will result in a cake…
The genes, taken together, can be seen as a set of instructions for carrying out a process, just as the words of a recipe, taken together, are a set of instructions for carrying out a process.” – Richard Dawkins
DevOps is a recipe, not a blueprint. And it’s a recipe that still evolving to meet the needs of different organisations, in the same way that bread recipes have evolved to meet different cultural and personal preferences.
There are 4 basic ingredients in any bread recipe – water, flour, yeast, salt – and there are core techniques – Kneading, Fermenting, Proofing, Baking etc – but by combining these techniques, adding extra ingredients etc you can have widely different outcomes.
Similarly, DevOps has some core ingredients and techniques (I’ve listed a few in the table below but I am sure you might want to add your own) but how you choose to combine them and what extra ingredients you add will determine if you end up with a crusty white cob, a baguette or a ciabatta.
|“Infrastructure as Code”||Agile|
|Application Performance Management||Theory of Constraints|
|Virtual/Cloud Hosting||Systems Thinking|
But they are all “DevOps” in the same way that all the loaves in the image above are all bread – they share common ingredients, common techniques – but the exact recipe you follow and the end result depending on your organisational needs and preferences.