Mark Bernstein :

It’s easy to add generality to a spec. It makes you look really smart, especially when someone else is going to do the coding. But too much generality too soon makes the code age prematurely; you can get old, brittle, confusing code that looks like it’s yellowed with age, even though it’s not even finished yet.