Bob Morris is a Project Manager and a Principal Scrum Master at ThreeWill. He has over 20 years of experience with successfully leading technology projects and teams in both project management and senior technical management positions. This experience includes delivery of software product development, enterprise software deployment and I/T infrastructure projects.
If you regularly read ThreeWill blogs, you’ve probably noticed many blogs have focused on collaboration-related topics. If you’ve worked with ThreeWill or have seen much of our web site, you know that collaboration is in our “DNA”. My recent blogs have covered mainly tactical areas for team collaboration, including task management and modern meetings. However, in this blog, I’m focusing on a more strategic area of collaboration that has emerged over the past few years to become a key approach for companies developing software or providing services based on software to maintain competitiveness in the ever-accelerating pace of innovation in today’s business environment.
I’m talking about “DevOps”. If the title of my blog caught your attention and your organization is responsible for delivering software-based solutions, I’ll admit upfront that the answer is “yes.” But, I hope you’ll read on for the “why” and “how” for that answer, or read on if you are new to DevOps and need to understand DevOps fundamentals.
Remind me again…what is DevOps and why should I care?
Most people trace the beginning of DevOps to an inaugural DevOpsDays conference in 2009. In the span of the last ten years, DevOps principles have come to be widely embraced by companies across multiple industries. Some of the “big names” include Amazon, Netflix, Target, Walmart, Nordstrom, Etsy, Facebook, Fidelity Investments and many others. However, with its focus on delivering value to customers, DevOps is being leveraged by companies of all sizes and the maturity level in implementing DevOps principles is accelerating. A recent well-known DevOps-focused industry survey (The 2019 Accelerate State of DevOps: Elite performance, productivity, and scaling) claims that “DevOps has crossed the chasm” as a mainstream initiative with 88% of organizations classified as at least “medium performers” and the number of “elite” performers increasing from 7% of all respondents in 2018 to 20% in 2019 .
So, what exactly is DevOps, what is motivating companies to jump on this bandwagon, and why is it a great topic for a blog on team collaboration?
While there is no universally accepted definition of DevOps, I like the very concise definition provided by Microsoft’s Donovan Brown: “DevOps is the union of people, process, and products to enable continuous delivery of value to our end users.”  In this context, “value” is derived from the software being delivered to customers and continuous delivery means new features have a much smaller time to market. DevOps is literally a set of principles aimed at (and based on) collaboration of two key elements of the software delivery “value stream”, i.e., “Dev” meaning “Development” and “Ops” meaning “Operations”.
Put another way, DevOps aims to knock down silos between teams of people developing software (Dev) and teams of people responsible for the operational aspects of release and deployment of the software produced by Dev teams. So, the very foundation of DevOps is provided by a culture of collaboration between these teams. A common visualization of DevOps is shown in the figure below. In this figure, Dev and Ops team members collaborate on a continuous process for delivering software value.
DevOps principles, like many of the principles associated with Agile software development, have roots in “lean thinking” which originated in the 1980’s manufacturing industry. Lean thinking promotes customer value, flow of the customer value stream, respect for people and culture, elimination of waste, and continuous improvement. Because of this common heritage, there is huge potential for people to be confused about Agile vs. DevOps principles and practices. There are multiple resources available covering similarities and differences between Agile and DevOps [4,5]. Probably the most succinct comparison I’ve seen is: “Agile can be viewed as addressing communication gaps between customers and developers, while DevOps addresses gaps between developers and IT operations / infrastructure.” . Consequently, many enterprises aim to apply both sets of principles for their customer value streams.
The motivation to jump on the “DevOps bandwagon” is directly related to competitiveness and is being driven by the potential for faster time to market for new applications or new features in existing applications, higher release/deployment frequency, lower failure rates of releases, faster implementation of fixes, and faster recovery times in the event of system outages. The attraction to adopt DevOps principles is also being enhanced by the alignment of several relatively recent factors, including growing ubiquity of virtualized cloud-based infrastructure, previous familiarity with agile/lean principles, growing body of DevOps best practices, wider availability and selection of tools for configuration management, data center automation, test automation, continuous integration, and team collaboration tools. The concept of rapid/continuous delivery of software to customers is nowhere more prevalent than in today’s modern cloud environments. Users of Microsoft 365 certainly understand this as they see new features released on a seemingly daily basis.
What collaboration means in DevOps
Based on the above mention of continuous delivery and customer value streams, you might assume that DevOps collaboration is all about automating the steps in that value stream. To be sure, there is a plethora of tools to support DevOps and automate processes. In fact, there is a specific term used to refer to the combination of automation areas and related tools for DevOps called a “Toolchain”. Although not the focus of this article, a typical DevOps toolchain and a list (not exhaustive) of some available tools are shown in the figure below.
No matter how extensive the toolchain, automation only covers a portion (and some would argue a less important portion) of DevOps principles. To illustrate, some members of the DevOps community have promoted the “C.A.L.M.S” acronym as an easy way to describe DevOps principles . As shown in the figure below, “automation” is only one part of core DevOps principles. First and foremost is “C” for culture. And this is where collaboration comes in.
DevOps collaboration means that there is transparency, clarity, and repeatability when the value stream passes from dev processes to ops process and all team interactions are guided by a customer focus, i.e., “what is customer impact?”. It also means that when unplanned problems arise, all teams view them as “system” problems, not a “dev” or “ops” problem. In short, the entire team has shared ownership for solving problems.
Team structure/topology is an important factor influencing DevOps team culture and collaboration. Since DevOps is now maturing across industries, a fairly well-known set of “patterns” and “anti-patterns” have been identified for DevOps team structures. Matthew Skelton, along with others, has developed a fairly handy web site covering these topologies . The patterns vs. anti-patterns comparisons share some similarities with well-known problems with agile development approaches, i.e., “agile in name only” but in this case, it is “DevOps in name only”. A simple example of this is when organizations decide to carve out some developers, some testers, and some operations people and call them a “DevOps Team” and supply them with some automation tools only to find out that the overall flow process has to be interrupted for Architectural decision approvals or database deployments since there is no Architectural or DBA participation on the team.
Ultimately, each individual organization needs to define the specifics of what collaboration means in its environment. However, whatever definition is ultimately identified, it must be based on DevOps principles.
Effective ways to promote collaboration for DevOps Teams
The surest way to achieve effective collaboration for DevOps teams is to build it into the culture of the team. This means basing your culture on the following:
- Promote transparency – everyone has access to all information (through both online resources and meetings) throughout the value stream.
- Strive to understand dependencies and identify mechanisms to deal with the impacts of unfulfilled dependencies.
- Provide blended teams with team members from different core competencies to build empathy and common understanding of team tasks.
- Focus on providing “guardrails” instead of strict policies for DevOps teams – DevOps teams need to have a sense of ownership of their processes and tools. Rather than dictate exact standards on “what to do”, provide guidance on “what not to do”.
- Eliminate the “blame game” and insist upon shared ownership of accomplishments and failures – team success or failure is never a function of one team member or group of team members
- Establish a focus on continuous improvement and reward any efforts on knowledge sharing
- Be deliberate about communication styles with a bias towards direct communication (face-to-face, video conference, or chat)
Beyond establishing the proper culture, effective collaboration becomes more a matter of monitoring the effectiveness of your DevOps team and overcoming any challenges that appear. Challenges could be technical (example – toolset conflicts), mindset-related (example – team lapses into blaming for issues rather than learning from them), security & compliance (example – team hits “guardrails” while attempting to shortcut security procedures) just to name a few. The folks at Atlassian have an excellent (and free!) tool to assist with monitoring teams and implementing remediation approaches called the “Team Playbook”. You can check it out at https://www.atlassian.com/team-playbook.
What does the future hold?
As mentioned above, Agile and DevOps emerged as a result of applying Lean concepts to address communication gaps and challenges between customers and developers and between developers and operations. It’s certainly no stretch to imagine the same scenario playing out for other areas of the enterprise all the way up to program and portfolio strategy and management areas. In fact, there already are examples where agile/DevOps approaches have failed to meet expectations in some large organizations, due mainly to conflicts between the overall corporate culture with the agile/DevOps culture . These examples all point to a need to extend lean concepts across the entire organization. Not surprisingly, multiple efforts/approaches have been developed over the past few years to extend lean principles into these areas using “scaled agile” approaches but the “jury is still out” on the long-term effectiveness of these approaches.
- Forsgren, Nicole. (2019). The 2019 Accelerate State of DevOps: Elite performance, productivity, and scaling. Retrieved from https://cloud.google.com/blog/products/devops-sre/the-2019-accelerate-state-of-devops-elite-performance-productivity-and-scaling
- Brown, Donovan. (2015). What is DevOps? Retrieved from http://donovanbrown.com/post/what-is-devops
- Kornilova, Irma. (2017). DevOps is a culture, not a role! Retrieved from https://medium.com/@neonrocket/devops-is-a-culture-not-a-role-be1bed149b0
- Buchanan, Ian. Agile and DevOps: Friends or Foes? Retrieved from https://www.atlassian.com/agile/devops
- Watts, Stephen and Kidd, Chrissy. (2017). DevOps vs Agile: What’s the Difference and How Are They Related? Retrieved from https://www.bmc.com/blogs/devops-vs-agile-whats-the-difference-and-how-are-they-related/
- com. (2019). Agile Vs. DevOps: What’s the difference? Retrieved from https://www.guru99.com/agile-vs-devops.html
- Seroter, Richard. (2014). Exploring the ENTIRE DevOps Toolchain for (Cloud) Teams. Retrieved from https://www.infoq.com/articles/devops-toolchain/
- Oehrlich, Eveline. (2015). DevOps Now With CALMSS. Retrieved from https://go.forrester.com/blogs/15-03-02-devops_now_with_calmss/
- Skelton, Matthew. (2019). What Team Structure is Right for DevOps to Flourish? Retrieved from https://web.devopstopologies.com/
- Siroky, Dalibor. (2019). Agile and DevOps are failing in Fortune 500 companies. Retrieved from https://www.plutora.com/blog/agile-devops-failing-fortune-500-companies-wake-call-us