DZone
Thanks for visiting DZone today,
Edit Profile
  • Manage Email Subscriptions
  • How to Post to DZone
  • Article Submission Guidelines
Sign Out View Profile
  • Post an Article
  • Manage My Drafts
Over 2 million developers have joined DZone.
Log In / Join
Refcards Trend Reports Events Over 2 million developers have joined DZone. Join Today! Thanks for visiting DZone today,
Edit Profile Manage Email Subscriptions Moderation Admin Console How to Post to DZone Article Submission Guidelines
View Profile
Sign Out
Refcards
Trend Reports
Events
Zones
Culture and Methodologies Agile Career Development Methodologies Team Management
Data Engineering AI/ML Big Data Data Databases IoT
Software Design and Architecture Cloud Architecture Containers Integration Microservices Performance Security
Coding Frameworks Java JavaScript Languages Tools
Testing, Deployment, and Maintenance Deployment DevOps and CI/CD Maintenance Monitoring and Observability Testing, Tools, and Frameworks
Partner Zones AWS Cloud
by AWS Developer Relations
Culture and Methodologies
Agile Career Development Methodologies Team Management
Data Engineering
AI/ML Big Data Data Databases IoT
Software Design and Architecture
Cloud Architecture Containers Integration Microservices Performance Security
Coding
Frameworks Java JavaScript Languages Tools
Testing, Deployment, and Maintenance
Deployment DevOps and CI/CD Maintenance Monitoring and Observability Testing, Tools, and Frameworks
Partner Zones
AWS Cloud
by AWS Developer Relations
  1. DZone
  2. Testing, Deployment, and Maintenance
  3. DevOps and CI/CD
  4. Organize Software Delivery Around Outcomes, Not Roles: Continuous Delivery and Cross-Functional Teams

Organize Software Delivery Around Outcomes, Not Roles: Continuous Delivery and Cross-Functional Teams

Jez Humble user avatar by
Jez Humble
·
Dec. 21, 11 · Interview
Like (0)
Save
Tweet
Share
7.95K Views

Join the DZone community and get the full member experience.

Join For Free
When implementing continuous delivery, it’s easy to focus on automation and tooling because these are usually the easiest things to start with. However continuous delivery also relies for its success on optimizing your organizational structure for throughput. One of the biggest barriers we at ThoughtWorks have seen to continuous delivery is teams organized by role or by tier, rather than by business outcome. In this post I’ll address the root cause of this problem, and how to overcome it.

The Devops movement emerged from a frustration with the engineering, testing, and operations silos that have been created in IT organizations. Why do these silos exist? There is a quote from Coleen Young that cuts to the core of this issue:

Virtually every IT organization must face a process transformation [which will] inevitably drive radical changes in organizational structure. Traditional IT service delivery and organizational models achieved efficiency at the expense of effectiveness. [At one time when computing was expensive and resources were scarce] it made sense to maximize the utilization and life cycle costs of assets… This approach to resource orchestration inevitably resulted in functional silos. The optimized process-based organization is horizontally focused on outcomes, not vertically oriented around skills 1.


Creating silos is a rational response to the historical expense of computing resources and the high transaction cost of putting out a release. There is a direct relationship between batch size and this transaction cost, expressed in the Economic Lot Size equation which governs the trade-off between the transaction cost–the cost of sending a batch to the next process (say from development to testing)—-and the holding cost—the cost of not sending it. This is discussed in Donald Reinertsen’s book, The Principles of Product Development Flow (my favourite IT book of 2009)—which contains Figure 1, below (p35, discussion p121):

Figure 1

Continuous delivery: reducing transaction cost

In the mainframe era, the transaction cost of putting out a release was small. But as we moved first to client-server systems, and thence to web-based systems, the transaction costs of testing and releasing software became much higher, providing by far the biggest contribution to total cost. This drove up batch size and resulted in the silos we see today.

But the message of continuous delivery is that we now have the tools, patterns and practices to drive down the transaction cost of releasing a change enormously—to the extent that holding cost is actually a much bigger contribution to the total delivery cost.

Given this, one key rationale for creating organizational silos no longer holds. And since silos lead to lower software quality, lower production stability, and less frequent releases, there are many good reasons to get rid of them, at least for teams working on strategic projects 2.

Cross-functional teams: optimizing for throughput

The alternative to silos is cross-functional teams, in which (as Young suggests) we optimize for throughput—or lead-time. By implementing the practices of continuous delivery, we reduce transaction costs to a negligible level. Next, we create very small batches of work by limiting work in process and focus on getting that functionality either released to users, or at least releaseable to users, in the shortest time possible.

Cross-functional teams are not a new idea, but their importance is often under-estimated. Having a cross-functional team is a vital ingredient for reducing lead-time because much of the delay getting functionality released is incurred through communication overhead. When everyone involved in the delivery of a product or service is co-located, developers can call over testers and show them what they’ve been working on so that they can get fast feedback, testers and developers can collaborate on creating functional acceptance tests, developers can discuss proposed schema changes with dbas before they make them, and architectural trade-offs can be discussed with an infrastructure expert before any code gets written.

This not only makes software delivery much faster, but also much more fun. And of course we end up with higher quality software, lower-risk releases, and much faster responsiveness to our customers. These considerations were key in Amazon’s decision to move to a service-oriented architecture with cross-functional teams.

There are a couple of common objections to cross-functional teams. One is that it is prohibited by a control known as segregation of duties when your organization is subject to regulations such as Sarbanes-Oxley and PCI-DSS. In fact, segregation of duties can be implemented more effectively within cross-functional teams, as described in an article I recently co-authored for Cutter IT Journal (registration required).

Annother objection is the additional cost of creating cross-functional teams and implementing continuous delivery. This is true, which means that you only want to incur this extra cost for the part of your service portfolio that is strategic. The additional cost in this case is paid back many times by the benefit of getting to market faster, learning from your users and iterating rapidly, and avoiding building functionality that is not useful (the biggest source of waste in software development).

How should organizations move to a cross-functional model?

If you have a small IT organization, say less than thirty people, you can move to a cross-functional model in one go. With larger organizations, as with all things in continuous delivery, you should proceed iteratively and incrementally.

Start with a pilot product. Make sure you’re measuring total cost and revenue delivered over the lifecycle of the product, in addition to metrics such as cycle time and the incremental value delivered by every new release. The team will need to own the SLA for the service, and crucially should be able to self-service their own infrastructure, including testing and production environments, without having to wait days or weeks for hardware to be provisioned. The team should be given plenty of time to implement continuous delivery, and focus on delivering a minimum viable product and then iterating rapidly in response to real data from users.

Large organizations with distributed teams are actually a great target for moving to a cross-functional model: the key here is simply to ensure that teams are not grouped by role. Nothing kills continuous delivery of high quality software faster than having a development team in one country, a testing team in another, and the operations team in a third.

Finally, teams should focus initially on verifying their business hypothesis by devising the smallest possible minimum viable product to test it, and pivoting in the case of failure.


Thanks to Don Reinertsen for permission to use figures from his book, The Principles of Product Development Flow. Thanks to Don Reinertsen, Pat Kua, Dutch Steutel, Dennise Openshaw, and Chris Hilton for feedback on an earlier draft of this post.

1 Colleen M. Young, “Six steps to process-based IT organizational design”, Stamford, CT: Gartner, 2006, via Steve Bell, Enterprise Agility (forthcoming).

2 Note that some of the problems of silos can be mitigated through better management, such as ensuring resources within silos are not excessively loaded, and rotating people through different groups to encourage collaboration and understanding.

Source:  http://continuousdelivery.com/2011/12/organize-software-delivery-around-outcomes-not-roles/

teams Delivery (commerce) Continuous Integration/Deployment Software

Opinions expressed by DZone contributors are their own.

Popular on DZone

  • Low-Code Development: The Future of Software Development
  • How To Set Up and Run Cypress Test Cases in CI/CD TeamCity
  • 5 Steps for Getting Started in Deep Learning
  • Simulating and Troubleshooting BLOCKED Threads in Kotlin [Video]

Comments

Partner Resources

X

ABOUT US

  • About DZone
  • Send feedback
  • Careers
  • Sitemap

ADVERTISE

  • Advertise with DZone

CONTRIBUTE ON DZONE

  • Article Submission Guidelines
  • Become a Contributor
  • Visit the Writers' Zone

LEGAL

  • Terms of Service
  • Privacy Policy

CONTACT US

  • 600 Park Offices Drive
  • Suite 300
  • Durham, NC 27709
  • support@dzone.com
  • +1 (919) 678-0300

Let's be friends: