I had a conversation with Kevin Hurwitz about developer tendencies. Kevin related a project he consulted on. He came in after over a million dollars had already been spent by the client, and he found the following:
- Not a single feature had been delivered (save a few half-finished screens)
- The team had spent all the time creating an application framework that, when finished, would make the application practically create itself.
- The development manager was the one who instigated the framework frenzy, and was eventually fired.
Jeffrey then go on to suggest that this might not be the wisest use of the client's time and money, and that it is much better to use existing tools and frameworks where they are applicable and extract frameworks when reusable pieces of work are discovered.
In general, I agree. However...
I am a fan of the "build a framework to make working the application easier". The last two projects that I used this approach on had a very high ROI as a result of this. In fact, you can see one of those frameworks here.
This is especially true when we are talking about using an unfamiliar platform or usage.
Where I fully agree with Jeffrey is with the time aspect. Running for such a long time with this approach it is just unacceptable. A week or two (max) is the most that you can dedicate for speculative framework development.