By Richard White, Managing Director, Orasi
DevOps isn’t a new way of delivering software (the term is a decade old), but right now it’s the “star” of software development. That’s a good thing, because DevOps can radically improve software delivery speed, empowering developers to deliver better products with fewer bugs and implement improvements continuously.
What isn’t so good is that many stakeholders (especially the C-suite and bean counters) put pressure on software project managers to get to the DevOps pinnacle — continuous improvement — quickly and painlessly. That’s a grave mistake, because there is no magic bullet.
Depending on an organization’s level of DevOps maturity, the road to continuous improvement will vary in length and complexity. In all cases, it will require some (and perhaps considerable) effort for every step, often including process and cultural restructuring.
To work at its highest level, DevOps must address all delivery pipelines, including not only enterprise platforms but also mobile apps, websites, and commercial software that a company maintains or customizes. This also means that both back-end functionality and the user experience should be included.
In short, all code within a company’s control should reach process maturity on the road to continuous improvement, and a culture of continuous improvement should support it.
This may sound like a tall order, and, it is. No one is suggesting that companies achieve these goals in a single bite. That’s why I refer to the effort as a journey. Like any trip, it starts by figuring out where you want to go, identifying a method for getting there and navigating the route, with periodic checks to measure progress.
Recently, Orasi’s DevOps services team helped a multi-billion-dollar conglomerate adopt a sprint-based process and accelerate development tasks with best-in-class tools, equipping them to pursue continuous integration, continuous testing and continuous delivery, three important building blocks of continuous improvement. To prepare them for the journey, we worked with them on five core activities, all of which are common with efforts such as these.
Identify the current state: The first – but still critical – step is to explore the state of DevOps execution. This begins by walking the team through a short assessment effort, asking them a series of questions and thoroughly exploring the environment. The assessment should explore shortfalls and inconsistencies in DevOps processes as well as the current physical environment.
Optimize existing environments: Improperly configured or outdated environments substantially increase the risk of failure. It’s prudent to evaluate them — and if needed, rebuild them — before taking further steps.
Integrate DevOps tools: Tools cost money, and deploying and integrating them is an extra effort. Nevertheless, an investment in tools will repay the firm many times over. Continuous delivery is far more time-consuming and cumbersome to achieve without tools, and without continuous delivery, you will never get to continuous improvement.
Some of the tools we use in our projects include Chef, GitLab, Jenkins, Datical, Delphix and Xebia Labs, but there are dozens of worthy tools that can help lead an organization to continuous improvement.
Process Redevelopment: Using the information gleaned in the Current State effort, refine and restructure processes to flow seamlessly, removing all manual intervention and using automation as often as possible.
Team Engagement: Someone, either a knowledgeable team member whose skillsets are up to date or an outside resource, must coach teams to adopt new approaches and achieve repeatable, consistent processes.
This may sound like a lot of effort, and it is. But there is no shortcut. The journey can be divided into segments, but if too much time elapses between them, momentum (and the latest round of institutional learning) will be lost.
Trust me. The journey is worth every step.