Runaway train of execution

Jeff Atwood is back to fairly frequent posting, and had a good one yesterday about software metaphors.

Quoting Steve McConnell:

A confusing abundance of metaphors has grown up around software development. David Gries says writing software is a science (1981). Donald Knuth says it’s an art (1998). Watts Humphrey says it’s a process (1989). P. J. Plauger and Kent Beck say it’s like driving a car, although they draw nearly opposite conclusions (Plauger 1993, Beck 2000). Alistair Cockburn says it’s a game (2002). Eric Raymond says it’s like a bazaar (2000). Andy Hunt and Dave Thomas say it’s like gardening. Paul Heckel says it’s like filming Snow White and the Seven Dwarfs (1994). Fred Brooks says that it’s like farming, hunting werewolves, or drowning with dinosaurs in a tar pit (1995). Which are the best metaphors?

Now Atwood himself:

I think we’re leaving one metaphor on the table which more accurately reflects the way software is built in the real world: flail around randomly and pray you succeed by force of pure dumb luck.

This tidbit itself is worthy of being posted in my cube, but that is not why I enjoyed the post. The extravagant listing of metaphors made me recall my own metaphor that is not listed that I came up with quite a while back.

Programming is like being the conductor of a runaway train. The train is constantly moving forward and it is your job to make sure you hit the right railroad switches at the right times to prevent a disaster.

if(crash.isImminent()) switch.flip();

That’s what it feels like to be me while I’m coding. If I don’t write the correct conditions, delegate to the right objects, and pass the right parameters, the runaway train that is the thread of execution is going to veer drastically off course and that lovely school for bunnies will be a mere smoldering crater.


Being privy to the details, the fact that so much software in our lives works as well as it does is something at which I will probably always marvel. We should have a lot more smoldering craters than we actually do.

Announcer: You’re reading the EIP web-ring.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s


Get every new post delivered to your Inbox.

%d bloggers like this: