Evolvability

Change amplification, local reasoning and encapsulation radius — the properties that decide whether the tenth change is as cheap as the first.

Evolvability
▶ lab

A system is evolvable when the changes it is actually likely to receive stay local and understandable. The word "likely" carries the entire claim.

Q · Two systems both work today and both have tests. What makes one of them still cheap to change in three years?
Change Amplification
▶ lab

One requirement changes; count the modules, interfaces, tests and deployments that must move with it. Lower is usually better, and not always.

Q · One sentence changed in the requirements. How many places in the code have to change, and is that number a design failure?
Encapsulation Radius

Pick an implementation decision and ask who has to be told when it changes. The set of modules that notice is the radius, and a smaller one is stronger hiding.

Q · If I change how this module works internally — not what it promises — how far does the shockwave travel?
Extensibility

Extensibility is cheap along one axis and expensive along every other, so the only real question is which variation you have actually observed.

Q · Should I build an extension point here, and if so, for which kind of variation?
Plugin Architecture

A plugin system is right when independent parties genuinely must extend you. What it costs — a frozen API, a lifecycle, isolation and compatibility — is permanent.

Q · We want third parties to extend the product. What are we actually signing up for?
Stability and Dependency Direction

Something many modules depend on is expensive to change. Point dependencies toward the things that change least — and treat every stability metric as a hint, never a measurement.

Q · This module is depended on by twelve others. What does that oblige me to do differently?
Speculative Generality
▶ lab

Machinery built for a variation that never arrived: one implementation behind an interface, a plugin system with no plugins, an event bus for a local call.

Q · How do I tell structure that is paying for itself from structure built for a future that never came?