We have published a set of resources for people who have attended one of the Experience DevOps workshops. Our new Resources page contains links to books, newsletters, articles, slides, along with photos and brief descriptions of the activities in the workshop.
First of all, let me apologise for the Upworthy-style headline, I just couldn’t resist! Of course, there are probably a lot more than 3 reasons why building a DevOps culture could fail, but I’m going to concentrate on a few that I’ve experienced.
Developing a DevOps culture can be tricky. It’s not a natural fit for some people, which is why there are divisions between dev and ops in the first place. But before we delve too deep into the DevOps problem, let’s first have a look at what an organizational culture actually is…
“Culture is how organisations ‘do things’.” – Robbie Katanga
“The sum of values and rituals which serve as glue to integrate the members of the organisation” – Richard Perrin
“Organizational culture is civilisation in the workplace” – Alan Adler
These are just a handful of definitions from a Harvard Business Review on why we should care about organizational culture (you can find it here). As you can see, there are many different definitions of an organisational culture, so we have to be quite careful when we use the term to describe DevOps.
The problem with culture is that it differs from one organisation to another, so there’s no single universal way to affect, change or develop a culture. What works in one organisation, might not work in another. This is why nobody has ever come up with the magic “DevOps culture” recipe, because it just doesn’t exist (or rather, an almost infinite number of them exist).
I like to think of an organisational culture as a system of “norms” – an approved way of doing things and equally a way of discouraging “bad” behaviour. Of course, it’s usually implicit, but is always there, bubbling just below the surface.
I like this definition because it also works well in the sense of a “DevOps Culture” – a system of standard behaviours that blur the boundaries between dev and ops by encouraging collaboration and goal sharing (these are the “approved ways”) and discourage silos and separation (the “bad behaviours”).
How Do You Develop A Culture?
Developing a culture is really easy. You just start off with yourself, decide which culture you want your organisation to have, and then only hire people who fit perfectly within the culture. Of course, you need to be a 1 person start-up, but that’s pretty much the only caveat!
In reality, we mostly work in existing organisations, complete with their existing personnel and their existing culture (and sub-cultures). Building a DevOps culture in this situation can be very challenging, and that brings me to my list of 3 reasons why your attempts to create a DevOps culture could fail…
Reason 1: You Have to Hire the Right People
At some point you’re going to hire new staff. These could be new devs, ops, testers, product owners, whatever. Anyone who works on the software delivery team can have an impact on your culture. When you hire these new people, it’s essential they fit in with your vision of a new DevOps culture, or your existing DevOps culture if you already have one. But that’s not as easy as it sounds. How do you truly get a measure of a person’s culture through a couple of interviews? Well, it’s pretty hard. That’s why companies who value their culture adopt a “slow to hire, quick to fire” mentality. In these organisations, the hiring process can often take several weeks or even months to complete, and involve all sorts of jumping through hoops, but the reward is worth it. Does your organisation have this sort of diligence and patience when it comes to hiring anyone on the delivery team? If you value your DevOps culture, you need to be obsessive about cultural fit when it comes to hiring. You need to make sure your new hires are going to work within the existing culture, won’t try to oppose it, and will value it exceedingly highly.
Reason 2: You Need to Fire the People Who Don’t Fit
Of course, the second part of “Slow to hire, quick to fire” is getting rid of people who don’t fit the culture. When was the last time someone in your organisation was “let go” because they didn’t fit the culture, no matter how good a programmer/engineer/tester they were? It’s very rare indeed.
Zappos are a good example of a company who value culture above all else during the hiring process. They actually offer new applicants a bunch of money (up to around £3,000) to actually leave. It’s their way of incentivising applicants who feel that they don’t fit the culture, to take the money and run before it’s too late! And it’s probably wise to take the money if you don’t fit the culture, because they won’t waste time when it comes to getting rid of anyone who isn’t the right fit.
“We feel it’s a bigger risk to keep a bad employee than it is to let them go” says Jamie Naughton of Zappos (read more of what she has to say on the matter here)
Unfortunately, I’ve met very few organisations that are this obsessive about culture when it comes to hiring and firing. In fact, I often get the impression that culture is almost entirely overlooked when hiring, especially when hiring engineers. For some reason it seems almost acceptable to focus entirely on technical skillsets when hiring these types of employees and that is a huge risk to a DevOps culture.
Reason 3: You’ll Need to Remove Any Existing Cultures That Work to Oppose a DevOps Culture
If you think creating a DevOps culture is hard, wait until you try to eliminate an existing culture! That’s the thing with cultures, they’re not tangible things, you can’t just catch them and throw them in the bin! Blame cultures are fairly common, and they’re highly divisive – it’s almost the opposite type of culture to a DevOps culture. Anyone who has worked in an environment where there’s a blame culture will know how it spreads, and can quickly become part of the fabric of an organisation. It can be highly toxic. Eliminating this sort of culture is exceptionally hard, as people might need to entirely change their behaviour – unfortunately you can’t just fire everyone and start again!
When developing a DevOps culture, we normally have to challenge and overcome a culture of “throwing it over the wall”. This is a culture where teams don’t collaborate and support one another, and virtual walls exist between teams and departments. We often describe this situation as working in “silos”. In this environment, Dev teams usually don’t work very closely with the Ops teams, their respective disciplines are treated very separately, and their responsibilities are very clearly different. This is precisely the culture we need to replace, but the danger is that teams and individuals will revert to bad habits unless we make a concerted effort to ensure the new DevOps culture takes root, after all, as the saying goes, “old habits die hard”.
To learn more about the challenges of building a DevOps culture, book a place on an Experience Devops Workshop!
In a recent talk at PuppetConf 2013, co-author of Continuous Delivery and DevOps champion Jez Humble advocated passionately for not hiring in DevOps ‘experts’ but for cultivating a culture of collaboration and learning (slides 5-7)
This approach of nurturing a DevOps culture within your own organisation is what you will take from attending one of the Experience DevOps workshops; see http://experiencedevops.org/ for forthcoming workshop dates and locations.