And yes, DevOps is a role too.
Every more or less experienced system administrator loves to repeat it loudly: "DevOps is not a role, it is a philosophy", I say: "Yes, it is a role".Let's see it why...
We hear DevOps here and there, every article will explain what this word means. Basically, DevOps has become the trend for the last 5 years, among such buzzwords like ML, AI, Blockchain, etc. Everyone tries to imply the DevOps philosophy and practices . All major and minor IT companies are want to deliver faster, have an eye on the application in real time and fix every bug the minute it becomes known with a 0 downtime. And this is when our hero comes – the DevOps guy.
So, who DevOps is?
DevOps is the guy CTO preys day and night. He is the alpha and the omega of your application lifecycle, he knows when and how to lunch your application, he decides whether your application works properly and how fast you get to know if it doesn’t. He is the magician who will automate and make your deliveries much easier. He is the absolute knowledge around your application. He holds the keys of your castle. You, merely, gotta have someone who does it all for you.
And why DevOps is a role though?
You can always ask an old school system administrator to log into your machines, do the operations and screw it up because things don’t work that way anymore. We are living another revolution in IT. This revolution is called GitOps, IaaC, DevOps era. There are IT organizations that have evolved to exploit DevOps practices and capabilities, and there are IT organizations that are in the process of doing so. That evolution won't happen on its own, and the vital role here belongs to the person who is going to own and deliver that change, you guessed who that person is – the DevOps.
DevOps work to address the management and coordination of the product from development through production. Typically he works on more of the technical details and hurdles in which a traditional project manager would not be involved. He’s focused not just on creating, but also maintaining the end-to-end application delivery tool chain. DevOps need to be able to multitask, demonstrate flexibility, and deal with many different situations at a time.
Specifically, a DevOps responsibilities include:
Documentation. Writes specifications and documentation for the server-side features.
Systems analysis. Analyzes the technology currently being used and develops plans and processes for improvement and expansion. The DevOps engineer provides support for urgent analytic needs.
Development. Develops, codes, builds, installs, configures, and maintains IT solutions.
Project planning. Participates in project planning meetings to share their knowledge of system options, risk, impact, and costs vs. benefits. In addition, DevOps engineers communicate operational requirements and development forecasts.
Testing. Tests code, processes, and deployments to identify ways to streamline and minimize errors.
Deployment. Uses configuration management software to automatically deploy updates and fixes into the production environment.
Maintenance and troubleshooting. Performs routine application maintenance to ensure the production environment runs smoothly. Develops maintenance requirements and procedures.
Performance management. Recommends performance enhancements by performing gap analysis, identifying alternative solutions, and assisting with modifications.
Management. Depending on the size of the organization, the DevOps engineer may also be responsible for managing a team of DevOps engineers.
I know labeling a position as “DevOps” tends to make our eyes roll. More and more though, DevOps is becoming a specialization. It’s a unique specialization because it doesn’t just require good technical knowledge, but the ability to communicate and emphasize across teams. It’s clear that companies are not just looking for those who can code, but someone with excellent communication and team building skills as well. The role of a DevOps engineer is not confined to any particular position. He needs to multitask and handle challenges arising from multiple roles to justify his designation. His vast skills comprise of testing, building, coding, integrating and deployment. He also must possess problem-solving skills.