DevOps as a Type of Engineer, Culture, and Practice
What is DevOps? In a previous article published by Toptal, Demir Selmanovic writes that “DevOps is a culture, mindset, and it is part of IT as (a) whole.” He writes further that DevOps is a practice that enables organizations to optimize speed and efficiency across IT functions.Amazon Web Services, which is the biggest player in cloud infrastructure and has accordingly developed significant DevOps expertise, uses a similar definition, saying that “DevOps is the combination of cultural philosophies, practices, and tools that increases an organization’s ability to deliver applications and services at high velocity: evolving and improving products at a faster pace than organizations using traditional software development and infrastructure management processes.”
“DevOps people are basically those who have found interest in both systems administration and software development and decided to combine their skills to create a unified, better approach to both.”
These are both useful definitions for an audience already well-versed in related fields, but they may be too abstract for executives with less extensive technical backgrounds. Indeed, perhaps some of the confusion surrounding the definition of DevOps stems from the fact that it is often referenced simultaneously as a type of engineer, set of practices, and culture. While DevOps does encompass each of these elements, it is useful to begin by considering them separately.To start with what a DevOps engineer looks like, Martin Chikilian, a software developer formerly for IBM and Hewlett Packard with over a decade of experience employing DevOps principles, puts it in simple, concrete terms: “DevOps people are basically those who have found interest in both systems administration and software development and decided to combine their skills to create a unified, better approach to both.”They are able to maintain the servers, networks, and other types of infrastructure systems a company has, as well as actively iterate and improve on those systems through software development. As Chikilian said another way, “A DevOps person is someone who can leverage the foundations of software development to help themselves and companies build better tools to handle infrastructure.”The “combination of cultural philosophies,” as Amazon puts it, refers to the combination of approaches used by software developers and those with infrastructure, or software operations, expertise. In breaking down the traditional barrier between these practices, a DevOps culture seeks to empower organizations to benefit from the distinct strengths that developers and infrastructure experts bring to the table. Successfully implementing DevOps principles “requires a change in culture and mindset” for companies that silo these different kinds of engineers. As Emily Dowdle describes at the 2016 Nordic API Platform Summit, removing barriers also helps alleviate the natural friction that can sometimes exist between developers and infrastructure experts and foster a more congenial, cooperative work environment.
Stated simply, DevOps is about translating complex manual processes involving error-prone human interaction into an instrumented approach that can be tested, measured, and easily scaled.
Armed with an understanding of what a DevOps practitioner and culture look like, what DevOps means as a practice becomes more apparent. Stated simply, DevOps is about translating complex manual processes involving error-prone human interaction into an instrumented approach that can be tested, measured, and easily scaled. For example, if a developer would like to create an environment that allows business users to provide feedback, he or she can initiate an automated process in which the developer can issue a command created by the DevOps team (rather than handing off a piece of code to the infrastructure team), which performs the relevant task in a consistent and tested way, getting to the expected results quickly and enabling collaboration.A comprehensive definition of DevOps requires an understanding of what it means as a type of engineer, culture, and practice. Having explored what DevOps means from these perspectives, it is now important to delve into what DevOps looks like when successfully implemented.
Your DevOps Toolkit
In addition to the aforementioned cultural shift – going from a company that silos software developers and infrastructure experts to one that embraces their collaboration – companies need to understand a number of specific practices and tools crucial to DevOps. Below are three of the most crucial (though certainly not the only) of such practices:Automation: Increased efficiency is central to DevOps, and this is significantly achieved through automating a range of relatively slow, onerous processes in software development and infrastructure maintenance. One specific example that Amazon cites is the practice of automatically sending out relatively small but frequent software updates. This practice takes the onus off of systems administrators, who might otherwise have to perform these updates manually. As Amazon notes, this practice also has the benefit of de-risking software deployment through enabling administrators to more easily catch and fix bugs that may arise. Automation is a cornerstone of DevOps and is crucial to the other DevOps practices discussed below.Continuous Integration: On a fundamental level, DevOps is about close collaboration between engineers and, further, entire teams. Continuous Integration refers to the practice of engineers sharing and merging code in a central location. As Amazon explains, “In the past, developers on a team might work in isolation for an extended period of time and only attempt to merge their changes… once their work was completed.” Through Continuous Integration, engineers can more efficiently collaborate and avoid the bottlenecks associated with developing and integrating their code in a more piecemeal fashion.Continuous Delivery: Continuous Delivery refers to the practice of automatically delivering and implementing software product changes as they’re made. In other words, Continuous Delivery is enabled by Continuous Integration, given that changes to code can only be effectively pushed to the entire system if the code is already housed in a central place. Automation is also crucial to Continuous Delivery. Indeed, the aforementioned example of sending small, frequent systems updates can also be thought of as an example of Continuous Delivery. Continuous Delivery enables organizations to implement changes and improvements quickly, and it allows engineers to focus their time more efficiently on other, complex issues.
Hiring the Right People
Of course, companies need to hire the right engineers for the above practices to be successfully implemented. DevOps engineers must have a skillset that combines software development and systems infrastructure expertise, and this combination may be difficult to find.
“It’s important that they be able to bridge the gap between the raw code and the challenges that the business has to face everyday – such as reducing friction between ideas, delivery, and consumers.”
Andrea Villa, a former DevOps engineer at Atlassian and system architect at CloudReach with 15 years of experience in system administration, information security, and networks, believes that DevOps engineers need a broad range of experience and knowledge to be successful.“To be effective, today’s DevOps Engineer needs to have a developer background and possess a wide knowledge of system administration and network knowledge,” Villa said. “It’s important that they be able to bridge the gap between the raw code and the challenges that the business has to face everyday – such as reducing friction between ideas, delivery, and consumers.”Qualifying as a strong DevOps Engineer is clearly easier said than done, and finding such engineers can be similarly difficult. Still, understanding the tools underlying DevOps practices can empower your organization to more accurately tailor hiring practices around finding the right talent and implementing these practices successfully.
Why DevOps Really Matters
Using DevOps practices comes with a range of benefits, some of which – including greater efficiency, security, and organizational collaboration – have already been articulated. The 2017 State of DevOps Report quantifies this increase in efficiency, reporting that high performing organizations employing DevOps practices spend 21 percent less time on unplanned work and rework, and 44 percent more time on new work.More generally speaking, however, successfully implementing DevOps practices can have a profound impact on your company through improving efficiency and execution in areas that are both essential and decidedly unglamorous.Fredrik Håård, an engineer with over 12 years of DevOps experience who worked as a Senior Cloud Architect at McKinsey and at Wondersign, articulates this point more fully.“Good DevOps engineers must be a champion – and take responsibility for – all the areas that might not be prioritized by the organization such as data security, disaster recovery, mitigation, and audits,” Håård said. “The choices you make in DevOps can have long-lasting effects at a company.”Microsoft has also seen these positive effects through implementing DevOps practices in its Cloud + Enterprise engineering group. To deliver the best results, Microsoft explains, “we needed engineering and operations to work closely together throughout the entire lifecycle of development from design to deployment in production.” Through shifting to a DevOps culture and using DevOps practices, Microsoft was able to scale and deliver high quality services to its customers far more quickly than it had previously.
Solving these problems, and improving efficiency, are great in themselves, but they are ultimately a means to a more fundamental end: producing amazing products and yielding greater profits and customer satisfaction.
DevOps engineers can effectively act as a company’s internal commando team, helping to solve a diverse range of problems that, though perhaps unglamorous or out of view, are absolutely crucial to a company functioning properly.Solving these problems, and improving efficiency, are great in themselves, but they are ultimately a means to a more fundamental end: producing amazing products and yielding greater profits and customer satisfaction. Perhaps the most important reason for why DevOps really matters is that it can enable organizations to maximize each of these metrics.
Facing the Future with DevOps
In 2015, Andreessen Horowitz Partner Scott Weiss said that DevOps is “More than just a methodology. It’s a must-have skill set for the modern programmer — and is increasingly becoming its own department.”This has proven true, as a range of tech companies, including Amazon, Microsoft, and Google, have built DevOps teams and dedicated significant resources to building expertise in the space. Weiss and other major tech players see DevOps as not simply a passing fad, but rather a key component in the future of software.DevOps will continue to be particularly essential as industries become more reliant on cloud infrastructure. In a 2017 report, Gartner Research projected that the Cloud Services market will grow over 15% per year through 2020. To put this growth in terms of dollars, a recent article published by Forbes indicates that the cloud computing market will grow from roughly $260 billion in 2017 to roughly $411 billion in 2020. DevOps can make a huge difference in how quickly your company successfully migrates systems onto the cloud. At Toptal, we’ve used DevOps since the beginning – and it’s been integral to our success as a hypergrowth cloud company.Just as the Cloud Services market is growing at a rapid pace, so too is the importance of DevOps. Whether in energy, healthcare, or higher education, your company will need to develop DevOps expertise. Understanding what DevOps is, how it’s implemented, and why it’s so important, represents an essential first step as you think about using this key practice going forward.