How to organize a software development team

H

The best performing software development teams that I've seen in the field are value stream aligned.

To understand what this entails you'll first need to understand what a value stream is.

What is a value stream?

"A value stream depicts the ways in which an organization orchestrates its business capabilities to create stakeholder value."

It shows for a given persona, what the organization needs to be able to do, in order to provide the value that this persona is looking for.

As an example, consider the following value stream that one can encounter in an amateur sports club: Fundraising events.

Value stream

What is a stream aligned team?

A stream aligned software development team has a deep understanding of what the people, which they are serving, value.

Ideally they are also in direct contact with their users to quickly gather and incorporate feedback.

Based on this feedback they ensure that the software they create (or buy) is effectively supporting the capabilities needed by the organization, or the ecosystem around the organization, to fulfill this value.

They own the value stream from end to end and can work on the respective capabilities autonomously, without dependencies on other teams.

Scaling value stream aligned teams

In larger development organization, it is recommended to have a several teams aligned to the most important value streams.

At some point it becomes more effective to have supporting teams though, instead of further splitting up the value streams.

Scaling stream aligned teams

These supporting teams can be focussed on:

  • Shared value stream stages for sections of the value streams that are generic for all persona's
  • Specific business capabilities that require very specific skillsets
  • Platform teams that take care of shared infrastructure (such as the build infrastructure, hosting or data infrastructure).

Make sure that these teams are supporting and don't become a dependency of the stream aligned teams!

Guilds

Many companies have the tendency to group people by skillset (frontend teams, backend teams, QA teams, etc...), I recommend against this practice as the alignment with the customers, capability and thus value will get lost this way.

Instead of grouping these skillsets in teams, provide a guild system where they can regularly meet and discuss skill specific topics.

Governance

Similar to topic guilds, but for governance reasons, provide an infrastructure where the leaders of each team can meet to discuss progress and team practices.

About the author

YVES GOELEVEN

I've been a software architect for over 20 years.

My main areas of expertise are large scale distributed systems, progressive web applications, event driven architecture, domain driven design, event sourcing, messaging, and the Microsoft Azure platform.

As I've transitioned into the second half of my career, I made it my personal goal to train the next generation of software architects.

Get in touch

Want to get better at software architecture?

Sign up to my newsletter and get regular advice to improve your architecture skills.

You can unsubscribe at any time by clicking the link in the footer of your emails. I use Mailchimp as my marketing platform. By clicking subscribe, you acknowledge that your information will be transferred to Mailchimp for processing. Learn more about Mailchimp's privacy practices here.