When you start out working on a new feature or system; it’s easy to get caught up in the micro:
How should this method work? What should the consumer see? Where do I put this? What do I name it?
And all of those are good questions to ask; but even though they feel like giant obstacles before you start, they become pebbles once they’re done.
Once a system is built and shipped; the focus then turns to the system, and keeping the system running and reacting to the world around it.
What’s funny is that you end up asking the same exact questions, just on a larger scale:
How should this module work? What should the customer see? Where does this fit [in our system]? What do we call it?
The point is, even though those micro questions are important; they have far less impact on the outcome than the larger questions of how the system works together.
Or, to put the observation another way:
We spend far more time in code reviews on the micro questions; and less on the macro questions, even though 9 times out of 10 it’s those macro questions that will cause a problem later on.