I’m a Systems Administrator by training, a Software Developer by necessity, and currently a QA Tester by a burning desire to stay indoors during Iowa winters (and summers, for that matter). Also deal with nasty bouts of over-engineering every damned thing I put my hands on. Trust me, I understand 100% with the desire to plan for everything now, and minimize the pain and effort later.
One of the things that’s taken me nearly my entire professional career to learn is that you don’t always need to do that. By the time you’ve engineered in the kitchen sink, technology has changed, or it’s become so complicated that it would really be better for everyone if the plans were put out for bidding. Wanting everything was why I had printed parts for a year and a half before I ever got anything else. I ended up paralyzed by wanting more elegance and flexibility than anything could deliver, much less anything I could cobble together.
In my case, whenever I would take time to consider how to add some bit of functionality or fold in some neat addition someone else had wrangled together, I would end up finding some newer bit or bauble to add on. Feeping creaturism isn’t something that the only Marketing Department or your client does to you…
What I’m saying is rather than getting caught up in the analysis paralysis and hypothetical what-ifs, just fish or cut bait. Piss or get off the pot. Just do it. At least, make a choice, then go all in. If you spend too much time in design, you’ll never hit your release. At a certain point, you have to declare a feature lock, and start your v2.0 list.
If nothing else, if you find you need to make a change, you’ll have this spiffy new tool to use to make your new table parts with. And let me tell you, you can do some insane joinery with it.
Also, you must be a seriously old school dev. These days, most software gets shipped somewhere between alpha and beta state, and gets patched in production. 