Why I Hate Frameworks
BenjiSmith
Friday, September 30, 2005
I'm currently in the planning stages of building a hosted Java
web application (yes, it has to be Java, for a variety of reasons
that I don't feel like going into right now). In the process,
I'm evaluating a bunch of J2EE portlet-enabled JSR-compliant
MVC role-based CMS web service application container frameworks.
And after spending dozens of hours reading through feature lists
and documentation, I'm ready to gouge out my eyes.
Let's pretend
I've decided to build a spice rack.
I've done small woodworking
projects before, and I think I have a pretty good idea of what
I need: some wood and a few basic tools: a tape measure, a saw,
a level, and a hammer.
If I were going to build a whole house,
rather than just a spice rack, I'd still need a tape measure,
a saw, a level, and a hammer (among other things).
So I go to
the hardware store to buy the tools, and I ask the sales clerk
where I can find a hammer.
"A hammer?" he asks. "Nobody
really buys hammers anymore. They're kind of old fashioned."
Surprised at this development, I ask him why.
"Well, the
problem with hammers is that there are so many different kinds.
Sledge hammers, claw hammers, ball-peen hammers. What if you
bought one kind of hammer and then realized that you needed a
different kind of hammer later? You'd have to buy a separate
hammer for your next task. As it turns out, most people really
want a single hammer that can handle all of the different kinds
of hammering tasks you might encounter in your life."
"Hmmmmmm.
Well, I suppose that sounds all right. Can you show me where
to find a Universal Hammer."
"No, we don't sell those
anymore. They're pretty obsolete."
"Really? I thought
you just said that the Universal Hammer was the wave of the future."
"As it turns out, if you make only one kind of hammer, capable
of performing all the same tasks as all those different kinds
of hammers, then it isn't very good at any of them. Driving a
nail with a sledgehammer isn't very effective. And, if you want
to kill your ex-girlfriend, there's really no substitute for
a ball-peen hammer."
"That's true. So, if nobody buys
Universal Hammers anymore, and if you're no longer selling all
those old-fashioned kinds of hammers, what kinds of hammers do
you sell?"
"Actually, we don't sell hammers at all."
"So..."
"According to our research, what people
really needed wasn't a Universal Hammer after all. It's always
better to have the right kind of hammer for the job. So, we started
selling hammer factories, capable of producing whatever kind
of hammers you might be interested in using. All you need to
do is staff the hammer factory with workers, activate the machinery,
buy the raw materials, pay the utility bills, and PRESTO...you'll
have *exactly* the kind of hammer you need in no time flat."
"But I don't really want to buy a hammer factory..."
"That's good. Because we don't sell them anymore."
"But
I thought you just said..."
"We discovered that most
people don't actually need an entire hammer factory. Some people,
for example, will never need a ball-peen hammer. (Maybe they've
never had ex-girlfriends. Or maybe they killed them with icepicks
instead.) So there's no point in someone buying a hammer factory
that can produce every kind of hammer under the sun."
"Yeah,
that makes a lot of sense."
"So, instead, we started
selling schematic diagrams for hammer factories, enabling our
clients to build their own hammer factories, custom engineered
to manufacture only the kinds of hammers that they would actually
need."
"Let me guess. You don't sell those anymore."
"Nope. Sure don't. As it turns out, people don't want to
build an entire factory just to manufacture a couple of hammers.
Leave the factory-building up to the factory-building experts,
that's what I always say!!"
"And I would agree with
you there."
"Yup. So we stopped selling those schematics
and started selling hammer-factory-building factories. Each hammer
factory factory is built for you by the top experts in the hammer
factory factory business, so you don't need to worry about all
the details that go into building a factory. Yet you still get
all the benefits of having your own customized hammer factory,
churning out your own customized hammers, according to your own
specific hammer designs."
"Well, that doesn't really..."
"I know what you're going to say!! ...and we don't sell
those anymore either. For some reason, not many people were buying
the hammer factory factories, so we came up with a new solution
to address the problem."
"Uh huh."
"When we
stepped back and looked at the global tool infrastructure, we
determined that people were frustrated with having to manage
and operate a hammer factory factory, as well as the hammer factory
that it produced. That kind of overhead can get pretty cumbersome
when you deal with the likely scenario of also operating a tape
measure factory factory, a saw factory factory, and a level factory
factory, not to mention a lumber manufacturing conglomerate holding
company. When we really looked at the situation, we determined
that that's just too complex for someone who really just wants
to build a spice rack."
"Yeah, no kidding."
"So
this week, we're introducing a general-purpose tool-building
factory factory factory, so that all of your different tool factory
factories can be produced by a single, unified factory. The factory
factory factory will produce only the tool factory factories
that you actually need, and each of those factory factories will
produce a single factory based on your custom tool specifications.
The final set of tools that emerge from this process will be
the ideal tools for your particular project. You'll have *exactly*
the hammer you need, and exactly the right tape measure for your
task, all at the press of a button (though you may also have
to deploy a few *configuration files* to make it all work according
to your expectations)."
"So you don't have any hammers?
None at all?"
"No. If you really want a high-quality,
industrially engineered spice rack, you desperately need something
more advanced than a simple hammer from a rinky-dink hardware
store."
"And this is the way everyone is doing it now?
Everyone is using a general-purpose tool-building factory factory
factory now, whenever they need a hammer?"
"Yes."
"Well ... All right. I guess that's what I'll have to
do. If this is the way things are done now, I guess I'd better
learn how to do it."
"Good for you!!"
"This thing comes with documentation, right?"