What's slowing down my team?
Overview
In my experience, team performance is often discussed in fairly ad-hoc terms. We have plenty of formalisms to reason about network communication and scalability, why not apply some of these to team performance?
All we need is some way to measure work performed and a unit of concurrency.
Agile teams have both of these. Team size is our unit of concurrency and Story Points is the way we can measure work.
Modeling team performance
- Story points per sprint
- Number of people in the team
The total number of points that will be burned down in a Sprint is,
- The average number of points for one person
- Times the number of people in the team
Work per Sprint - Expression
$$ P(people) = storypoints * people $$
$$ P(people) = \frac{storypoints * people}{1} $$
P | Performance |
people | The number of people in the team |
storypoints | The number of Story Points for 1 person in 1 Sprint |
Impediments to linear scalability
- Contention - Usage of a shared, finite resource
- Usually a delay in starting or continuing work
- Crosstalk - A form of direct or indirect communication
- Usually an interruption of work
Contention
Example : One person runs the tests
Contention
Contention - relation to scalability
$$ P(people) = \frac{storypoints * people}{1 + (contention * (people - 1))} $$
P | Performance |
people | The number of people in the team |
storypoints | The number of Story Points for 1 person in 1 Sprint |
contention | The cost of sharing a resource (0 to 1) |
Contention - Example
Crosstalk
A form of direct or indirect communication between people. Also known as coordination or cohesion. Generally an interruption of work. For example : Daily standup
Eveybody communicates with everybody else so the number of channels for a groups is:
$$ Channels(people) = people * (people - 1) $$
$$ Channels(people, talkers) = talkers * (people - 1) $$
Crosstalk - channels
Crosstalk - channels
Crosstalk - full mesh
Crosstalk - crosstalk channels
Crosstalk - relation to scalability
$$ f(x) = \frac{nx}{1 + kx(x-1))} $$
- n is concurrency - ideal parallelism, linear scaling
- k is cohesion - time waiting for data to become coherent
Crosstalk - example
Black box models - Team
One person runs the test suite | One team runs the load tests |
---|---|
Isomorphism |
Black box models - Organization
Universal Scalability Law
$$ USL(x) = \frac{nx}{1 + \sigma(x-1) + \kappa x(x-1)} $$
- n is concurrency - ideal parallelism, linear scaling
- s is contention - cost of sharing resources
- k is cohesion - time waiting for data to become coherent
Interactive exploration
https://www.desmos.com/calculator/ekkdy5mlhc
DevOps vs Command and Control
C&C | DevOps |
---|---|
Failure is not an option | Fail fast, learn |
One person, one function | Roles are flexible |
One person, one function | Roles are flexible |
Variability
Tasks vary in size and complexity.
Leads to variability in,
- Compute (CPU)
- IO (Network)
- Storage (RAM)