There is an age-old division between development and operations that still exists today. Because the two teams have different end goals, they can disagree when it comes time to implement changes. This need not be the case, and such conflicts, if not managed and resolved, can strain the company.Development vs. Operations: An Oversimplification
To operations, developers are head-in-the-cloud types who release code oblivious to real-world constraints. To developers, ops are cog-turners resistant to change. Change leads to breakages that they could have avoided.
Conflict results when one party wants to change and the other wants stability. Yet, for a business to succeed, there needs to be both. This is why managing these competing demands and balancing the needs of these two teams is so important.
DevOps as the Solution
DevOps is one solution that has been singled out to address the problems raised by the competing demands of development and operations. It’s one-way teams can collaborate and work more efficiently. Forrester Research defines DevOps as:
A set of processes, methods, and systems for communication, collaboration, and integration among the IT functions responsible for application development, infrastructure and operations, and quality assurance; with the functions working together to produce fit-for-purpose and timely software products and services.
The culture shift facilitating the rise of DevOps is driven by a need for nimbleness so improvements and updates can be delivered with increasing frequency. This requires development to deliver code quickly without sacrificing quality and innovation. At the same time, operations must ensure that the appropriate supporting infrastructure is available and performing as expected.
Ways to Ensure DevOps Success
While DevOps attempts to build infrastructure where development and operations closely collaborate (instead of working completely independently as they once did), there are steps management can take to facilitate teamwork and minimize friction. For instance, it helps to remember that the end goal is to provide the customer with a great product and experience, even if development and operations reach that goal in different ways.
Here are additional ways the two teams, as well as management, can work to reach their shared goal.
What Development Can Focus On
- Avoid Writing Code in a Void: It would be nice if there were no limitations on what development could implement or how they implemented changes. However, this is not the case, so it’s important for the team to consider real-world constraints such as user count or resources available (for instance, the servers used by the typical customer or the hosting available for requests).
- Collaboration with Operations: As a followup to the point above, development should openly communicate with operations so they know relevant constraints. Management, however, should ensure that it’s a symbiotic relationship, where development is willing to dial back on their demands and operations is prepared to make changes necessary to support new releases.
- Identifying and Engaging with Metrics Used By Operations: Once everyone has agreed on the constraints and improvements that the team can make, it’s important to have metrics that track these parameters. Both parties should agree on metrics so that everyone knows where the boundaries are and if the responsible team met them or not. For example, development might ask for new framework support. Measuring this is simple and requires a simple yes/no response. In return, operations might ask for limits in the increase of memory demanded by the next release. Developers might agree that new features won’t need more than a 10% increase in amount of memory required under the typical use loads. Transparency is essential to maintaining trust between all parties.
What Operations Can Focus On
- Be Open to Changes: It’s important to remember that while customers want a stable and bug-free system they also expect new features and enhancements. Change does lead to possible errors and other failures, but these should be handled as givens. Teams should allow the necessary time and resources to ensure that issues get corrected before the final release.
- Collaborate with Development: We’ve emphasized the need for development to communicate openly with operations, but this is a two-way street, and it’s important for operations to be open with development as well. Rather than waiting until the final stages of the software development lifecycle (SDLC) to communicate issues with the coders, operations should strive to maintain an open line of contact throughout the SDLC so issues that pop up get attention and can be dealt with preemptively. Issues that are diagnosed and fixed earlier cost less, which is a boon for all parties involved.
- Monitor All Stages: As the adage goes, “that which is measured gets done.” Once development and operations have agreed on a given parameter, the operations team should implement the monitoring systems required to gather data that everyone can view. What these systems looks like depends on the metrics on which the teams have agreed. Some options might include web performance monitoring, hosting usage, and so on. This is in addition to the monitoring that they (hopefully) already have in place to capture issues during the SDLC.
What Management Can Focus On
- Manage Diversity: There are reasons why some people gravitate toward ops and some gravitate toward programming. It’s important for management to ensure that there is a healthy mix of personality types and skill sets on each team. This helps reduce the stark difference that can stand in the way of collaboration between development and operations. Management (with the help of human resources) needs to identify the personality types, skill sets, strengths, and weaknesses. Once they’ve gathered this material, they can work to eliminate any weaknesses and fill any gaps present on teams.
- Increase Ops Exposure: Rather than seeing ops as the people who take the punch bowl away as the party gets started, increase exposure on the accomplishments of ops and how it contributes to the business. The contributions of the development team are obvious, but the contributions of ops teams tend to be harder to see. Their areas of focus, stability, and infrastructure, can be taken for granted. It’s important to not do this, and one way of preventing complacency is to note and present the accomplishments of the ops team.
Where development and operations were once completely separate entities that communicated only near the end of the SDLC, today’s digital businesses must ensure collaboration between both teams to optimize workflows, architecture, and infrastructure so that they can deliver high-quality applications at higher frequencies.
Though both parties share the same end goal, the process by which development and operations reach it are very different. It can take hands-on management and a significant culture shift to ensure that the changes either team needs to implement to make DevOps successful happen.
See how we can help you facilitate collaboration across all of your teams.