I used to force features into messy code.
I’d get a task, open the tangle,
and just start jamming the new thing in —
wedging it between the parts
that didn’t want it,
adding a flag here, a special case there.
It felt like the work.
The struggle felt like progress.
Then a senior engineer watched me do it once
and said something that stuck:
“You’re making a hard change.
Why didn’t you make it easy first?”
I didn’t know what he meant.
He showed me.
Before touching the feature at all,
he moved things around.
Untangled a knot.
Pulled two things apart
that never should have been fused.
Ten quiet minutes of no new behavior.
And then the change I’d been dreading
dropped in
like it had been waiting for a slot.
That reordered how I work.
Now, when something’s hard to add,
I stop trying to add it.
I take that as a signal
the code isn’t shaped right yet.
So first I make the change easy —
move code, untangle, make room —
and then I make the easy change.
The struggle I used to call “the task”
was never the task.
It was the bill
for skipping the first step.
– Serguey Asael Shinder
Leave a comment