Organizations must design teams intentionally by asking these questions: Given our skills, constraints, cultural and engineering maturity, desired software architecture, and business goals, which team topology will help us deliver results faster and safer? Where should the boundaries be in the software system in order to preserve system viability and encourage rapid flow?