This is the way I like to think about problems. Essentially you start backwards from the problem and (hopefully) arrive at a solution. If at some point in the depths of abstraction you lose touch or forget what that original problem was, you've already failed.

Building infrastructure for the sake of infrastructure is a good example of being completely out of touch. The problem was there weren't enough trains at the right time to the right places. The bridge builders clearly weren't thinking about that.

In my work this often happens because of the XY problem. People ask for X, but in fact they need Y and X is just their proposed solution. This would be like people asking for a new train from Cambridge to London, but in fact they are really going to Oxford and were only using London to connect.

There are also assumptions that even the most pedantic people don't mention all the time. If people ask for more comfortable seats on trains, they implicitly also mean at the right time. They don't mean a comfortable seat at 2:00 in the morning that takes 3x as long to get there.

I've often thought some kind of daily meditation to remind yourself of what the problems are is useful. There are the "bedrock" problems (like the train timetable) that never change, and there is the specific problem you are trying to solve right now (like connecting Cambridge to Oxford). I think it's worth thinking about it every day lest you lose sight and build the bridge nobody needed.