Most of engineering looks like writing code. Very little of the value is.
The hardest part of any problem I've worked on was rarely the syntax, the framework, or the algorithm. It was understanding what we were actually trying to do — and noticing the quiet assumptions everyone had agreed to without ever saying out loud.
So before I write much, I try to do three unglamorous things.
Ask the question behind the question
The first version of a problem is almost never the real one. "We need a dashboard" usually means "we can't see what's happening, and it's costing us." Solve the first and you ship a dashboard nobody opens. Solve the second and you might not need a dashboard at all.
Find the hidden assumptions
Every requirement carries unspoken ones: about scale, about who the user really is, about what "fast" or "done" means. I'd rather drag those into the open early, while they're cheap to challenge, than discover them in production.
Walk the trade-offs out loud
There is no free choice. Naming what each option costs — in time, in complexity, in things we won't be able to do later — turns a decision into something I can actually defend.
Code written against a misunderstood problem is the most expensive code there is, because it works. It just solves the wrong thing, convincingly, and now someone has to maintain it.
I'd rather spend an extra hour on the problem than a week on the wrong solution.