Development and operations have fundamentally different goals, so some people are wary about how they can collaborate in DevOps. With increased automation and continuous delivery, operations engineers in particular are worried their responsibilities will become obsolete. Not true! DevOps actually creates opportunities for everyone to benefit.
In the traditional working environment, developers are responsible for requirements analysis, design, coding, debugging, and testing. Operations engineers are responsible for maintaining the infrastructure, systems administrations, network support, release, and deployment. Consequently, the goals of development and operations are often quite different; the developer is constantly seeking to create new code and respond to changing needs, while operations is focused on maintaining stability and reliability.
Each group’s intentions make sense to them, and they’re equally important. But because developers are measured by the new features they deliver and operations just wants the system to stay predictable, stable, and secure, this tension can give rise to conflicts between them.
This is exactly why DevOps, which acts as a bridge between developers and operations, is so important. DevOps is a cultural approach that promotes better communication and collaboration between the two teams, with the ultimate goal of having more functions within operations become fully automated—including a practice known as infrastructure as code. DevOps has given rise to automated practices that programmatically build the infrastructure, which significantly helps with security, reliability, and scalability.
Over the last few years that DevOps has become popular, it has created a few misconceptions in some software organizations. The most prominent one is that DevOps means the end of operations jobs. Because the waterfall cycle of develop-test-release has been disrupted, automation is encouraged, and continuous delivery is a must, people think developers will take responsibility for the quality of the release environments, rendering operations engineers obsolete. I am in operations, so this issue was of great importance to me.
I’m here to tell you that this is nothing more than a myth. DevOps is not killing jobs—at least not for any operations engineer I know. In fact, it has directory led to engineers like myself gaining better technical skills and knowledge.
Operations and development have traditionally been kept separate for a number of reasons, and there are challenges to combining them into one organizational structure. But instead of viewing this as a problem, we should consider it a golden opportunity to learn new approaches.
I have been working in software configuration management for more than four years, and based on my experience at my organization, in our old environment operations engineers were given lower importance than developers. But DevOps has actually elevated our status. I see DevOps as an opportunity to learn new things and make myself more technically skilled—and, therefore, more valuable. One of the main goals of DevOps is removing silos, and with that increased transparency, developers and operations engineers learn new practices together as a team and gain a better understanding of the things we do.
Until now, operations engineers performed a primarily mechanical sort of role in organizations. DevOps is giving us an opportunity to change our image by focusing on automating manual tasks. To do this, we need to learn development skills, and DevOps makes it easy because we’re working right alongside developers.
Developers can also learn much about operations; it’s an opportunity for them as well. Extreme Programming promoted the concept of paired programming, where two developers sit side by side and work together on the same technical task. I like to think of it as being similar to a race, where one person is the driver who operates the vehicle and the other is the navigator who ensures that we are headed in the right direction. Because two heads often are better than one, paired programming has been deemed quite effective and preferred by many agile developers.
In much the same way, with DevOps the developer, who is an expert in coding, and the operations engineer, who is an expert in maintaining the environment and systems engineering, work collaboratively to infuse stability, reliability, and performance requirements into development practices, while also bringing development into the management of the production environment. This is what DevOps intends: taking the best parts of both disciplines.
One of my senior managers used to tell me, "People everywhere in the world need a problem solver, and as long as you are solving the problems, you will always be able to find a job." DevOps is all about problem-solving, so practice it and become part of the DevOps culture.