This question already has an answer here:
First some backgrounds, I'm interning at a company that makes parallel processing hardware.
We're currently working out the design for a component of our driver that is supposed to evolve over a few generations of our products. The next gen is still in simulation phase and the specification we have now may change when we actually get the hardware. Our module is supposed to work on the current gen and all future gens.
I've always been under the impression that a design should be as future-proofing as possible. In this case, we know exactly what to do for current gen hardware but are unclear on some fronts for the next gen.
So my question is:
When do you know that you should stop designing for the future and just keep it simple and correct for what you know right now?