Form Cross-Functional Team out of Layer-Team Members
TODO: Or: Form Stream-Aligned Team out of Layer-Team Members
Motivation
When the teams in your projects are organized following technological layers, Conway’s Law (see [@Conway1968]) will inevitably bite you. Even the smallest change to your system will usually involve more than one of them. The addition of one simple field, for example, will cause work for UI team, business logic team, and database team alike.
When you apply Extract Bounded Context or Implement Bounded Context from Scratch, the question arises, “which team will be responsible for the newly created bounded context?” None of the layer teams is fit for this purpose, because the new bounded context is a vertical and has UI, business logic, and database parts. On the other hand we can’t assign the bounded context to all the teams, because one of the rules is that it should not belong to more than one team.
The solution here is to form a new team that has all the required knowledge—a cross-functional team.
Mechanics
- Choose (at least) one person from every layer team.
- You’ll want the early adopters here, not the sceptics. [@MannsRising201?]
- Form a new team of less than about nine people.
- Let the new team take responsibility for the new bounded context.
- In the new team: Encourage the development of a t-shaped skill profile and other agile techniques to break knowledge silos.
- For the time being let the rest of the teams organized as they are. The monolith is still there and has to be maintained.