Elephant in the room?
When people talk about DevOps, most people don’t know what their talking about or usually they only know part of what is DevOps. The blind men describing an elephant is what comes to mind.
One blind man says he feels it’s like a rope. The second blind man said it’s like a thick branch of a tree. The third blind man said it’s a huge wall.
DevOps is the elephant in the room.
We tend to only “see” one part of the elephant and we view it from our own role or perspective.
For many people, the answer of what is DevOps tends to falls between these kinds of viewpoints:
- To systems administrators, it’s about use of Automation techniques to manage many machines and deploy code (i.e.Ansible, Kubernetics).
- To a developer, it is a consistent code development environment and automated integration system (i.e. Docker, Git).
- To a project manager and stakeholders, it is an Agile development methodology for software and product development.
These answers are both right and wrong at the same time. This is where the understanding of Strategy and Tactics come into play. With this, you can recognize and understand the “elephant in the room” and how to use these tactics and strategies.
The Difference between Strategy and Tactics
The culture and management practices of DevOps can be looked at as the Strategy. The implementation DevOps in the form of tools and processes used are the Tactics. One is at a global level, the other is the “hands on” task(s). Strategies don’t change often. Tactics do change depending on the situation. It’s an important to understand these perspectives to understand what “DevOps” really is.
What is Strategy from the DevOps point of view?
Strategy is the plan to archive a long term goal. DevOps may employ many different strategies. Here are a few examples:
- Continuous integration is a strategy.
- Break down silos is a strategy.
- Lean software development is a strategy.
- Treating servers as cattle not pets is a strategy.
- Sizing teams no more than you can feed with two pizzas is a strategy.
These strategies are NOT always going to be appropriate for your shop for a variety of reasons and may need to be modified or other alternative strategies may need to be used. SCRUM vs Lean? Up to you and your team.
What is Tactics from the DevOps point of view?
Tactics is the actual methodology of implementation of a strategy. Depending on your own needs and circumstances, the tactics you chose depend on the strategy your seeking to fulfill. Here are some examples of of tactics:
- Using a Git shared repository is a tactic for Continuous Integration .
- Using Kanban software and workflow is a tactic for Lean software development.
- Using Ansible to setup standardized servers is the tactic for the “cattle not pets” strategy.
- Having small team of five people consisting of people from Operations, Development and Quality Assurance is the tactic for the two pizza team and break down silos strategy.
Tactics may change for different systems you manage. For instance an MDM (Mobile Device Manager) platform would be the appropriate choice for managing Smartphones NOT Ansible or Chef and in this sort of environment, Docker may not be appropriate for development of the front end app.
Implementation is the key
Even after understating the Strategies of DevOps and developing the Tactics to implement DevOps, if people are not DOING the tasks to implement the tactics, just doing what they always done, they don’t have a DevOps shop. People need to participate. The place to begin is with collaboration and creating an environment where there is trust and the people involved are actually carrying out the tactics as day to day activities. To get collaboration, people need to have ownership in the project and get recognition for their part. Create an environment where people are willing to take risks and are not afraid of failure. To do this, it’s important that failure is valued as part of the learning process instead of blaming people or finger pointing. In fact back in the 70’s at IBM, Tom Watson Jr. recounts calling to his office a young executive made a $10 million dollar mistake. Expecting to be fired, the executive presented his letter of resignation. Tom Watson just shook his head:“You are certainly not leaving after we just gave you a $10 million education.” Learning from failure is part of IBM s culture, it should be part of every successful company s culture.
There is NO right way to do this
You can read books like The Phoenix Project or The Goal (Which The Phoenix Project is based on) and apply the Theory of constraints, or read any number of books written about DevOps. However, the original talk they done on 2009 10+ Deploys Per Day , Allspaw and Hammond didn’t do something all that new as these concepts were done by others. Lean manufacturing is where Kanban and Lean software development came from. Site Reliability Engineering , which is in principle DevOps, was developed at Google around 2003, well before the Velocity 9 conference. At Netflix, they weren’t thinking about DevOps when they developed their “DevOps” shop.
I am of the opinion that you have to examine BOTH the STRATEGIES AND TACTICS of what worked at various organizations and what didn’t and focus on collaboration. Building a collaborative environment that encourages ownership of a project, gives recognition and encourages people to take risks and not be afraid of failure is the key first step to creating a DevOps shop. Doing this will make adopting the “Elephant in the room” less intimidating and will put DevOps in your grasp.
Feel free to give me your comments and suggestions.
Until then, have a great day.