GP - Fotolia
While imitation may be the sincerest form of flattery, that's all it is: imitation. It might come off as flattery, and the behaviors might be similar or almost identical, but it's not true. It's how we're nearing a cargo cult crisis in DevOps.
I have for years now been a fan of this reality-inducing blog post on cargo cult Agile teams by James Shore and this post by Agile Manifesto signatory Dave Thomas. I saw Thomas deliver this talk -- on the subversion of the word Agile -- at a conference keynote three years ago and found it very convincing.
Both articles talk about the cult-like following and cargo cult-like imitation of Agile. It has been
I've alluded to cargo cult DevOps before, but this time, I wanted to write about it explicitly. In a tweet, I asked people what actions, behaviors or processes they thought
To me, cargo cult programming in DevOps looks like this.
Proper-noun DevOps. Similar to Thomas' talk regarding proper-noun Agile, in some ways, DevOps has become an industry that has lost sight of Patrick Debois' original intentions. When Debois formed DevOpsDays -- the first use of the word -- in 2009 DevOps simply meant to have Agile infrastructure, with development and operations working better together.
Consultants selling DevOps transformations. Consultants will try to bill hours to "make you DevOps." But there is no end-state called DevOps. There is only a way of working, which continues, is never perfect and, by its very definition, requires continuous improvement.
Over complexity. This includes complex frameworks and roadmaps. If you get what DevOps is about, it becomes simpler, and you will be able to eat this elephant one bite at a time. Understanding generates greater simplicity.
DevOps titles and teams. As already mentioned in a previous piece on breaking down DevOps team roles, DevOps is not a fancy, modern term for IT operations. DevOps is a way of working between all development and operations roles -- which includes QA and security and other members of the team. DevOps requires culture, automation, measurement and sharing.
The sardonic tone of this tweet by Roy Rapoport echoes the misuse and misunderstanding of DevOps by making it just modern Ops. The industry can get it wrong.
DevDevOps: a model for shared responsibility and collaborative work between Dev and DevOps.— Roy Rapoport (@royrapoport) May 14, 2018
DevOps silos. By creating a DevOps team, you have missed the point. DevOps is how we work, not where. When you make a designated DevOps team, you may have just renamed your silo.
Thinking it's just about tools and automation. If you are handing teams shiny new DevOps tools and not changing anything else, you have it wrong. Automating everything but not applying feedback and measurement to your automation, not removing obstacles to working efficiently or not sharing your lessons with others is imitation and incomplete dev-and-ops collaboration.
Getting careless in the name of DevOps. I remember the days we were afraid Agile was just "a bunch of cowboys." It turns out some actually were. Some cut corners and did shoddy programming in the name of Agile and so marred its name. Same goes for DevOps -- if you are firing wholesale certain roles and no longer applying scrupulous and meticulous feedback to your release process because you are going lean and applying DevOps, then you are imitating and not understanding.
Steps to understand cargo cult programming
To kick cargo cult programming out of DevOps culture, consider the following four steps:
- Educate yourself and read the original authors of Agile and DevOps, along with their predecessors -- including Patrick Debois, Taiichi Ohno, Eliyahu Goldratt, John Willis, Damon Edwards, Gene Kim, W. Edwards Deming, John Allspaw and their peers.
- Ask why. Define your problem before working out how to solve it, who is involved, what it will cost, etc. To quote John Allspaw:
Reminder that it takes just as much effort (time, money, staff, etc.) to build the wrong thing as it does the right thing.— John Allspaw (@allspaw) April 27, 2018
Problem discovery is under appreciated as a practice in software engineering, especially when compared to problem solving.
- DevOps is, by definition, Agile. So, as you do with Agile, keep any implementations simple and iterative. Learn and adjust continuously from every step of your implementation. Leave the big bang to evolution, and you might be able to avoid the cargo cult programming syndrome.
- Learn and apply emotional intelligence and social science to those you interact with. No matter how many tools and processes and systems you deal with, you are first and foremost working with people.