Ask yourself: “are you writing a framework now?” – How (not) to write Factorial
Posted by jpluimers on 2011/03/01
On the Development Choas Theory blog, I bumped into a brilliant blog post titled How (not) to write Factorial in Java.
It is not about Java, or any other programming language, platform or library for that matter.
It equally applies to your favourite programming language and framework (be it shell scripts, assembler, .NET, Delphi, haskell, PHP, ruby, Eiffel, Java or any other).
It is about the question that Neal Ford taught me quite a while ago that you should ask yourself several times a day:
“Am I writing a framework now?”
Developing software is about only developing the things you really need to.
Framework development is in a totally different league than developing ‘just’ software.
It requires even more thought, attention, testing, etc.
And after that, you need to support it on a different level too.
Frameworks are far more costly than you would guess at first sight…
So only develop a framework for something (*) if you observe that it is actually used in a lot of places and requires a framework.
(*) insert what you are currently working on here.
–jeroen
Via: Development Chaos Theory » Blog Archive » How (not) to write Factorial in Java






Warren Postma said
For anybody who hasn’t read any “framework hell” articles before, I would recommend Benji Smith’s classic:
http://discuss.joelonsoftware.com/default.asp?joel.3.219431.12
Warren
jpluimers said
That piece is freakin’ brilliant!
–jeroen
Olaf Monien said
In fact this kind of contradicts your original thesis:
It does in *no* way matter if you are “just” building a spice rack or a full blown tool factory. You *always* have to ask yourself (or your team or your users) if you really need all the features you are tempted to implement. This question is probably more easy to answer for a smaller piece of software, than for a larger framework though.
Clean design matters. Less is more.
jpluimers said
You are totally right with “Clean design matters. Less is more”, but few people understand it that way.
Somehow, when explaining it in the “framework” way, people do understand it better.
–jeroen
Warren Postma said
I ask myself a more cynical question: Am I building a hammer, or a hammer factory tool-pattern design inductively coupled parthenogenesis entity?
:-)
Warren
Jørn E. Angeltveit said
So true. One should also be aware of the difference between component development and application development.