What’s the main obstacle to implementing a DevOps approach in your organization? In a recent “State of DevOps” survey conducted by Redgate, the second most popular answer to this question, after “lack of skills”, was “lack of alignment between development and operations teams“.
Hmm, so you can’t do DevOps until you have a DevOps culture. It’s an organic, culture-driven process and a culture only tends to infuse an organization through practice, so surely one is left trying to put the cart before the horse? It feels like a slightly crazy situation, but there are perfectly reasonable explanations for why it arises.
As William Brewer points out, no development methodology, Agile or Waterfall, has ever advocated having a ‘Chinese wall’ between operations and delivery, and yet it exists in many workplaces, mainly as a natural consequence of human nature, and organizational expediency. Development and Operations have traditionally had very different business objectives. The Dev team with a narrow focus on delivering a particular application, the Ops team with a much broader remit to maintain the security and smooth running of all of the organizations business systems, and ensuring the correct ‘distribution’ of limited hardware budgets and resources across all teams and business applications competing for these resources.
I think that the survey answer masks a very real difficulty: development teams and operational teams are already fairly closely aligned in organizations that have a single application that is being developed in-house, and which dominates the business. Where an organization has a whole range of applications, mostly bought in, but essential to the business, together with several active development projects, it just doesn’t seem so clear-cut. The objectives and priorities of Ops and Development are bound to be different. It is unwise for a company like this to pretend to be a start-up.
So just how does an organization who sees value in DevOps practices overcome this lack of alignment between development and operations teams, without suddenly trying to behave like a startup? How can you encourage good people to work together without artificial boundaries? First, you need to be clear about which IT processes, such as deployment, actually require Dev and Ops to work together. Then, find simple ways to start collaboration, one project at a time. I like some of the ideas expressed by Bob Walker in describing the process of DevOps adoption at Farm Credit Services of America. They were able to express their DevOps goals in one very simple question: what needs to change in order for us to be able to deploy to pre-production every 45 minutes? Developers, DBAs, web admins, mangers, everyone were encouraged to contribute their opinions. With a common goal established, suddenly the conversations started.
Ultimately, if your teams are already cooperating whenever necessary, then it’s easy to introduce DevOps; but if they are already cooperating, then maybe you see no need to do so! Perhaps we can best encourage a DevOps culture just by making sure that cross-function cooperation is actively rewarded and encouraged by management. Tell me there is more to it than that!