
Nobody has ever been paged because a function was too obvious.
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.
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.
Not fewer features. Fewer moving parts per feature — which is the only kind of simplicity that is still there in a year.