(Yet Another) analogy for developing software

This is a bit of a stretch, but here goes:

Imagine building an airplane not in a factory, but on the runway itself. Let’s say the runway is 5000 feet long, and you have to build the airplane as its accelerating for takeoff.

You’re the only one on the plane, because what kind of fool would tie himself to a plane that might not make it off the ground? :-)

As you look to your left and right, you see all sorts of people yelling at you, telling you what to do as the plane slowly, inexorably lumbers down the runway. They shout encouragement, or distract you, or maybe jump on and off the plane, but they’re NOT tied to the plane itself like you are. That’s just…insane. Who would do that?

If you get done properly, the plane takes flight and you’re a hero. If you don’t, you crash and burn in the wreckage. You’ll survive, but you won’t be the same again.

* * *

So, taking the above analogy, we got 4000 feet down the runway, and we were at takeoff speed and someone on the side said, “Wait! You’re left engine’s on fire.” Being the only one lashed to the plane, this made me nervous.

“That’s okay, we’ll give you another 300 feet of runway! Fix it!”

Looking at the engine, I found out that it was installed backwards, upside down, and it had to run on bourbon instead of jet fuel. Somehow, though, I climbed out on the wing and got it installed correctly (no mean feat for a moving plane with a burning engine).

So, right now, I’m still strapped to the plane, with a bunch of folks on the sidelines shouting “FLY, DAMN YOU! YOU’RE OUT OF RUNWAY!”.

As one of my testers likes to say: “Wheeeeeeeeeeeeeeeee!”