Just about every organization with a functioning IT department has been attempting to finesse some variation of DevOps into its software delivery flow.
When done right, DevOps is powerful stuff, and delivers very noticeable results -- automating the testing and quality assurance aspect, for example, can deliver ROI up to 250% to 300% month over month, according to Chris DeGonia, director of QA at International SOS. In a recent podcast with Kalyan Rao Konda, president and head of the North America East business unit at Cigniti, he credits the ability to automate the flow, across repeatable processes, checks, and balances in the system.
While automation enables DevOps proliferation, it takes people with the right skills and mindsets to make things happen, DeGonia and Konda emphasize. The mindset is important, as "apart from having the general know-how of software testing and application functionality, the test engineers are now required to continuously increase their knowledge base on the latest trends and tools. DevOps implementation is pushing the test engineers to keep learning more and more about newer technology."
Skills key required for DevOps success include "networking knowledge, basic unique scripting, the ability to work with continuous integration and continuous delivery tools such as Jenkins, performance testing tools, and also having decent understanding of containers," Kalyan says. "Test engineers would also need to have a fair understanding of the role of cloud and how cloud services are being used in the development and hosting of the products or applications."
Having a DevOps mindset is critical here, Kaylan continues. "There's the need to promote collaboration within and among teams to ensure correct DevOps implementation. The testing activities are tightly integrated into the software development lifecycle in a DevOps ecosystem. This requires multiple teams to work closely with each other, side by side, on a day-to-day basis, in order to meet the significantly shrunken delivery timelines."
Kaylan drives home the importance of constant learning with an analogy: "As a bird sitting on a branch, I don't think you should put a lot of faith on the branch, but you should have more faith in your wings. If the branch collapses, the bird should still be able to fly away. Similarly, software testing professionals need to make sure that they keep improving their skillset, which continues to be relevant to the changing industry trends."
Likewise, a DevOps mindset is something that can help an organization keep flying, regardless of what technology or business shifts take place underneath. There are six key principles that define a DevOps mindset, as identified by the DevOps Agile Skills Association:
- Be about serving the customer: "DevOps organizations require the guts to act as lean startups that innovate continuously, pivot when an individual strategy is not (or no longer) working, and constantly invests in products and services that will receive a maximum level of customer delight."
- Create with the end in mind: IT organizations "need to act as product companies that explicitly focus on building working products sold to real customers, and all employees need to share the engineering mindset that is required actually to envision and realize those products."
- Encourage end-to-end responsibility: "Where traditional organizations develop IT solutions and then hand them over to operations to deploy and maintain these solutions, in a DevOps environment teams are vertically organized such that they are fully accountable from concept to grave."
- Promote cross-functional autonomous teams: DevOps teams "need to be entirely independent throughout the whole lifecycle," and even "become a hotbed of personal development and growth."
- Continuously improve: "Minimize waste, optimize for speed, costs, and ease of delivery, and to continuously improve the products/services offered."
- Automate everything you can: "Think of automation of not only the software development process (continuous delivery, including continuous integration and continuous deployment) but also of the whole infrastructure landscape by building next-gen container-based cloud platforms that allow infrastructure to be versioned and treated as code as well."
DevOps is powerful stuff. It's about increasing the speed of delivery of software to intended users, it's about continuous integration and continuous delivery of said software, it's about automating this flow, and most importantly, it's about instilling a spirit of collaboration for anyone who touches the software at any point in its lifecycle.