by Sophia Hobman, Practice Lead
Among our customers and across the industry, we are seeing growing interest in DevOps and continuous deployment as a better way to deliver quality software, on time and on budget. DevOps brings a radical transformation in the way operations and production environments are managed, and this requires a step change in cultural values. It means that any successful DevOps initiative has to consider the impact on people and the way they work, as well as on processes and technologies.
In this guest blog, Sophia Hobman, Optimation’s Practice Lead, talks about how to prepare your team.
What is DevOps?
In essence, DevOps automates the build and deploy processes, taking code all the way from development to production. Through automating all the environment build, deploy and test processes, operationally ready code and deploy processes can be tested many times before getting to production. This increases the quality of releases and enables release activity to occur with more predictability during working hours. At companies like Amazon, Facebook, and Google, this model of continuous delivery is critical to their strategic capability.
How does DevOps affect people and culture?
According to one standard definition, DevOps 'emphasizes the collaboration and communication of both software developers and other information technology (IT) professionals while automating the process of software delivery and infrastructure changes'. That means people on the 'Development' side - including the customer, business analysts, software architects, and software developers - working in close harmony with infrastructure, network, and operations specialists throughout the software lifecycle. This is a marked contrast to the traditional approach of completed software being 'thrown over the wall' into operational deployment, sometimes with little certainty that what has been developed will work in a production environment or will deliver what the customer expects.
Cultural success factors
Breaking down the silos between development and operations to create open, productive communication and collaboration may require some deep change to the way people think about themselves, each other, and their work. A few key success factors include:
· Foster trust and transparency within and between teams
· Understand people's motivations
· Move away from a blame culture while ensuring everyone understands and learns from what went wrong
· Identify and remove bottlenecks, whether they are caused by people, processes, tools or (most likely) some combination of these
· Create an environment where continuous innovation is enabled by the willingness to allow failure. Embracing 'fast failure' and the ability to identify and fix problems early and easily, is integral to DevOps success.
· Build and empower cross-functional teams
Easier said than done, right? In future articles, we'll be sharing some practical advice on how to achieve this deep culture change using a variety of tools and strategies. These can include team workshops, self-assessments, and new staff incentive practices.
Putting to rest DevOps fears
With DevOps promising greater collaboration, higher quality software, and faster deployment, you may well ask what's not to like? But such a profound transformation in the way people work and the way their working environment is structured can also bring anxieties. These need to be recognised and proactively managed.
For example, a common concern from the operational side is that developers will be taking over their jobs. This is simply not true. Really, it's a case of the learning and benefits from agile development now being extended into operations, going beyond the code to the entire service delivered. Customers are now demanding business agility and the agile services to support it across all aspects of the engagement. DevOps principles, processes, tools, and practices give operations and infrastructure teams a roadmap to transition from outdated, overly rigid approaches, and allow them to demonstrate the value they add throughout the software lifecycle.
DevOps is strongly orientated towards automating as many aspects of the deployment and production process as possible. This can cause anxieties that operations people may be automated out of a job. However, what actually happens is that as lower-level elements become more automated, skilled people move up to solving more complex problems and as a result, demonstrating higher value.
Greater automation also requires greater collaboration between development and operations people to understand and interpret customer needs and deliver a better product. This in turn enables the whole team to broaden and deepen their skills and knowledge across both 'Dev' and 'Ops'. The specialised knowledge of the Operations teams can be used to create jobs for the developers to run; this shifts the effort “left” earlier in the lifecycle and ensures the jobs are run multiple times before they are run for real in production. This leave more time for the Operations staff to start focusing on new capabilities that their specialised skills are required for, like self-healing systems.