Among competing hypothesis, the one with the fewest assumptions should be selected. Occam’s razor
Software development is a rabbit hole. If you try to do things perfectly every time, you’re not going to be successful.
The goal is to find the minimal acceptable feature set and build that. The important takeaway here is that “minimal acceptable” is defined per-project or per-task. There is no global definition of “minimal acceptable”. Looking for a global definition is a waste of time.
I’ve heard it said that lazy developers are good developers because they only worry about what is needed right now. Taken literally, this is bad. But if you understand the intent behind the joke, then there is some truth to it.
Finding the happy medium between what you need today and what you’ll need in a week or a month is difficult. Err on the side of solving today’s problems and not worrying about tomorrow’s. Sometimes you’ll end up doing extra work, but in the long run you’ll be more effective.