Two-pizza teams
The fundamental issue with large organizations is consensus-building. Consensus is needed to move forward on most projects due to the interdependent nature of how we build our technology systems. Since systems are typically large and span multiple teams, once one team makes changes to their part of the system, it may have upstream and downstream effects that they did not anticipate (on subsystems owned and maintained by other teams). The following are some examples:
- Upstream effect: The updated subsystem now operates so quickly that it is straining the data feed with pulls for new data
- Downstream effect: The updated subsystem is generating data much more quickly which is overwhelming the ability of the downstream consumer to process the feed
With the broad adoption of decoupled systems and SOAs, we solve this from a technology aspect, but the organization has yet to adapt to this new reality. If we have decoupled systems, why not decoupled organizational units? Enter the two...