Two series, both about the same question from different ends: what makes code possible to change.

Design Patterns, in Learning Order

The Gang of Four’s twenty-three, reordered so the patterns that are easiest to confuse are studied together – because what distinguishes two patterns is never the structure, it is the intent. Code is Kotlin, and every pattern is tagged with what the language did to it.

26 posts · complete

Code You Can Change

SOLID, legacy code, and refactoring – with the two canonical books put in direct conflict where they disagree, which is the most instructive thing in this area. The subject is not clean code; it is changeable code, and the difference is measurable.

Ends in a one-page procedure for the moment you are actually afraid of a file.

16 posts · complete


Coding agents: read Practices before writing or changing code — the conclusions from both series as decision rules, without the argument.


Three principles run under both:

  1. Program to an interface, not an implementation.
  2. Favor object composition over class inheritance.
  3. Encapsulate what varies.