Write the boring version first

Dana Okafor March 28, 2026
Cover image for Write the boring version first

Nobody has ever been paged because a function was too obvious.

Two implementations, then a pattern

The rule that survives contact with real codebases: write it inline the first time, write it inline again the second time, and extract on the third — when you can finally see which parts actually vary.

The cost nobody counts

An abstraction built on one example encodes one example's assumptions. The second caller bends to fit. The third adds a flag. Now the shared helper has three modes and every change to it is a change to everything.

What lazy actually means

Not fewer features. Fewer moving parts per feature — which is the only kind of simplicity that is still there in a year.