Are you frustrated with how long it takes to get new software delivered? Do you struggle through delayed timelines and unmet expectations, longing for more predictable and dependable delivery schedules? Are you scratching your head as you watch smaller, more nimble companies emerge overnight with compelling new digital solutions that seem to roll out continuously at the push of a button? Effective development and innovative products are the keys to satisfied customers in the Digital Age.
Continuous delivery is a way of flowing new products and features to clients by bringing Development and Operations teams together to communicate, collaborate, and partner under a common goal. Having DevOps in play, allows product quality, usability, and performance to be consistently delivered predictably, with high quality and dependable delivery schedules. Dropbox, Netflix, and Amazon use continuous delivery to great competitive advantage.
A complete DevOps teaming approach supports a robust tooling infrastructure, breaks down silos, and automates everything possible. Breaking down silos and bringing people together is the MOST IMPORTANT part of DevOps. Have people on the teams map, define, and optimize the way they work together. Focus on creating a methodology that is consistent and repeatable in the context of the work being done. It is within these conversations that individuals stretch their boundaries and strengthen their skills.
Most people think of tools first, but implementing tooling changes without first bringing the teams together does not generate the consistency and teaming necessary to reach continuous delivery. Without understanding teaming dynamics and how the work actually gets done, there is a huge risk of implementing tools that are either the wrong fit or further teaming dysfunctions.
Bringing the development and operations teams together to define and optimize both the build and release processes is in the best interests of the end customer and the people in these teams. Consistency is created as people work together, cross functionally, using the same tooling for deployment and infrastructure. As people partner and collaborate, the teams become much more efficient and effective, rework is avoided, and information is easier to find and track. This transforms the team culture – deployment activities are defined by team members and known by all, not dependent on tacit knowledge or tribal practices. Quality throughout product development and deployment process increases and risks are reduced when error-prone manual processes are automated. A deep knowledge of the entire system infuses the work and tacit knowledge is more visible and intentionally shared. Audits become easier. Deployment becomes easier. Employees and customers are satisfied.
Implementing DevOps
To implement a DevOps Infrastructure, start with the people, ensuring they all understand and are focused on the end customer. Make sure different teams identify and track to the same customer or, when the customer is someone different for each team, know the market ecosystem so everyone is working to deliver the same customer value. Keep the focus and vision on the customer value stream. Get familiar with C (your immediate customer), C2 (your customer’s customer), and C3 (your customer’s customer’s customer). This allows purpose to motivate the work you do and creates a shared vision that can help foster cross-functional teams that spur cultural change.
Unified with a common development vision, begin including stakeholders in the conversation and address operational concerns early. Similarly, involve the development team farther into deployment and testing. Seek to merge both the people and processes involved in application development with the people and processes involved in setting up and supporting the application. Change the “definition of done” to include infrastructure and ensure code works in deployment.
This breaks the delivery process into two main phases: building components and releasing software. Working this way, teams can sequence their work – moving seamlessly from build management to release management. Remember there is no one single DevOps pattern, a successful pattern emerges as the work is done.
Ultimately, a DevOps approach increases the skills and knowledge of many people in the development system. Cross-functional awareness and learning that results from the new teaming interactions enables development to expand their understanding of infrastructure. The increased awareness of how their coding decisions impact downstream processes and deployment influences code quality. Results are optimized for quick deployment and support.
From an Operational team perspective, cross-functional awareness pushes infrastructure concerns up earlier into the process. The deployment process becomes part of design and testing. Environments can be created in repeatable processes that are streamlined and automated.
Summary
DevOps is more than implementing connected tools across the entire value stream. It is a cultural shift fueled by communication and collaboration. With each team being unique, you can easily see why there is no “one way” or “right way” to implement DevOps. The MOST IMPORTANT element is the culture and the people. Bring the people together first. It will take time to create the type of cultural shift necessary to blend into a high-functioning DevOps team.
Once new processes and ways of getting work done take shape, DevOps teams can better select tools that support them in the right ways. Creating the right the tool chain tailored to your business also takes time. Those tools build the backbone of the DevOps infrastructure and enable collaboration. But you don’t have to do it alone. GearStream can help.