kevdistilled

Small teams should be the default organizational unit

Coding is not the bottleneck anymore, people are, so small teams should be the default organizational unit. Having more people involved means more bottlenecks. Smaller teams are more nimble and can move much faster.

I think the default organizational unit is a small, bold team with the following capabilities: a backend / infrastructure focused person, a product / design focused person, and a domain expert. Teams should be small and multidisciplinary. Teams can start with one person and grow to 4 people, probably around 6-8 max.

Teams own meaningful problems and ambitious business outcomes. When the scope becomes too complex or priorities change, the team should split.

Horizontal teams exist to support the company as a whole by providing capabilities to the default organizational unit. This includes things like infrastructure, CI/CD, compute / GPU provisioning, observability, security, etc. Horizontal teams should build self-serve platforms and standardization. Horizontal teams could possibly be bigger, but their primary goal is to increase the autonomy of the default unit.

So, run the organization with good programming fundamentals: composition over inheritance, high cohesion, low coupling, shared interfaces, and encapsulation.

#thinking