Reference · Strategic Programming
Complexity Symptoms — Cheat Sheet
The two mindsets (Ousterhout)
| Mindset | Goal | Cost profile |
|---|---|---|
| Tactical | Make the current task work, fastest path. | Fast now; complexity compounds; codebase slows over months. |
| Strategic | Working code isn't enough — protect the long-term structure. | 10–20% slower now; pays back within months. |
AI assistants are tactical by construction: they optimize for passing your current test. The strategic layer is always the human directing them.
The three symptoms of complexity
| Symptom | Definition | Tell (in an AI-directed workflow) |
|---|---|---|
| Change amplification | A simple change requires edits in many places. | Small request → many files touched; same logic/value duplicated. |
| Cognitive load | How much you must know to change something safely. | AI's explanations keep growing; you can't predict a change's effects. |
| Unknown unknowns | It's not obvious what must change, or what you'd need to know. The worst one. | "Fix worked, something unrelated broke." Twice in one area = sick area. |
The question to ask before accepting any AI proposal
"What does this approach make harder to change later?"
Judge the answer against the three symptoms. Sometimes the shortcut is still right — but make it a decision, not an accident.
Judge the answer against the three symptoms. Sometimes the shortcut is still right — but make it a decision, not an accident.
Investment rule of thumb
Spend ~10–20% of effort on design: before prompting (the plan) and after the test passes (the simplification pass). Strategy as perfectionism — rewriting everything "properly" — is also a failure mode.