FATA #5 / Building tech teams: Software architect's perspective
[FATA] — From test automation to architecture article series
Two basic questions: What is architecture? What is a team?
Architecture — it’s a set of constraints that satisfy:
- Customer Satisfaction
- Time to market depends on Tech Maturity, Complexity (Monolith, Microservice)
- Budget
The main idea of architecture is to complete a project successfully.
Goals:
- Communication
- Dependencies = Load (Sweller)/Cognitive load= [Intrinsic (language)/Extraneous (environment)/ Germane (business)]
- Load
- Conway’s Law = Organizations, who design systems, are constrained to produce designs that are copies of the communication structures of these organizations. Categories: Development (SE), Production (SRE engineers), Platform, Enabling team(the team that investigates new technologies, and learn tech engineers). Communication should restricted and should follow architecture but not in a reverse way.
- Load (Sweller)/Cognitive load —
Intrinsic (language)
Extraneous (environment)
Germane (business)
Size (Dunbar)
- Squad — 3–5 members
- Team — 3–5 squads (10–25)
- Division — 3–5 teams (25–125)
Amazon’s Two Pizza Rule
One Simple Rule for Maximizing Meeting Effectiveness. Amazon CEO Jeff Bezos has this rule: no meeting should be so large that two pizzas can’t feed the whole group.

Encourage
- Ownership
- Autonomy
- Trust
Techniques
Common:
- Swarming — it’s the next step of pair programming — when you organize experiment meetings to discuss either worth idea to make implementation. For this should be ideas, systematic, person changeability.
- DevEx — Developer experience refers to how easy or difficult it is for a developer to perform essential tasks needed to implement a change.
- DevOps
Ad-hoc
- Trunk-based development
- Fast delivery
Questions
- F2F or documentation
- Team leads or community leads ?
- Product owner is part of team?