>>46
It can prolong the development process. Abstraction should be used intelligently. If you want something simple that does exactly one thing. You could abstract this out to a more general case. In the event this general case will never be needed you are adding unneeded layers of abstraction.
A good example I got is certain types of creatures are immune to lava. You could abstract this out to a heat resistance property, and a function that gets the temperature around the creature. Then you could have say warm water that some creatures don't like and others like. Or even cold water that those fire immune creatures will react differently to. Abstracting out temperature effects on creatures can create a more involved system. Unfortunately what if the only wierd temperature environment you have is lava. It would be much simpler just to check for that simple case and react than to build layers of abstraction.
While the layers of abstraction are good from many perspectives with a time deadline and practical restriction on features sometimes it is better to just go the simpler and direct way.