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, the 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, I will discuss here 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.
One of the many interesting tweets in response was one from Adam Jacobs, the renowned CTO of Chef:
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 is 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
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 and delivery tools, and logging and 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 a 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 entire the 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.
Hi Noni. DevOps implementation question for you.
My company has asked me to take on the role of “DevOps Engineer”. I’ve been a Software Engineer for the last seven years and for 12 years before that I did both development and Ops for a department at our local University.
Our company selinc.com has a little over 5,000 employees. I work for the IS department which has several development teams working on internal and external tools, as well as SysOps, NetOps and SecOps teams.
My question is around reporting. The director of IS is trying to figure out who I should report to. Right now I report to the team lead of the externally facing web technologies group (The web team). I’m not doing anything with that team any longer as I’m focusing on DevOps exclusively, doing research and evangelizing. Our next thought was to have me report to the Development Manager who is over all of the Software Engineering teams, but after some discussion we started leaning towards the manager of the SysOps team.
Now I’m wondering if it would be best if I report directly to the Director of IS.
My thought is that this needs to be a top down, directors full weight behind it movement and that if I report to one of the sub teams, it won’t have that message.
What are your thoughts?
Obviously evangelism and culture change are the biggest challenges in making such a transition, and you have to make sure that the entire Engineering organisation is behind it. The best person to report to in this case would be the Development Manager. It is unclear to me why SysOps would be a better fit, as DevOps work tends to touch on SysOps and NetOps to a similar extent, but is neither of them to the same extent as well. The best director to be under would be the one who has most to gain from such a shift in terms of the goals he/she is responsible for, and the one who will be able to most strongly make the case for cultural change to facilitate as many of the organisational benefits as possible.
Lastly, I would keep an open mind and revisit the choice in six months time.
Let me know what you ended up with implementing and how it went.