Definition:
Conwayβs Law states that βorganizations which design systemsβ¦ are constrained to produce designs which are copies of the communication structures of these organizations.β In simple terms, the software architecture you build will mirror how your teams are organized and communicate. If your teams are siloed, your software will be siloed; if your teams collaborate well, your software will be well-integrated.
Key Properties:
- Organizational mirror: Software structure reflects team structure
- Communication patterns: How teams talk affects how code is structured
- Inevitable influence: Happens whether you plan for it or not
- Structural constraint: Team boundaries become system boundaries
- Feedback loop: System structure can reinforce organizational structure
Core Concepts:
- Team boundaries: Separate teams create separate system components
- Communication overhead: Cross-team coordination creates system coupling
- Ownership domains: Teams own specific parts of the system
- Interface design: Team interactions define system interfaces
- Reverse Conway maneuver: Reorganize teams to get desired architecture
Example:
cross-functional feature teams
π CROSS-FUNCTIONAL FEATURE TEAMS
=================================
User Management Team (5 people)
βββ 1 Frontend Developer
βββ 1 Backend Developer
βββ 1 Mobile Developer
βββ 1 Database Expert
βββ 1 DevOps Engineer
βββ Owns: User registration, authentication, profiles
Product Catalog Team (5 people)
βββ 1 Frontend Developer
βββ 1 Backend Developer
βββ 1 Mobile Developer
βββ 1 Database Expert
βββ 1 DevOps Engineer
βββ Owns: Product display, search, recommendations
Order Processing Team (5 people)
βββ 1 Frontend Developer
βββ 1 Backend Developer
βββ 1 Mobile Developer
βββ 1 Database Expert
βββ 1 DevOps Engineer
βββ Owns: Shopping cart, checkout, order management
Payment Team (5 people)
βββ 1 Frontend Developer
βββ 1 Backend Developer
βββ 1 Mobile Developer
βββ 1 Database Expert
βββ 1 DevOps Engineer
βββ Owns: Payment processing, billing, refunds