Wednesday, March 18, 2009

Houdini and Software

Houdini was an escape artist and a magician. How does that relate to software? Quite simply it is all about solving impossible problems or making hard problems seem magically simple.

Magic is about hiding a trick to see a grander illusion. Escape is about over comming the physically impossible. In software we need to have the same techniques.

Without the magic, we have unusable tools full of complexity. Often there is too much data. Without the escape artist attitude, we leave problems unsolved or force users to repeatedly solve their common issues.

Magic and escape are related in many ways, but the escapes are not just tricks. That's a fact that many miss about Houdini's genius. There are those that do tricks to fake escapes. Nothing wrong with that, but there are many escape artists like Houdini that found flaws in the shackles and devices he needed to escape.

Houdini didn't just pick locks. He understood locks. He knew what it would take to get around their purpose. He knew the anti-pattern of locks. Once you really understand locks, most are breakable as most problems are.

Look at safes, where being locked in one is easier to escape than trying to break into one. Houdini understood that there were no countermeasures inside a safe that couldn't be bypassed with a simple screwdriver. It only seems impossible if we think of the safe only with a single mind.

For magic, sometimes the creation of the illusion is hard. Sometimes it is simple. But the key fact is, there is some type of skill or mechanism to add the true magic to create the illusion. If you don't add these, and a little showmanship and misdirection, you get nothing special. You loose the magic.

As developers, we need to apply both a key understanding of our problems and their soloutions. We need to know how to make a problem that seemed impossible with another method.

We don't need to make the magic of an elephant disappearing to be part of the magician's code, never to be revealed. However we do need to hide the complexity of the feat from the end user.

We need to hide the trick of getting from A to B. We also need to escape from seemingly unsolvable problems through means less obvious than a metal key. As developers, analysts, architects, and even QA, we need to think like magicians and escape artists.

Using software should be magical. It should seem like we are over coming the impossible. The only way to do that is to get into the mind of great men like Houdini.

No comments:

Post a Comment