that organizations which design systems (in the broad sense used here) are constrained to produce designs which are copies of the communication structures of these organizations. We have seen that this fact has important implications for the management of system design. Primarily, we have found a criterion for the structuring of design organizations: a design effort should be organized according to the need for communication. Melvin E. Conway, 1968 “HOW DO COMMITTEES INVENT”
the matrix organization, engineers couldn’t form stable teams nor deepen domain knowledge • Only a part of members was in charge of the microservices migration project [Change] • We re-organized all backend engineers into domain teams which were based on product features. • All backend teams started microservies migration tasks. [Unplanned] • Skilled engineers who have worked in ms migration project tentatively moved to other division... • We lacked the knowledge of microservices development, etc.
got development and domain knowledges • Every domain teams has grown into mature team. [Change] • The number of feature development requests increased • Our productivity seemed to decrease Have our domain teams gotten mature?
feature development, engineers had a lot of “inter-team” communications. → a problem of a teams structure • Engineers sometimes discussed about which team should handle instead of deﬁning specs. That discussion took longer time, had a difﬁculty to reach a consensus. → a problem of a re-structuring an architecture
Domain knowledge Team members can have a strong motivation to deepen their team’s domain knowledge. Team members don’t have so strong motivation to know other domains. Ownership Team members can have a strong ownership of their domains. Team members don’t have so strong ownership against entire system. Architecture Tends to optimized partially It’s difficult to encourage members to think about entire architecture. Team assignment Assigning new member to an existing team is not so difficult. It’s difficult to move a member across teams. It’s also difficult to build a new team. Feature development If it’s handled in one domain team, it’s easy. If there is no domain team where a feature fits in, or a feature is covered by multiple domains, the development cost tends to increase