Conversation with Hal: Big Ideas
13 Nov 2002

Hal Helms and I recently had a conversation about Fusebox and big ideas.  We thought it would be useful for folks to see, so here it is.  - Jeff Peters


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…