The future of teams: Crossfuctional & T-Shaped
· 4 min read
In software development, over the last years we always talk about on cross-functional teams, as a good split of responsibilities to provide autonomy in teams. What does that mean? Why is this so? And what does it look like?
History & types of teams
It's probably easier to see the evolution of team culture as a chronology, as it has been an evolving thing.
Specialization-Based Teams
Traditionally, when we had only big monolithic applications, teams have been split by their expertise. This meaning all the quality assurance, Frontend, Backend roles will be in a team with their expertise-based peers. This might look like the next image:
What are the pros and cons of this model:
- ✔️ Improve depth of knowledge from peers.
- ✔️ No dependency on individuals, the Bus factor tends to be bigger than 1.
- ❌ Bottlenecks in between teams, due to different priorities and timelines.
- ❌ Lack of breath of knowledge.
- ❌ Low domain expertise due to coverage of all domains.
- ❌ Continuous context switch due to support of multiple domains.
- ❌ Design issues due Conway's Law relation in between communication patterns and architecture.