Agile methods have brought about an increased understanding of the value of collaboration in software development. The walls between business and development teams have crumbled as those stakeholders work together more closely throughout the development life cycle. And organizations deploying Agile methodologies have seen positive results through faster delivery of higher-quality software.
They’ve also recognized another common barrier to software development success – the wall between the technical teams that develop software and those responsible for its ongoing support. Enter the DevOps movement.
One of the industry’s latest buzzwords, at its core the DevOps movement is about a stronger partnership between development and operations teams throughout a product’s life cycle. It involves changes to team composition, project management, and delivery processes to increase the participation of operational stakeholders in projects in order to improve outcomes.
Why Does DevOps Matter?
Operational teams play critical roles in software development and support. They understand and help flesh out crucial non-functional requirements. They support project teams’ needs for development and testing environments. They manage product releases and on-going software support. Project teams need them at every step of the development life cycle, and the organization relies on them to sustain products over time.
The move from waterfall to Agile has increased the need for operational involvement in the development process. While waterfall teams move software into production once every 6, 12, or even 24 months, Agile teams release at the end of short sprints every few weeks, requiring continuous operations involvement. The Agile practices of continuous integration and deployment rely heavily on the skills of operations staff. Agile’s use of test-driven development and automated testing also requires operational participation and knowledge.
But teams often fail to estimate operations activities, identify key operations stakeholders, and involve those people early in projects. As a result, crucial non-functional requirements are missed or misunderstood. Team productivity decreases. And development teams throw software “over the wall” to operations and support teams that are woefully unprepared and lack a sense of ownership.
Successful IT organizations understand this. They know that development and operations teams must work together if they want to deliver high-quality, supportable technology solutions that satisfy customers. Increased collaboration leads to better requirements, improved velocity, stronger support capabilities, and most importantly, broad ownership of product sustainability over its entire life cycle.
How to Change Your Software Processes to Incorporate DevOps
Are you in need of a DevOps overhaul? DevOps concepts provide another lens through which we view and can improve software development and delivery processes. And industry focus has led to best practices and guidance. Here are 5 ways your IT organization can transform its work to optimize the value of DevOps:
- Make operational stakeholders part of the team. Include the right people from your operations teams to define non-functional requirements and identify activities, like training, to prepare for ongoing support. Bring them into the software development process early, and engage them repeatedly to identify and estimate operations activities required during the project, phase, or sprint. Emphasize the value of their participation to the entire delivery team.
- Define and test non-functional requirements early. Failure to identify issues related to non-functional areas like security, performance, or scalability as early as possible can have a “snowball effect” increasing the time and cost it will take to fix them. Give your operations stakeholders ownership of non-functional requirements and their successful delivery.
- Give development team members a stake in smooth ongoing operations. Involve developers, business analysts, and testers in operations and support activities – possibly as permanent part-time roles. Many organizations are also restructuring teams so development and operations staff report to one individual, giving both groups a vested interest in DevOps success.
- Teach your product owners, project managers and business analysts about operations. Provide high-level education on operations and support requirements, so they know what to consider as they elicit and define them. Provide them with a basic understanding of deployment processes and timelines to improve communications.
- As always when it comes to change, start small and make iterative improvements. Identify potential resistance to change and manage it proactively. And incorporate successes into your standard methodologies over time.
For more information on DevOps best practices, please listen to this Business of IT interview with Pete Cheslock, head of Threat Stack’s operations and support teams.