DevOps: Is it a methodology or a role?
According to Wikipedia, DevOps is “a culture, movement, or practice that emphasizes the collaboration and communication of both software developers and other IT professionals while automating the process of software delivery and infrastructure changes.” The industry indeed usually tends to state that DevOps is a “methodology” or “culture.” But, when you look at job listings, you will still see open positions specifically for “DevOps engineers.”
What gives? Well, theory is different than reality. DevOps is both a methodology and a role. At Logz.io, we practice DevOps to its full capacity—it is a specific methodology used by a specific type of engineer.
In our streamlined software development, integration, and delivery process, we use DevOps tools and methods to maintain the quality of our product, increase our response times to user requests, and smoothen daily operations.
To highlight our practices for those who might want to learn more about DevOps-based IT environments, here I will discuss the definition of a DevOps engineer, the skills that IT organizations need to implement DevOps, the skills that an IT professional needs to acquire, and the key to hiring appropriate professionals for the job.
The DevOps Definition
If a DevOps engineer is a specific individual, it is typically an experienced engineer with experience in both development and operations. In addition to these traditional responsibilities, they are also expected to have business and interpersonal skills. More and more companies are hiring individuals with this specific title because they see the value of having one person in charge of DevOps implementation across the entire organization. This ensures that the entire delivery process is efficient and automated.
In one of his many posts on the topic, Martin Fowler stated:
Putting those people with common skills together supports skill-sharing and allows the organization to treat the team as a provider of a single, well-delineated type of work [and that] developers don’t have to be full-stack (although that is laudable) but teams should be.
I’m tempted to say a “devops engineer” is someone who knows how to work on a full-stack cross functional team.
DevOps evangelists will claim that DevOps “really [can’t] be reduced to a single role. If anything, it’s more about the makeup of teams than individual roles.” But to build such a team, you will still need to decide which roles need to be in the same room to build and maintain your delivery pipelines. This team can include any or all of the following: developers, testers, and operations teams as well as IT management experts in fields such as security.
In the end, the decision whether to have an individual “DevOps engineer” or a dedicated “DevOps team” is unique to each organization.
The DevOps Engineering Team
For many organizations, having a dedicated team to manage their IT operations is an important and worthy investment. According to a 2015 State of DevOps report, DevOps-based organizations deploy code up to thirty times more frequently than those that do not have DevOps teams.
So, what skills do DevOps team members require? Here is an example of a real DevOps job description:
Looking for DevOps Engineers to work in our data platform and cloud enabling technologies teams. We are looking for candidates who are passionate about automating development and production environments, and love the challenge of working in highly distributed and virtual environments.
In this role you will be center to helping design and operate environments that enable fast paced development and deployments while achieving high availability. Along with a systematic discipline we are also looking for candidates who can approach the DevOps discipline in new and creative ways and who are open and passionate about exploring new technologies to improve our overall environment.
Key Responsibilities and Skills:
- You are responsible for establishing DevOps practices inside of the company’s Unified Data Architecture and Cloud Software teams.
- You are center to help design and operate highly available software in large distributed and virtual environments.
- Metric driven and focused on continual improvement
- Comfortable working with distributed teams
- Strong expertise in leveraging a wide variety of open source technologies
- Automation is in your DNA
- System and IT Operations
- Continuous deployments
A dedicated DevOps team consists of a few professionals who are each responsible for different elements. There are two main roles in this team: the Senior DevOps Engineer (who serves as the team leader) and the DevOps Engineers.
The Senior DevOps Engineer is the person who architects and plans the complete delivery process, as well as which tools will be used. Essentially, this person supervises the overall operations and understands the entire environment. The other engineers are responsible for implementing and maintaining that delivery process.
Naturally, testers and developers are also an integral part of the process and are responsible for ensuring that their code is shipped at the highest speed and best quality. Everyone should also use the tools that allow for easy communication and coordination—ChatOps is one increasingly popular practice.
How Do You Become a DevOps Engineer?
To expand into DevOps, developers and operations staff need to learn additional skills and gain more experience as needed with coding, cloud platforms (such as Amazon Web Services), automated test & delivery tools, and logging & monitoring tools.
I recommend reaching out to colleagues within and outside of your team to gain a better understanding of your R&D operations and how you can help to improve integration and deployment efficiency. It’s important to remember that DevOps engineers have no particular daily routine or set of tasks. Instead, the work is about continuously looking for advanced technologies and opportunities to make the entire software deployment process more efficient.
Ultimately, the goal in DevOps—however one chooses to define the term—is to accelerate and enhance the delivery process to meet both the user’s expectations and the company’s business objectives.
The DevOps Job Description
Becoming a DevOps engineer or joining a DevOps team is an excellent opportunity to expand your IT skills because the DevOps job description essentially includes the overseeing of both operations and the entire software delivery process.
There is a growing demand for people with this advanced skill set, so there is also a tremendous amount of opportunity for individual career growth. If you are already an IT professional and are looking for a greater role within your company, training to become part of your organization’s DevOps team could be the exact challenge you need.
Logz.io is a predictive, cloud-based log management platform for DevOps engineers that is built on top of the open-source ELK Stack. Start your free trial today!