In my new (more or less monthly) piece at Reg Developer, I talk about the "growing pains" that we all, as developers, tend to go through. It's the well-meaning Grand Design Syndrome, in which a developer sees a coding problem, any coding problem, as justification to set out writing a reusable, pluggable framework. The framework "might" come in handy one day, so it has to be worth doing, right??
From the article:
"Luckily this mindset is easy to spot. Your team members will be busy creating a beautiful but over-designed system with enums, annotations, closures and all the latest language features, loosely coupled classes and several hundred pluggable frameworks when a well-placed isThisTheRightValue() method would probably have sufficed. Picture a pluggable framework that only ever has one plug."
Several commenters have questioned the part where I suggest that you probably don't want to be writing a framework at all (or even seeking out a third-party one, for that matter).
Seriously? No frameworks ever??
Not really what I meant. It's an Occam's Razor thing. In other words (applied to software design and frameworks), use something as complex and difficult to maintain as a framework if the potential for reuse is huge and obvious; otherwise, just code to the metal.
Of course, the decision of whether to write (or add in) a framework is a big one, and shouldn't be made by a junior programmer coding up one dark corner of the system (someone going through difficult growing pains), which is really the point.