To do any digital thing well, it will take 5x as long as you initially think. If you’re a developer you initially are just calculating based on ego: “I know how I could code a solution to that right now, really quickly; probably take me 45 minutes.” Then you realize: “Oh, yeah, this does work but it doesn’t account for this and it would be better if I made it flexible enough to accommodate this likely possibility. And then, shoot, what about this less likely case? Yeah, that’s probably also going to be needed.” And this goes on for at least 5x the original 45 minutes. Often much more. But developers often seem to have amnesia around this because they just like to test themselves to see how quickly they can get some the minimum thing that solves that idea. I think it’s almost like a protective mechanism to have amnesia about how much more work is actually involved in building something good and flexible and stable: because if you didn’t have this amnesia you might never get super excite about just firing up a text editor and seeing if you can make this work right now, quickly. I think this dilemma is somewhat unique to coding because, unlike other forms of creation like, say, furniture making, all the tools for creation are free and right in front of you and you actually needn’t ever fully consider everything before getting started because the medium you’re working with is so flexible. And the only waste product is time. But, hey, time is important; not something to waste.