Find Your Place in the Wide Wonderful World of DevOps
A relatively new term in the technology lexicon is DevOps. First coined in 2009 by Patrick Debois, who became one of its gurus, the term refers to a myriad of different facets of work. Here is a fairly traditional (and rather long) definition supplied by all-purpose business research firm Gartner:
"DevOps represents a change in IT culture, focusing on rapid IT service delivery through the adoption of agile, lean practices in the context of a system-oriented approach. DevOps emphasizes people (and culture) and seeks to improve collaboration between operations and development teams. DevOps implementations utilize technology — especially automation tools that can leverage an increasingly programmable and dynamic infrastructure from a life cycle perspective."
I like to define DevOps a little more simply as being the marriage of development and operations. Operations will always, at least in my mind, include network and systems engineering. DevOps is simply linking up development teams with the rest of the organization that delivers development efforts to the customer.
It's a very important role and has broadened into an umbrella term for the processes, culture, and mindset used to shorten the software development life cycle. By implementing fast feedback loops, the organization delivers features, fixes, and updates more frequently. The customer, ultimately, has a better experience with your software product.
To explore further, let's dive into the nuts and bolts of DevOps, assess what makes it an integral part of the technology supply chain, and consider different approaches or branches of DevOps. We will round out our mini-DevOps deep dive with some advice for anyone hoping to nail down a DevOps certification or two to increase individual viability and longevity in the market.
DevOps in practice
In terms of an actual workplace, what falls under the DevOps label? I think a DevOps practitioner is a project manager, someone who has a grasp on systems and network engineering and also understands coding methodology (like Agile). In some cases, DevOps experts have even been coders, or have done QA work on code.
Developers, system administrators, and engineers don't always see eye to eye, but they do all tend to agree that customers frequently pull them in different directions. Sales will always overpromise, and it has traditionally fallen mostly on the shoulders of project managers and systems engineers to deliver on those promises.
On the one hand, product users demand change — new features, new services, new revenue streams —generally as soon as humanly possible. At the same time, they also want a system that is stable and free from outages and interruptions.
That creates a conundrum where companies feel like they have to choose between delivering changes quickly, and dealing with an unstable production environment, or maintaining a stable but stale production environment. As you might guess, neither choice is acceptable to enterprise executives.
Developers are often willing to push out software faster and faster — after all, that's what they are typically hired to accomplish. Operations (network, PM, systems), on the other hand, knows that rapid-fire changes without proper safeguards could destabilize the system, which goes directly against their charter.
DevOps was created to resolve this dilemma by integrating everyone associated with software development and deployment into a single, highly automated workflow with a shared focus: the rapid delivery of high-quality software that meets all user requirements while maintaining the integrity and stability of the entire system. (When we say "everyone," we mean business users, developers, test engineers, security engineers, system administrators, and sometimes others.
There are not really different branches of DevOps, but there are areas of focus related to DevOps positions. First, there are project managers who either get sucked into Dev Ops or are closely aligned in that way. They move over to a more technical role, rather than functioning as straight PMs.
Then we have the DevOps folks who tie up loose ends on the software (Dev) side, and the ones who tie up loose ends on the engineering (Ops) side. On the software side of the house, you have the software developer who is at the heart of the DevOps organization.
Under DevOps, the title of software developer may remain the same, but the new role dramatically increases in the scope of its responsibilities. The developers are responsible not only for turning new requirements into code, but for unit testing, deployment, and ongoing monitoring as well. Developers become better at their jobs, moving into more of a jack-of-all-trades role.
While DevOps implies more extensive collaboration between the development and operations teams, it's also sometimes referred to as DevTestOps, a name that reinforces the idea that testing is a part of the process. This concept often requires a move to more automated testing so that quality doesn't suffer. Generally speaking, you must automate testing or you will drown.
On the systems engineering side, you may see a shift to DevOps with the role of release manager. Whether you call this role release manager, release engineer, or product stability manager, the focus is the same. They make sure that production releases happen smoothly.
Release managers oversee the coordination, integration, and flow of development, testing, and deployment to support continuous delivery. Because DevOps relies heavily on automated systems, this role is key. On the systems engineering side, you have the automation architect role becomes critical in the DevOps world. These folks have moved over, most likely, from network engineering.
The best DevOps certifications are the ones that are focused directly on DevOps. These have become much easier to identify in recent years, and Amazon Web Services (AWS) is the leader in this space.
AWS DevOps Engineer - Professional — While the DevOps certification market is fairly young, the AWS DevOps Engineer certification has made a great name for itself. AWS is an industry leader and their certs carry a great amount of weight. It is worth noting, however, that this is far from an entry-level certification. It will take some serious effort to get certified.
AWS DevOps Engineer is designed for DevOps pros with a few years of direct workplace experience. Obtaining this credential validates your ability to implement and manage systems on AWS, as well as your automation skills. Once you earn DevOps Engineer - Professional, there can be real career benefits. According to PayScale, the average annual salary for an AWS DevOps Engineer is $117,000.
I don't think it's a stretch to say that getting certified on a SDLC (Software Development Life Cycle), like Agile, would also be helpful, as would becoming an Agile coach, or even taking some PMP classes. These two, as well as any hardcore development certifications, would directly transfer over to the headspace and skill set needed to be a great DevOps practitioner.
No matter what certification or path you take, you are going to need a deep and broad set of soft skills to solidify your ability to manage communications across a large team. Work on being the best person you can be to others and it will pay dividends. As always, I wish you happy certifying!