> My own experience is that most of my work is done on existing code bases, and I am more productive when the coders before me spent the extra time to make sure the code is adaptable to new situations.
My experience is that efforts by previous developers are often counterproductive (they designed for adaptability, but in the wrong direction), and certainly that designing for adaptability in general is less efficient than designing for specific adaptations for those specific adaptations (and therefore it's more efficient to defer work to the point where you know exactly which adaptations you want to make).
> Can you point to some empirical evidence to the contrary?
No - just my own experience (I was using empirical in a negative sense - contingent is perhaps closer to what I meant).
> Edit: I had some more thoughts about this, specifically that there is a survivorship bias to legacy code. Not all projects survive, but when they do that code can live a long life of maintenance. If you are involved in the startup world, it may make more sense to get it done quick & dirty in order to get funding than to write "good" code. That might explain the disparity of our experiences.
Indeed. My experience is that probably >50% of code dies before ever being used productively, and so any designing for maintenance before the code has been demonstrated to provide business value is premature.