Before DevOps, there was Development and Operations, each with conflicting priorities. A developer’s job is to create new products, modify existing products and fix defects in the code. They are measured, incentivized and paid based on how often they push code and deliver new value.
Operations on the other hand is measured on stability, maximizing predictability and ensuring availability. The onus is on operations to protect uptime and minimize outages – both which become at risk from change. This makes development and operations diametrically opposed and naturally at odds with each other.
Where a CTO wants to push the envelop and operate on the bleeding edge, a CIO wants stability, predictability. Both have the value of the organization at heart but in a digital age where software is a corporate asset, there needs to be a better way.
Additional Area of Conflict
If you consider the responsibility chain between Dev and Ops, operations is in charge of infrastructure, operating systems and a good portion of the platform, which includes patching and maintaining the middleware. The development team on the other hand is in charge of selecting the platform and building on top of the platform.
If the development team elects to use the latest and greatest development stack, which is often the case because they fear getting left behind, chances are no one in operations will know how to support or maintain it.
In a traditional development and operation structure, there are silos causing teams to throw responsibility over the wall without concern.
Uniting Development and Operations
The focus of DevOps is to unite development and operations so the company as a whole is better able to deliver software. Although this is the goal, when you boil it down, DevOps is actually about empathy.
When you take down silos and have operations, development, and network engineers joined in a cross functional team, they get to see first hand how their actions impact each other. If a developer in creates a crappy piece of code and operations is forced to stay up all night fixing it, then the developer involved is able to see how their decisions have a negative impact on other people’s lives first hand.
Conversely, if an operations gatekeeper says I’m not going to maintain or manage this code for you, then they have to deal with a worried developer whose performance and job is at jeopardy if operations won’t push and support his work.
With empathy, the culture can become one of collaboration and teams working toward a unified goal. People are forced to care about what the person before and after them do.
Given the reliance on software to be be a source of revenue as well as run and operate organizations, the modern adage is that every company is a software company. By transitioning much of what we do to the digital world, we are able to manage change and create innovation much faster than ever before. But the prerequisite to all this is giving your developers a runway to build and launch code that works. DevOps is that runway.