Back to writing

Just Solve the Freaking Problem

April 23, 2024

Before turning a small ticket into a rewrite, ask whether the business actually needs the bigger fix right now.

You get a ticket.

It looks normal at first. Then you touch one old part of the codebase and the whole thing starts to smell bad. The deeper you dig, the easier it is to convince yourself that the real problem is much bigger than the ticket in front of you.

Now you are no longer adding a feature or fixing a bug. You are planning a rescue mission.

You start thinking, "I have to refactor this entire area first."

Sometimes that is true. Some systems really are boxed in by deeper design problems.

But a lot of the time, we arrive at that conclusion too early.

The trap

The trap is not just technical. It is emotional.

We see messy code, get frustrated, and decide that shipping the requested change would be irresponsible unless we also clean up the root issue. That can feel principled. It can also be ego in nicer clothes.

The business usually does not need the perfect fix right now. It needs the actual problem solved.

That does not mean quality does not matter. It means timing matters too.

A better question

When I catch myself expanding the scope too quickly, I try to ask a simpler question:

Is this large change truly necessary to solve the problem in front of me?

Sometimes the answer is yes.

But often there is a smaller path. It might be ugly. It might be a little narrow. You might even call it a hack.

If it solves the user's problem safely, though, it is not automatically the wrong move.

Solve today's problem today

A contained workaround can be the responsible choice.

It keeps the ticket moving. It respects the business need. And it buys the team time to come back later and do the bigger cleanup with enough focus to do it well.

That is a lot better than hijacking a small piece of work into a six-week refactor nobody asked for.

If the deeper problem still matters, write it down. Open the follow-up ticket. Make the case for the refactor separately.

But first, solve the freaking problem.