Magic Is Golden – Pulling Rabbits Out of Hats
Featured Article by Daniel Brookshier
Magic, like software, depends on understanding the audience. Why not use a few techniques from magic to understand users?
A Golden Hammer Appears
First, let’s explore the magic of making objects appear out of thin air. I’m thinking big, so let’s make a house appear. Is the magician building the house? No, just revealing it. Do you care how the house got there? No, it’s just cool to have the house. Software should be just as magical. What’s more magical, a feature-rich virus scanner with lots of options to set with the capacity to eliminate 98% of spam, or a simple scanner that eliminates 97% of spam? Read on.
How does magic and mind reading enter into this? Before I pull a rabbit out of my hat, we need to be able to spot a lack of magic. I use the Golden Hammer anti pattern from my favorite software book called Anti Patterns – Refactoring Software, Architectures, and Projects in Crisis by William J. Brown, et al. The Golden Hammer anti pattern applies to any application that is meant to be a tool or set of tools rather than a carefully constructed solution for a specific problem.
The Golden Hammer anti pattern is easily recognized. We just look for a few key words and phrases like framework, scripting, kernel, engine, customer-driven, or user-scripted. Related warning signs are multi-day training programs, 24-hour premium support, or the presence of thick manuals. Things you don’t hear are instant-on, works out of the box, or solution driven.
A Golden Hammer application is so flexible it can never fail. That is a seductive thought. We create the perfect software by “not” solving a problem. Give the user the tools and let him build his own house to live in. What could be simpler?
The problem is that tools are not solutions. It’s the difference between a house and a bunch of tools and wood. It’s also the difference between an application that solves a problem now and one that might take a week of training plus trial and error.
But this article is about magic. Magic’s first principal is to hide the trick, but the key is to control the audience so they see the illusion. Magicians create, control, and present illusions in the same way application designers create well-designed applications. The less you expose control of an application and match the user’s process, the more predictable, testable, and easily used your applications will become.
Is This Your Card?
Let’s talk about the core of many card tricks, the card force. The common scenario is that you are asked to pick a card, any card, memorize it, and then place it back into the deck. The magician then reproduces the card, perhaps spray painted on the side of an elephant that appears in a flash of fire. The magician’s goal is to perform this trick without you realizing that he is forcing you to select a card already on the elephant. There are other variations, but forcing is tried and true with thousands of variations.
How does forcing a card relate to software? We want the user to appear to be in control. If a magician just selected a card, showed it to the audience, put it back into the deck, shuffled, and reproduced the card, we are not impressed. But if you get to select the card, then shuffle it into the deck, we have the illusion of control and thus the production of the card is magic.
How do we select the right card for the user? Reading the minds of many of you I see requirements and process. The core component I want you to concentrate on is the process and the solution. What do they do now? What will save them the most time? What is required every time they perform the task? What is the process flow? What is wrong with the current solution?
Creating the magic is as simple as using this information to constrain the design to just solve the problem in a constrained way. The forcing of the card, like limiting the choices a user can make, are key to the success of the total application. Flexibility remains, but it is constrained to a solution and its highly probable variations.
Your gauge to success is testability. But not just if A then B. Your best tests will be problem/solution or goal-oriented tests. Simply, can the user solve the problem quickly and easily out of the box? That’s real magic.
Think of a Number, Any Number
mentalism, or mind reading, is a variation of the magical arts. A mentalist either reads your mind or makes predictions about past and future. Many mentalist tricks use human behavior and a few statistics and observations. The mentalist appears to read your mind but really they are using clues about your life, a little misdirection, and some common rules of thumb.
Pick a number; say between 1 and 5…. If you are like 95% of most of my audiences, you will pick three. The numbers four, two, one, and five follows that. Even if you say you picked another number, 3 was what you first thought. It’s a cool trick but just shows how easy it is to use human behavior to help write software.
I Predict Great Wealth
At one company, we actually hired a mentalist to help us write consumer-profiling software. Our core problem was avoiding a complex interface to gather personal information. Dan Korem (www.ifpinc.com) was hired as a specialist on profiling (including work with the FBI). But surprisingly Dan started out as a stage magician and mentalist and a core part of his profiling skills that we needed were from his stage act. His advice to us was to use the techniques of the mind reader and specifically an art known as Cold Reading.
Cold Reading starts with a few bits of information to create new assumptions about a person and their life. As an example, the mentalist (or fake telephone/TV psychics) starts with a person’s age and the presence of a wedding ring to guess with high probability that the person has children. The mentalist can then make further assumptions that the parent has thoughts of angst about their children doing well in school. A+B implies a high probability of C, which then assumes D. There is a bit more to this, but that’s the core of appearing to being a mind reader and even appearing to predict the future or looking to your past.
Using the techniques of the mentalist we created an accurate picture that was corrected over time based on observing user behavior. We just used basic demographics like age, profession, and a couple other facts to make a large number of assumptions. We didn’t need to expose the user to page after page of questions. The design of our profile interface became mostly invisible even though it was far more powerful.
Is This the File You Lost?
mentalist tricks can also get you one step ahead of the user by using context to predict actions. You can see signs of this in applications that collapse “find” and ‘find and replace” in their menus. Instead the find dialog anticipates by integrating “replace” and “find.” Or “export” is integrated with “save as” because saving a file with a new name or location is a similar process to changing its format.
If I mention children, you’ll think of your own. If I say that you are worried about their safety, I am dead on with that prediction. There are many such contexts with common thoughts and motivations that we all share. We don’t tell the mind reader and yet they know.
Let’s apply context to saving backups of files you are editing. My application looks like it has psychic powers after the computer crashes if I show you a file saved five seconds before the crash. No need to bother you with the option for backups. The experience after the crash is important. Before the crash, I might want backups, but after a crash I definitely want them. Giving you the option of turning on and off backups is meaningless and should not be a part of the application.
What about the interval between backups and saves? Instead of letting the user guess the interval, why not watch what the user is doing? If I am really typing away, I want to do more saves. If I’m idle, why save at all? Context drives the solution and real-time observation is even better. Perhaps more coding, but the result is a simpler interface and a much happier user when the backup file magically appears.
The Magic of Great Software Design
With software we can have miracles all the time. Users don’t want to see the wires, trapdoors, or mirrors. We know magic is trickery, but if we can’t see the wires, we react to the miracle. Forcing flow, profiling, and using context reduces user complexity and adds more value.
Back to the ideas of tools verses solutions. The audience does not want to build the magician’s props or feed the pigeons and rabbits. Users are quite happy with picking the forced card and being entertained with magic.
Want to give a user a Golden Hammer instead of solutions? Hey, give them an editor and teach them to write Java code. To me, that’s too much like a magician revealing his tricks!
Users are experts in their domain. They are not magicians or programmers. Respect their time and skills and don’t waste their time learning your profession. Instead learn theirs like a magician studies what will fool and amaze you.
I Believe in Magic
Not everyone likes magic. To some it is abhorrent that anyone would even be entertained by an illusion. I can look deep into the minds of these rebels of pure logic. You who believe flexibility “is” efficiency. I don’t argue with your methods or philosophy. You are 100% correct. Flexibility has a payoff. But please, most users don’t want that kind of flexibility. Users will be more efficient within their domain, skills, and desires. Most people don’t want to see what’s behind the curtain or operate the levers you love. Please respect that.
I do believe in magic. Magic is anything where I get what I need without a need to know how it is done or, in fact, the skills to do it myself. The same is true of my software and the software I design for my clients. I’m a programmer and magician and I have users and an audience. My users believe in magic. To bring back the example of the hard to use versus the easy virus scanner, the easier one to use has all the magic. Abracadabra!
—————————————————–
Do You Want to Discover the Fast and Easy Way to Amaze Friends & Family, Be Star of Any Party and Impress Lover?
Click Here to Get Easy Mentalism Now:
==> www.mind-reading-tricks.com
—————————————————–
Daniel Brookshier, JXTA Consultant, is a freelance consultant, speaker, author, and Java Geek since Java 1.0. Daniel is one of the core members at jxta.org and runs several open source projects including jxta-remote-desktop at java.net. Daniel’s latest book is JXTA: Java P2P Programming, but he also writes articles for java.sun.com and P2PJournal where he is an editor. Daniel’s blog covers the P2P world, tips, tricks, and musings on Java and JXTA. He can be contacted at turbogeek@cluck.com.







































Write a comment