DEV Community

Cover image for Automation is not DevOps
Chris Dodds
Chris Dodds

Posted on

Automation is not DevOps

A few years ago, if you would have asked me to define DevOps, my answer would have sounded something like “Mumble mumble automation, mumble, automation, mumble mumble, infrastructure-as-code, mumble mumble, strategery.”

Thinking that DevOps equated to automation had mostly to do with the fact that most of the DevOps people I talked to and articles I read really only spoke about automation with only indirect references to anything else.

Implementing automation is definitely a part of what it means to be practicing DevOps, but it’s maybe 5-10%.

The reason that so much of what’s been written about DevOps is focused on automation is that it’s easy to write and talk about tools. Relative to implementing a true DevOps practice, automation is the easy part.

What DevOps actually represents

I’ll use Gartner’s definition to provide a common basis:

DevOps
represents a change in IT culture, focusing on rapid IT service
delivery through the adoption of agile, lean practices in the context of
a system-oriented approach. DevOps emphasizes people (and culture), and
seeks to improve collaboration between operations and development
teams. DevOps implementations utilize technology – especially automation
tools that can leverage an increasingly programmable and dynamic
infrastructure from a life cycle perspective. – Gartner.com

Notice that automation is the last thing mentioned. The main components of DevOps are people and process.

This is the hard stuff, the boring stuff, the stuff no one likes talking about because it involves dealing with people and managing work. But it’s also the stuff that gets shit done.

Automation is a force-multiplier, a lever. That’s all computers and software are in general – levers. Without people and process, automation is just a rusted-up socket-wrench– you can use it as a blunt instrument, but you’re not getting its full utility.

Automation alone can have an impact, but mostly in that it allows you to do stupid stuff faster.

People

At the heart of a successful DevOps practice is a culture that accepts failure, doesn’t focus blame, and demands collaboration and knowledge sharing.

If your team members are afraid of how their manager reacts when they make a mistake, they will not attempt new ways of doing things and the team and business will not move forward. Full stop.

Screwing up is a necessary part of learning and improving, but most companies have a culture that doesn’t allow even minor failure. I don’t know how many times I’ve heard executives earnestly say “Failure is not an option.” completely missing that they were driving their company into the ground as the industry changed and competitors sprinted past them, having embraced failure as an opportunity to learn and do something new.

Accepting failure doesn’t mean not having high expectations or accepting mediocrity. Accepting failure prevents mediocrity.

The expectation for a DevOps team member should be: “Mistakes happen, don’t try to hide your screw ups. Communicate what happened, work on fixing it, and most of all… learn from it.”

Accepting failure directly feeds into reducing the desire to place blame. Worrying about the repercussions of failure and working to deflect blame take away from doing actual work and fixing the original problem, aside from poisoning the work environment.

When co-workers trust that they’re not going to get thrown under the bus, they collaborate and are more productive. Playing the politics of avoiding and placing blame are distractions that need to be snuffed out. If you’re a manager and you allow your team to sit around pointing fingers at one another, shame on you. If you encourage it (and oh, God have I met those managers), I hope your house gets invaded by bees.

If your goal with implementing DevOps was to speed up delivery and become more agile, you have to aggressively remove roadblocks. Anything that stands in the way of the team collaborating with the business, developers, and each other needs to be bulldozed. Fear, politics, mistrust– gone.

It might feel like wrangling a kindergarten class, but you have to get your team to share. There is no such thing as “too busy to train” or “too busy to document”. If only one person knows how to do a thing, they become a bottleneck that can shutdown your DevOps factory.

Knowledge sharing has to be the expectation. If there is someone on your team who can’t be coached to not keep things secret, they need to work somewhere else.

Process

You can have amazing automation and culture and still not be practicing DevOps, because practicing DevOps is almost entirely about process.

If you want to “do DevOps”, process is where you start and will give you a much higher return on investment than the automation that follows. Without process, there will be too much chaos to maintain a healthy culture and any tooling you build will likely be solving the wrong problems.

Start by getting visibility to the work your team is being asked to perform. This isn’t just for managers, the entire team needs insight into the work backlog, if for nothing else than to prevent duplication of work (“I already have a script for that.”) and provide time-saving context (“Doing X will cause Y to fail.”)

If there are team members who won’t share what they’re working on or only offer vague details, that has to end. Letting people slide by with “I’m working on server things…” during your daily standups (and yes, you should be doing standups), doesn’t fly. “I’m doing X, Y, and Z, today.” is the answer you’re looking for.

Without that transparency, work goes into a vortex of suck. If work is (or isn’t) being done, the team needs to know, because every unknown status compounds delays, reduces quality, and plants the seeds of distrust. A successful DevOps practice requires accountability, not for the sake of holding someone’s feet to the fire, but just so everyone knows WTF is going on and can plan accordingly.

All this requires commitment and continual reinforcement from teammates and management. There is no “We set up a kanban and no one used it so we stopped.” Failure is an option. Not knowing the answer is an option. Working ad-hoc and being lazy about process is NOT an option.

To summarize, if you are not managing work in an Agile way, using Scrum or something similar, you are not practicing DevOps.

It turns out that there are lots of great resources on the non-automation facets of DevOps. Two good places to start are The Phoenix Project and Effective DevOps. The reviews for Effective DevOps are particularly fun because most of the complaints are “the author didn’t talk about automation”, which means she got it right.

The trick when you’re doing research on DevOps is to not search for “DevOps”, because you’ll mostly get 1.) articles that are about automation, and 2.) “DevOps” job postings that are really just sysadmin jobs.

Instead, read about Agile and Lean. Read about Personal Kanban. Read things that make you a better person who can treat other humans with empathy. That’s what will make you a “DevOps Ninja”. Focusing entirely on automation just makes you a code monkey.

Originally posted on chrisdodds.net

Top comments (9)

Collapse
 
shonfeder profile image
Shon Feder

I love that formulation of DevOps. It strikes me as a dead on diagnosis of the shortcomings and disorganization of DevOps, but simultaneously a valuable pointer towards the great potential as we work out solutions in this problem space.

Your second point seems to be a corollary of Conway's maxim "that organizations which design systems (in the broad sense used here) are constrained to produce designs which are copies of the communication structures of these organizations." Is this part of the series of lectures you referred to? youtube.com/watch?v=5vQ4CekU6sg&t=...

Collapse
 
aoalfred profile image
aoalfred

Great points. I wrote an article that echoes this using system dynamics and the impact to service rates. The tl;dr version is - switching from functional work design and technical depth in a few areas to a horizontal work design that requires technical depth in many areas has a very high chance of setting you back. Get the people and process thing figured out first.

Link here.

Collapse
 
cristoirmac profile image
Chris McFadden

Good post. Completely agree that DevOps is simply agile development, with the proper emphasis on the disciplined lean engineering practices - rather than the shiny bells and whistles that tools have. In that sense DevOps is just a new term to describe Agile since "Agile" was unfortunately co-opted by the consultants and vendors. I expect that within a few years the term DevOps will be so over used and adulterated that a new term will be needed again by the practitioners.

Also, I think that DevOps and Scrum have some fundamental compatibility issues. I highly recommend using Kanban and Continuous Delivery, rather than Scrum.

Collapse
 
verdverm profile image
Tony Worm • Edited

For the organization trying to change their culture, the GROWS method gives a loose formula. The first step is to get buy in from everyone in the org that this will be painful in the moment but better in the long run. If you attempt to become. "cloud-native" without cultural changes you will suffer like IBM is.

Collapse
 
lukaszkuczynski profile image
lukaszkuczynski

Good point with the communication. I am afraid it is not obvious for everyone - knowledge sharing. What is your suggestion to encourage guys to share? Some, I guess, are afraid of being .. replaced :)

Collapse
 
liquid_chickens profile image
Chris Dodds

Leading by example helps - documenting everything you work on and presenting overviews to the group when possible. Changes to on-call can help too. "If your stuff isn't documented, I'm going to call you instead of troubleshooting on my own."

Collapse
 
michaelha profile image
Michael Ha

Great post!

Collapse
 
singaporian profile image
Michael L. Abramovich

Great article.
What about discipline in DevOps?

Collapse
 
liquid_chickens profile image
Chris Dodds

Not sure I understand the question. Is discipline needed? Yes, especially for "don't automate stupid processes".