DevOps is a culture shift in your organization. Technology enables things inside of this culture, but the culture is important. If you don’t know how to build a new culture and support individuals as they adopt it, often you’re just renaming an existing broken process inside your organization.
Often, I think the failure to reach the efficient levels of a Spotify, Capital One, or any other DevOps success story is because of a failure of management to change culture.
There are any number of anti-patterns for organizations wanting to adopt DevOps. Renaming teams without changing how they work together, including incentives and punishments, doesn’t help. Just buying technology without process and culture is just spending money on new toys. Keeping your existing organizational constraints in place without encouraging and supporting teamwork, changing incentives, eliminating silos/fiefdoms for managers will ensure that you will struggle to make a digital transformation that enables your organization to realize a return on their efforts.
What things do help with culture change? Certainly, many changes start with a team or two, learning about how to build a better software pipeline, both with better code and more automation. They have to be allowed to fail fast, make some mistakes, and review issues without blame. Management must support this.
We need to optimize systems, meaning the flow of code from developer to production system, without optimizing the effort in any team. People need to put theie name on work, owning failures, and celebrating the success of others. Collaborate and pitch in to work together, regardless of the title, position, or responsibility you have been assigned. If someone needs help, they need to be supported and not punished. We need psychological safety to do the best we can, but understand we all need to ask for, or be ready to give, help at some point.
DevOps is teamwork. It’s coordinating and collaborating to agree on the best code and process that gets code to production quickly. Safe, secure, performant, and high-quality code of which everyone is proud. If we’re not, then we ought to be working together to make the code better or agree an exception is allowed for some reason.
Above all, we need to respect the autonomy of individuals and teams. Trust them to get the work done their way and take responsibility for it. Most people are accountable, especially when they can accept and help fix their mistakes without punishment. We all make mistakes, so let’s do our best to move forward and help everyone avoid repeating mistakes with learning, not yelling.