Keep it simple

I was talking to a professional magician today.  He was explaining that magic is really just misdirection and showmanship, and that actual “sleight of hand” is difficult and unnecessary.  According to him, sleights are difficult and unnatural moves that magicians use to impress each other.  The audience doesn’t really care how difficult a trick is to perform—they just want to be entertained.  Sleights are hard, and tricks that require them are no more impressive to an audience than those that are easier to perform.  Consider that many professional magicians, including Sigfreid and Roy (the highest paid magicians in the world), Penn and Teller, and David Copperfield don’t use sleights in their acts.  One of the secrets to a successful magic trick is “keep it simple.”

He went on about that for quite a while and then apologized for ranting.  I actually enjoyed his rant and couldn’t help but relate to him my experiences with programming, where I’ve found that simple designs and programs are usually much better (faster, smaller, and more robust) than complicated designs that use difficult tricks, which programmers use mostly just to impress other programmers.  Albert Einstein once said:  “Things should be made as simple as possible, but not any simpler.”  Programmers, in my experience, rarely make things as simple as they should be.