Complexity !== complicated
Talk by Kyle Coberly
Dec 3, 2024
Denver, CO
Systems Theory
Simplicity is not the opposite of complex, they are on different vectors.
Background: processes have an interface, system is made of many processes, systems are processes (everything is a fractal).
Complicated systems have a lot of processes, but they operate predictably
- Difficulty: how much effort is involved
- Stability: can you predict the output
- Verbosity: ratio of tokens to ideas
- Clarity: how much context is required
- Complexity: measure of interdependence, opposite is isolation
Complexity limits scale and kills.
Complexity
- Program complexity: how many ways to break. Shared state, indirect input and output, conditional logic.
- Architecture complexity
- Product complexity: caused by poor org structure and bad feedback loops
Requisite Complexity
Software is a complexity trap.
Market is insanely complex, so org must be dynamic and complex. If org is complex then product must be complex. If product is complex then architecture and algorithms must be complex.
Everything has to be easy to change because market is always changing.
Solutions
Manual things should be simple, complex things should all be automated (computers are our friends).
- Compartmentalization
- Simulation
- Emergent design
- Solve conway's law
- Kanban should never go left
- Design for efficient changes
Efficient changes is the ultimate goal - not making perfect guesses (that is impossible)
In complex environments, cause and effect is only knowable looking back.
Organization can focus on incentive structures for product market fit. Workers can manage up or build bubbles of excellence.
Idle time is needed in a flexible system, it is not waste.