CTO Articles

Home > News > CTO Articles

Published in IT World
September 5, 2006

Menu Option Judo

One of the distinguishing features of Judo as a martial art is that it emphasizes how you can use the weight of your opponent to your own advantage[1].

Hold that thought.

Now, close your eyes - no wait, that won't work - just imagine that you are a computer program skilled in the arts of Judo. Your 'opponent' is a user who is seeking to find errors in your coding. Bugs in the algorithms that make up your innermost being. The user's starting point every day is that you - the application - are always at fault. The user demands to be always right, even if, from your perspective as a logical computer program, the bugs lies within the user, not within your software. No amount of gently prodding the user to read the manual or take a training course appears to help. You seek to defend yourself against these never ending attacks. How to proceed?

The key is to realize that for all their bravado, most users are actually rather unsure of themselves when it comes to the inner workings of computer applications. Behind the blustering exterior there often lies large squishy globules of self doubt. "Is it the applications behavior that is incorrect or is it my understanding of the applications behavior that is incorrect?".

This self doubt can be leveraged. Think of self doubt as a heavy weight your opponent carries. You can use that heavy weight to your advantage just like you would in practicing Judo. All you need to do is ensure that for any given piece of functionality in your application, there are many - preferably dozens - of options that fine tune how that functionality actually behaves. Given enough options to tweak the behavior of some function, the user will soon find that there is literally not enough time in one persons lifetime to try out all the combinations. This realization releases the self-doubt. "Is it the applications behavior that is incorrect or is my setting of one or more of the parameters incorrect?".

For best effect, take care to expose these various options to your user in a variety of different places within the overall application. Spread them across multiple menu items. Make liberal use of cluttered tabbed dialogs. Put other options in configuration files; still others in obscure command line switches.

Make sure that some of these options are ill defined in terms of their interactions with other options and, for maximum effect, give some of them impressive sounding names like 'automated inference quotient' or 'sort priority ratio'.

If you do this well, an amazing thing happens. Faced with apparently errant application behavior, users will start modifying check-boxes and hunting around the menus looking for options to fix the behavior. When this happens, you have them beaten. Their confidence in their own correctness vanishes. "I must have some of these options set incorrectly! It must be my fault." Thump! A perfect shoulder drop[2].

But that is not all. As well as deflecting the blame away from the application, the snowstorm of options has another enormous benefit. Believe it or not, the volume of options is equated in the users mind with application power. Armed with enough options, your application is not only impervious to blame attacks it is seen as being more powerful to boot.

You cannot lose.

Use this information wisely.

[1] http://www.judoinfo.com/ojudo1.htm
[2] http://www.judoinfo.com/images/animations/blue/seoiotoshi.htm


seanmcgrath.blogspot.com