JP: So, Hal, what's with you guys ganging up on
me about the big ideas? After all, I'm out here defending Fusebox MX as "really Fusebox"
because it reflects Fusebox's
big ideas. The big ideas matter--they're
what makes Fusebox stronger than just
the current implementation.
HH: Here's
my problem with big ideas: they are SO big, so fuzzy, so amorphous that nobody can do anything with them!
They become sticks to beat people with: "Ah, you didn't
properly separate your logic from your presentation." My response is: "OK, then
show me HOW to do that."
In my opinion, Fusebox
is NOT about big ideas. Or if it is, they're
invisible to me. Plus, they become religious
issues. When Fusebox 3 came out, I heard about how "this isn't
Fusebox", meaning, I suppose, that it
didn't support the "big ideas"
of Fusebox. I expect I'll hear that about
Fusebox MX: "it's not Fusebox". So in my experience, talking on the level
of "big ideas" may do wonders
for the speaker, but very little for the listeners.
JP: I think exactly the opposite happens. Without the big ideas, we're locked into narrow, implementation-based
definitions. When I heard "this
isn't Fusebox"
when FB3 came out, I was hearing people say things like this: - You don't use formurl2attributes.cfm
calls anymore. - The cfswitch block isn't in index.cfm
anymore. So they were missing the forest for the trees. Rather
than seeing the big ideas in these two examples (use a common scope for form and url variables--in FB3 the core file handles it instead of a separate custom tag; use a centralized
control mechanism--in FB3 it's the same mechanism but it's
in a fbx_switch.cfm
instead of index.cfm), they argued that the implementation
wasn't Fusebox. They were saying, in essence, "this implementation
doesn't work exactly the same as the old implementation, so it's not Fusebox". This
worries me, because it completely overlooks *why* Fusebox
is so effective.
HH: And why
is Fusebox so effective?
JP: Pithy reply, mon frère. ;> You
said it yourself, "Fusebox allows
ordinary developers to build extraordinary
applications". By implementing
(however we
do that) some basic concepts like centralized control, logical
organization of code modules, etc., FB lets developers
forget all the hassles related to organizing an effective
application, and lets them concentrate on what the application needs to do.
HH: I think
I have an insight into my problem with "big ideas". The
first problem I have is that the "big
ideas" are almost never specified. They're alluded to, but the speaker
always retains the option to add, edit, or delete those ideas as needed.
And THAT leads to the second problem I have. Big ideas are inferred from
implementations, not the other way 'round. First we had Fusebox 1, then Fusebox 2, then
XFB, then Fusebox 3 and now some nut-case is working
on trying to move Fusebox into the OO
world with Fusebox
MX. If I asked you at Fusebox 1 stage, "What
are the big ideas behind Fusebox?",
I think your answer would be drastically different if you answered the question today.
That's why the "big ideas" guy needs that flexibility to amend his
answer—because he's formulated his opinion based on the last implementation.
He doesn't know what the next big idea will be — until he sees it rendered
in code.
This is true not only with programming.
The field of criticism is a perfect example of what I'm talking about:
people who come along AFTER the creative work has been done of artists, writers,
composers, etc. and then imputing to those works certain "big ideas"
which then become the basis for criticism. But this process is most
UNHELPFUL. It thwarts creativity and it's notorious in its predilection
for shoehorning thoughts into acceptable categories, excluding those that don't.
And since there's no specificity in what the big ideas actually are
(words being wonderfully vague), it's left for a few illuminati to
decide on whether something conforms.
We've had many examples
in history of this. It's the top-down approach. For centuries,
Aristotle's physical theories were accepted because they were "philosophically correct".
No need to dirty one's hands in implementation details (like doing actual experiments)
since the big ideas were what was important and whose big ideas
were better than Aristotle's? I could rant for a long time
about the evil such a top-down approach did (the
Christian church has, IMHO, never recovered from its unholy coupling
of Aristotle and Christ producing the
resultant "Beloved Doctor": Thomas Aquinas). In
our century, we had the spectacle of totalitarian governments censoring artists and even scientists who didn't
conform to the right proletarian big ideas. Or think of the treatment
Galileo received for daring to look at the implementation rather
than accept the correct big ideas. In fact, the list of examples is
so huge as to be nearly endless.
Someone always wants to talk about
big ideas. It sounds great — right up to the point where someone's creativity
challenges the big idea.
Looked at another way, big ideas are
sort of like "lucky streaks" — they're only obvious AFTER the fact and provide
no prescriptive advice that's actually helpful to anyone. Now, I
will readily acknowledge that to people — some people, at least — this idea
of big ideas, of laws and principles and such is greatly appealing. But
is it sound? I don't think so. I recently read an interview with
one of my favorite guys, Dick Feynman. The interviewer asked him if he thought
science would ever find the "ultimate particle" on which
everything is built. Feynman said that he
had no idea — that he didn't even know
if there was such a thing. "But surely you have an idea if there is?"
asked the interviewer. Feynman said no — that he found that taking such a
top down approach didn't work.
I agree with Feynman
and would say that insisting that implementation follow big idea is exactly like deciding
there's an ultimate particle and then looking for it. Is something good?
I can't decide that a priori, based on its philosophy. Show it to me and
I'll tell you.
There -- a not so pithy reply. I fear
that you're going to dismiss my arguments as irrelevant to the topic at hand,
but I think they're exactly the topic at hand and it's why I and others
react to this idea of introducing philosophy (another word for "big
ideas") as having anything to say in creativity. If someone wants
to see simplicity and clarity in my work and someone else sees symmetry and
balance in the same work, that's great. But much of what they see is shaped
NOT by the work, but by what they bring to that work. And having created
once freely, I do not wish to be constrained by a philosophy which
someone thinks they have discerned.The chain of logic is just too long
and fragile.
JP: Whoa, big fella. Don't get me wrong here. I think you've put me on the wrong side of the crusade here--you
see me representing the "Do It My Way or Hit The
Highway" camp. To the contrary,
I think we're in agreement here. I
by no means advocate a fuzzy-headed philosophy as the starting
point. It's
impossible to develop big ideas from nothing. The big ideas serve as a sort of transport from one place
to another. Take for a minute
the analogy of a hot-air balloon. The balloon is a big idea, but it's anchored to reality (the ground) by a tether
(the implementation). If the
implementation is taken away, we can go to some other
place, carried by the big idea. But-- and this is vital--if we want to *do*
anything once we get to another place, we have to re-anchor
the balloon. In other words, we need to create a new implementation.
Understanding the big idea (because we
had experience with the previous implementation) gives us an idea of what we want to build in the new
place.
We also agree on the idea that building
takes place from the bottom up. I talk frequently about a theory of mine
called Analytic Synthesis (for lack of a better name). This is the simple
(but often overlooked) idea that you can't build something without the proper
materials, and that those materials are generally not found just lying
around. Everything you'll
ever build--whether physical or mental--will
be built from smaller pieces.
The key to effective building (synthesis) is
getting hold of the right raw materials. In every case I've ever observed, the raw materials
are obtained by breaking down something else--in
the case of mental work, it's usually breaking down a problem in order to
understand the little pieces, then building successively larger components
that fit together until we have a completed whole solution. This is familiar territory for Fuseboxers, who start with a whole problem--the
prototype--and break it down into small problems in order to construct
a solution for it based on fuses, fuseactions,
and circuits.
So when I talk about the big ideas,
I'm not talking about philosophical ramblings in the night. I'm talking about understand the big ideas about
what we've already done, so that we can
take them as effective tools into new environments and be effective there
as well. That's the only way we stand a chance at continuing to be successful
in an industry that changes as frequently as ours. You say there's nothing new in Fusebox--that's very true, and a vital point (maybe the
biggest idea of all). These ideas
will outlast every language we ever use
to write programs, whether they're procedural, object-oriented, or collective (or
whatever the next rage in computing languages ends up being called).
These are the big ideas of mastery, rather than philosophy. Consider times past when one would progress from apprenticeship--mastering small
skills, through journeyman status- -mastering larger and more integrated
skills, and on to mastery. Once possessed of the necessary skills,
a master could then apply those big ideas to other areas, perhaps investigating
new materials, or new techniques. This
is what I mean by big ideas. Leave the philosophy to someone else.
HH: Well, heck, that makes perfect sense!! I like the balloon metaphor.
Very nice. Like so many things, the disagreement
is not one of substance (though those
of course occur) but a mismatch between what you said and I heard and what I said and you heard. The
wonderful and terrible thing about words is that they can mean so many,
many things and the message that's given is seldom the same thing as
the message that's received.
So, yes, we agree. I now only have
one little problem: I have no one left to fight with! Oh the wretched cleverness
of my adversaries…
JP: Ah, well. There
are worse problems to have. ‘Til
next time, then…