If you’re building for the future, you’re doing it wrong. That isn’t to say that you should cut corners wherever possible. The key is to spend your time building what you need now. If you concentrate on building what you need now, you will be able to do a better job. You will be able to refine every subtle detail, catch most bugs (create fewer bugs in the first place), and finish on time.
Building for the future rarely ends well. Time and resources are spent on building for something that might never be used. Can you guarantee that your product will make it to the future for which you are planning? Can you guarantee that the features you are prepping your system for will make it to fruition? How often to specifications and requirements change during a product’s life cycle? There is a chance your product will fall. It is highly likely that new ideas will come about and features you planned on building are no longer wanted.
Rather than spend your time building for the future, build for what you need now, and spend the time to do it right. Making a small, but robust, set of features work properly will give your product a higher success rate than building for features you might add later.
I agree completely. Many developers spend countless hours profiling and optimizing their application so they can handle traffic they may never get. Get a quality product out the door first and hope it’s successful enough for you to worry about adapting to future needs. Otherwise, you’re potentially wasting valuable time and money in a competitive industry for nothing.