Skip to content

Instantly share code, notes, and snippets.

@febriliankr
Forked from mcollina/principles.md
Created February 22, 2022 14:59
Show Gist options
  • Save febriliankr/2540d5cb4b7db424163b603073776e2b to your computer and use it in GitHub Desktop.
Save febriliankr/2540d5cb4b7db424163b603073776e2b to your computer and use it in GitHub Desktop.
Matteo's Technical principles

Matteo Technical Principles

1. Conway’s Law is paramount.

Any organization that designs a system (defined broadly) will produce a design whose structure is a copy of the organization's communication structure.

In order to design a piece of software we need to “design” the team that is going to produce it.

2. Developer Experience is key to productivity

Developers must spend as much time in the “flow” state to maximize the joy their profession sparks. A developer in flow state can resolve any problem in front of them. Meetings and constant interruptions break them out of the "flow", impacting their job satisfaction and productivity. Given that coordination overhead (= meetings) increases exponentially with the number of people in a team, developers works best when in teams of 4-6 people.

Optimizing developer productivity is a fundamental activity of every team. Every tool and framework could impact developer productivity. Choose wisely.

3. DORA metrics, not burndown charts

Scrum and other Agile methodologies predicates the use of story points and time to assess how much work will fit in a sprint. Then, the team is benchmarked with these estimates. This incentives writing low quality software as bug fixes will be more story point to churn later on.

Continuous Deployment is the way. The best way to measure CD are DORA metrics:

  1. deployment frequency (DF)
  2. lead time for changes (LT)
  3. mean time to recovery (MTTR)
  4. change failure rate (CFR)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment