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.
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.
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.