Engineering Fundamentals

What actually makes software hard to change, and why the cost of the next change — not elegance, not pattern count — is the thing design is optimising.

What Makes Software Hard to Change
▶ lab

Not size, not age, and not ugliness. A change is expensive when the knowledge it touches is spread across places that do not know about each other.

Q · Two codebases are the same size and one is a nightmare to change. What is actually different about it?
The Cost of Change

Design decisions are bets on which changes arrive. The bet is priced in indirection now against edits later, and it can lose.

Q · How do I decide whether a structural change is worth making, before I know which requirements are coming?
The Design Loop
▶ lab

Requirement, constraints, invariants, responsibilities, boundaries, interfaces, state, dependencies, failure, implementation, tests, feedback, evolution — in that order, because each answer constrains the next.

Q · What is the general shape of a design decision, so I can ask the same questions of any feature?
Design, Architecture and System Design

Three different grains, three different reversibility profiles. Confusing them is why teams argue about folder layout as though it were a scaling decision.

Q · Where does code design stop and architecture begin, and does the distinction actually matter?
Local Reasoning

Whether you can understand one piece of code without loading the rest of the system into your head. It is the property that decides how a codebase feels to work in.

Q · Why does one codebase feel workable at 200,000 lines and another feel unmanageable at 20,000?
Changeability Is the Goal

Design has no intrinsic virtue. Every structural claim in this domain has to cash out as a change that got cheaper, or it is decoration.

Q · How do I tell a good design argument from an aesthetic preference?
When Design Does Not Pay

Structure is an investment against future change. Where there is no future, it is pure cost — and knowing which code that is, is part of the skill.

Q · When is the right amount of design close to none?