What is DevOps?
Before DevOps, software was traditionally developed by an engineering team and then handed off to a separate IT group which would handle release management. As these were two distinct groups within the organization, these transitions took time and were not always as smooth as they could be.
By placing both teams under the same umbrella and coordinating efforts throughout the entire process, DevOps organizations can release software faster, which is particularly important in continuous integration and continuous deployment environments, while benefiting from earlier and more frequent collaboration between software development and IT operations.
More important than the actual organizational structures, DevOps is based around a set of principles that create an efficient and effective progression from coding to releasing the finished product to customers. The goal is maximizing throughput and extending the value of agile methodologies beyond the engineering phase of product development.
Why was DevOps created?
DevOps is a natural extension of the Agile ethos—smaller, quicker development cycles that leverage feedback to influence future development. These principles require new features and changes to get to market quickly as a means of speeding up feedback loops. A separate organization working on packaging and releasing software using their own policies and procedures slows down that process, so joining forces shortens the time between completing a project and getting it into customer hands.
What are the Benefits of DevOps?
Faster time to market is the primary upside of DevOps, but the close collaboration between development and operations has other benefits as well.
The merging of two distinct organizations creates a more synergistic environment with improved communications. This leads to more innovative problem-solving and fewer issues arising later in the process than when there is a lack of visibility and dialog between these parties.
There is also a clear ownership of the end-to-end software development and release process by this hybrid organization, which can lead to additional improvements and efficiencies since there is no question who holds the responsibility for various matters. And with the goal of efficiency in mind, not only is quality improved but so is automation of unit testing, packaging, releasing software, and the collection and analysis of customer feedback.
What are the DevOps principles?
DevOps embraces big picture thinking with the end result in mind. It removes anything resembling a ‘throw-it-over-the-wall, it’s somebody else’s problem’ mentality. The organization is united around a common goal and shares the responsibility for delivering quality products quickly, so there’s a greater emphasis on customer impact and success instead of just doing an individual job in a vacuum.
Involving testing and operations staff earlier in the process (known as Shift Left in some circles) can drastically reduce the number of issues that may create downtime or otherwise negatively impact performance. By including this expertise while the software is still being developed, potentially troublesome items can be spotted and addressed before they reach QA or the production environment, where the remedies can take longer to implement.
Automation is key to any efficient process, but DevOps takes this to another level by automating as much as possible to ensure quick and smooth releases to end users. From the software development itself to testing to packaging and release, automation improves quality and reduces time wasted on repetitive tasks.
Metrics, measurement and product feedback can sometimes be an afterthought in a traditional product development organization, but with DevOps the instrumentation is in place much earlier and used during the testing process as well. Surprises and gotchas are discovered sooner, while teams can also be confident that their hooks for collecting, aggregating and analyzing data are in place and working well before the product gets into customer hands.
DevOps teams also value T-shaped skill sets; they want employees possessing a broad understanding of the entire process as well as deep expertise in a particular area. Comprehending the needs and responsibilities of those upstream and downstream of your own domain creates better collaboration and more creative problem solving than a siloed approach.
Living in a DevOps world
DevOps can create a more transparent, collaborative, and efficient product development organization, but it does require the right mentality and team members both willing to embrace the structure and develop the skills and expertise to understand both software development and IT operations to some extent.
In the decade since it first emerged on the scene, DevOps has acquired many fans and practitioners who now crave employees with the range of skills and team-oriented approach required to thrive in such an environment. Product teams will benefit if their technical teams have adopted DevOps principles by bringing higher quality products to market faster and leveraging the robust product feedback mechanisms that DevOps requires to thrive.