際際滷

際際滷Share a Scribd company logo
Strategies for handling
Software Complexity
Gabe Hamilton
Problems Complexity
Plan
Prototype
Almost Done
Complete
More detail = more moving parts = more complexity
Problems
Interacting Pieces
Hundreds of components
Multiple teams
Causes Emergent Behavior
Chaos Theory
Unstable aperiodic
behavior
in deterministic nonlinear
dynamical systems.
Complexity Theory
Numerous independent elements
continuously interact
Strategies
We deal with complex systems by breaking them
down.
One way we can break them down is by level of
complexity.
Kun-iv-in
Cynefin
Just how much
complexity are we
talking about here?
Complex
Cause <- Effect
Complicated
Cause -----> Effect
Obvious
Cause -> Effect
Chaotic
Cause? Effect?
Unknown
/
Disorder
Obvious
Cause -> Effect
Build a checklist and follow it
Scale it up
Businesses dream of these problems
Complicated
Cause -----> Effect
Domain of Experts
Most of us knowledge workers are trained
for these type of problems
Complex
Cause <- Effect
Emergent patterns can be perceived but not predicted
The last project was successful because we did X,Y,Z, we
need to do X,Y,Z on this project. Wrong
Strategy: Adaptation
Adaptation is the
key practice of
Agile Software
Development
No problem:
We have Retrospectives
It is ok that this project feels different than
the last one.
The beginning has a different pace than the middle, or the
weeks before launch, or initial usage, or scaling.
Projects exist in a
Complex Domain
So We Adapt
to market conditions to new tools
to team composition to new problems
To what is working now

Good leadership is not a
one size fits all
proposition.
-https://hbr.org/2007/11/a-leaders-framework-for
-decision-making
Questions?

Velocity Measures
Are specific to projects
and teams
You need to normalize

Ruining an informational
metric by incentivising it

More Related Content

Adaptive software engineering