FATA #5 / Building tech teams: Software architect's perspective

Nazar Khimin
2 min readDec 21, 2021

[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:

  1. Communication
  2. Dependencies = Load (Sweller)/Cognitive load= [Intrinsic (language)/Extraneous (environment)/ Germane (business)]
  3. 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)

  1. Squad — 3–5 members
  2. Team — 3–5 squads (10–25)
  3. 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

  1. Ownership
  2. Autonomy
  3. 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?

--

--