The DevOps question I find myself answering the most often is “What is DevOps?”. The cliché answer is, “It’s the combination of Ops and Dev,” but we can do better than that.
For some companies, it’s a re-label of the systems administrator role, except that doesn’t work. DevOps is more than a rebranded Systems Administrator. For other companies, DevOps is a checkbox. They get a CI/CD tool like GitLab or Azure DevOps. Then they designate a couple of “build guys” and celebrate victory. It’s better than rebranding your system’s administrators, but it still misses the mark.
DevOps is Agile Part 2: Electric Boogaloo. Agile focused on cultural practices. Working in small increments, collecting customer feedback, continuous improvement and sustainable flow are all core to Agile methods. DevOps continues that trend but includes both cultural and technical practices. Software creation and delivery is a complex sociotechnical system and the goal of DevOps is to use cultural practices and automation to improve that system. Most people in the DevOps space learn about technical practices like continuous integration, continuous deployment, automated testing and infrastructure as code. This article, however, focuses on three cultural practices that will help you improve your overall efforts.
One of the biggest challenges to software delivery in traditional organizations is that development and operations have different goals. The main goal of developers is feature delivery. Developers win when features make it to production. Meanwhile, Operations professionals win when systems are kept stable and secure. These mismatched incentives create a system that feels like developers are trying to score goals against operations defenders.
One way to get everyone on the same team is to judge both areas on the same set of metrics. Unified metrics like time to recover from failure, change fail rate, delivery lead time, deployment frequency, performance, and reliability will get everyone aligned and shooting for the same goal. Both sides can work together to automate quality controls and increase speed. With everyone pushing in the same direction, organizations can make more stable systems while quickly delivering features to your customers.
Most developers know about code smells. For non-developers, code smells are signs that a piece of code is low quality and good developers fix these whenever they see them. There are DevOps smells too. Too often, we get into the habit of accepting the inefficient parts of an organization. Barriers stack up and make it difficult to finish work. Develop a sensitivity to silos and manual processes and work to eliminate them.
A few examples of DevOps smells include:
- Silos: If you need to wait for another team regularly to move forward on your work, that’s a problem. Reorganize into cross-functional teams or find ways to automate that handoff so you don’t have to wait.
- Complex change approval processes: Elite organizations can get a change from check-in into production in less than an hour, while it takes more than an hour just to fill out the change paperwork in some organizations. Simplify and automate your change control processes. For example, if you need to put tickets in for every production release, make your automated build system generate those tickets.
- Manual processes for everyday tasks: If you have to do something regularly, you can write a script to do that thing regularly instead.
An excellent place to look for opportunities for automation is in retrospectives. If your team isn’t holding regular retros, put some on the calendar. While you don’t always get great feedback from them, the continuous improvements will add up.
Continuous learning & improvement
Change is constant. Technologies, business models, threats, laws, and regulations are all in flux. Software that was good last month can be invalidated instantly by a new security vulnerability or change in the business climate. The ideal organization has a high trust culture where people cooperate to find the best solutions. Dr. Ron Westrum organizes cultures into three categories.
- Pathological Organizations
These are your standard toxic workplaces. Like a corporate version of Game of Thrones, these places have low cooperation, avoidance of responsibility, and lots of scapegoating. New ideas are crushed.
- Bureaucratic Organizations
These are the types of organizations you see in Dilbert comics. In these organizations, rules are king. Every problem that arises is an occasion for additional rules to try and prevent that problem from happening ever again. These rules pile up into a morass of regulations that stymie anything new from happening. There are tons of narrowly defined roles, silos, and turf wars. Novelty is a problem because it interferes with the existing order.
- Generative Organizations
These are the organizations that you want. Everyone works together to fix problems and integrate novel practices into the company. They deploy tools like blameless post mortems to find the root cause and create a solution when something goes wrong. Turf wars are minimal, and teams have a high level of trust and psychological safety. Generative organizations are fun to work for, highly productive, and innovative.
Your organization may not fit cleanly into these three categories. Most organizations I’ve worked with have some combination of the three cultures or are moving from one cultural type to another.
Improve your learning culture by doing these things:
1) Encourage experimentation by setting aside some time to try out new things and see if they work for the organization. There are many ways to do this, but I’ve seen regular innovation time (20% time, innovation sprints), hackathons, formal experiments, and dedicated resources for company side projects.
2) Encourage psychological safety by implementing blameless post mortems. When things go wrong, people look for someone to blame, and the blame game is pointless and increases the toxicity of your culture.
3) Break down silos and create cross-functional teams. If you have cross-functional teams, they can learn from each other and better understand their roles.
DevOps is cultural and technical
DevOps is more than a box-checking exercise; it’s about improving your culture to create a sociotechnical system for delivering excellent software and achieving business goals. When you do it well, everyone wins, developers are happier, customers are happier, and the business is healthier.
Get started today: First, seek alignment between different areas of IT. Ideally, everyone is on the same cross-functional team but has people chasing the same set of metrics. Second, break down silos and automate manual work. Keep vigilant about the sticking points in your delivery process and seek to automate them. Finally, embrace novelty and continuous improvement. Everything keeps changing.
About the Author:
Dustin Ewers is an application architect currently specializing in DevOps. He’s been building software for over 15 years, mostly using Microsoft technologies. He’s an active member of the technical community, speaking at user groups and conferences in the Midwest.
Removing the Chains of “On-Premise”: Five Steps to Becoming Cloud ReadyRead More
Meet the Virtual Hackathon Planning Committee: Vanessa CooperRead More
Meet the Virtual Hackathon Planning Committee: Rosemary ButtRead More
Four Myths About PythonRead More