"Java is a great language being destroyed by Rampaging Computer Science," writes James Turner, who knows his way around a polymorphism or two, in his latest - and characteristically combative - Viewpoint.
It's always hard to find the right path between no anticipation and too much flexibility.
That's why eXtreme Programming was such a revelation when I discovered it.
Because it enable you to do only what is necessary and had code later when more flexibility is needed. You can even delete lines of code when it becomes too complicate and unecessary.
When such a situation occurs, the hardest thing is to overwhelm your pride and delete what you thougth was "good code".