I'll get to your application in a week - First, we need to build the framework
Jeffrey Pallermo posted about a scenario he encountered:
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.
Comments
There is a great sidebar from Neal Ford in his new book "Productive Programmer" that talks about frameworks versus features that is very pertinent here. I won't spoil it so you go get the book.
I think if a framework develops as a natural result of writing the application that's great.
It's when people put the application on hold to go build a framework that is really the problem because they likely don't yet understand the requirements their application will need from a framework given that it isn't yet written.
[)amien
A think that building a framework should not take more than 2 or 3 days, that's because a simple principle we all know: YAGNI
I think the problem is the objetive of the framework: "would make the application practically create itself".
I dont think that frameworks are tools to acomplish such things. That is as if it where an aplication that at the press of a button would create a new application.
Also, if the framework will be part of every new application build by your company, dont you think that 2 o 3 weeks are too little time? Or you where thinking of it as a constantly evolving framework?
I said a week or two.
And yes, I don't intend to solve all the world's problems with it. Just what I need now.
It can evolve as needed
I "feel' that response very agresive.
My comment was about this points:
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.
I also believe the same that you believe about frameworks. For example, a framework can really make the concept of Software Factories achievable.
And btw, Im a longtime subscriptor of you blog but I never expected some answer like "I said a week or two. And yes, I don't intend to solve all the world's problems with it". You make me fell bad as if you were the one fired...
Antonio,
If I were curt, I apologize.
I am trying to put as much information as possible into as short a message as possible, so I can actually get around to doing everything I do.
Expending on my previous answer.
I meant a week or two for the initial framework work, and that is it. After that, you must start delivering features. Any additional issues that we find in the framework we fix as we go along
I don't believe in software factories as an architectural approach, in general.
None taken. Reason explained and accepted. Now I really see your point about 1 or 2 weeks. About software factories, I didnt mean it as architectural approach but as a business model. I just figured out that if I could make a lot of things "after over a million dollars", I just thinked to about what could you do also.
I agree with Oren, if after 1 or 2 weeks and there still no features then I think the team just asking for disasters. There is no guarantee the framework will work nicely with the application. That's why we have integration test and the bigger the framework the more chance of something gonna go wrong with it.
I think the key differentiator for me is whether you're speculatively building the framework, or harvesting the framework by extracting repetitive functionality into separate classes. To be honest, Oren is a little bit of an exception to the rule - for most people, it's much easier to see patterns in working software than to predict them.
Comment preview