Thursday, 31 October 2013

Of Systems and Designs (Non Technical)

Swami Gulagulaananda said:
"The ability to handle rejection is an important quality to have"

[I started reading this fantastic book called "Design Of Everyday Things" by Donald A. Norman. The book is highly recommended by the way. This post is inspired by the book. Let me start off by saying I am no expert - these are my opinions only]

Systems and Designs seem to be very technical words. But, to me, they are more like common sense. These days, that is... Actually, from yesterday, because I started reading this book and now I have suddenly become an expert in the area.

Driving in Bangalore is a pain, which most of you are aware of. But driving a car can get a little more annoying because of all the motorcycles that swarm around you. Motorcycles are inherently unstable and tend to move in unpredictable paths in excessive traffic. So a driver of a car has to be extra careful when he drives because he has to concentrate on a number of haphazardly moving vehicles on both sides. The following is a scenario I encounter almost everyday.

I am on the left because I want to turn to the left. However, there are motorcycles that want to go straight but don't find enough space on the right side. So they creep in the space between my car and the pavement and go ahead. This is particularly annoying when I am turning to the left because it is idiotic of him to come in that space.

But it happens. Invariably... Every single day...

How do you fix this? Simple, educate everyone. This is not really as simple as it sounds. One, because it is an extremely time consuming task. Two, there are always idiots who will do it. To rely on the intelligence of people, therefore, becomes difficult. To fix this, we need to come up with systems.

A good system, according to me, is something that is idiot-proof. Something that should become impossible to break. My solution to this particular problem, that I have been effectively using everyday, is to drive very close to the pavement, so close that all hopes of finding subatomic spaces between my car and the pavement are completely eliminated. I have seen motorcyclists trying to sneak into small spaces and I cover even that area till they give up and wait. As you can notice, it is sheer impossibility that prevents any attempts.

One of  the nicest things I like is the Sim card design - If you observe a sim card, it has a small inclined cut on one of the corners. This makes it possible to insert a Sim card in only one way. Any other way, the card simply gets rejected. Norman gives the example of the floppy disk which also follows a similar principle. There can be only one way to do it - therefore, it becomes impossible to screw things up. Now think how many times you have messed up inserting your pen drive into the USB slot - I hate putting it in the wrong way, flipping it around and trying again. And think how your laptop charging points are designed and your mobile phones... Either universal or only one way.

I have a similar watch. It shows time (Du'h). It also shows the date, day and has a stop watch feature. So naturally all of these are settable. A frequent problem that analogue watches have is the 30-31 day problem. When a month has 30 days, on the first of the next month, the watch still shows 31. So I need to increment the date. Alright... We understand the problem. Now, how do I do that?

I know I can set the time, the date, day, start and stop the stop watch, reset the stop watch and also tweak the starting position of the stop watch. It has 3 controls on the right side - 2 buttons and a standard screw. The button on the top is used to start and stop the stop watch. The other button is used to reset the stopped stopwatch. Everybody knows that the screw is used to set the time. How? Well, obviously you pull it and turn it and push it back. Great! But how do I set the date and day? The screw can be pulled a little and all the way. Pulling it a little bit and turning it around sets the the time and pulling it all the way is for setting dates... Or vice versa, I can't remember. But which way should it be turned for the date? And which for the day? I can't remember. Does it mean I am an idiot? How do I manage it? You might have guessed it because you think it is obvious - Trial and Error. You pull it half and turn the screw a little bit and see what happened. Did the minute hand move? Ok, wrong level. Pull it all the way and slowly turn it. Did the date change? Great!! If you didn't want to change the date but you did it anyway, you have to rotate it 30 more times!!

You see, the system is allowing me to do as I wish - and so mistakes happen. And that happens because of an improper design. Which direction to turn to change the date or how much to pull to change the time, are not based on anything logical or natural. They are completely arbitrary. Arbitrary things are naturally difficult to remember... That's why people come up with mnemonics and associative memory techniques to remember arbitrary things. Another fantastic book to read is 'Thinking Fast and Slow'. So, to summarise, in this case, this watch is a flawed design. Anything arbitrary is wrong.

I had another funny experience - My friend Mayur got a new fancy pen. I asked him to show it, and I tried to pull what appeared to be the cap to see it. The moment I began, he said "Hang on, hang on, that's not the way..." and pressed it. Think about it - How difficult is it to use a pen? :P But you have gone through this before too. The classic Reynolds 045 ball point pen, for example, is impossible to mess up. Some fancy pens look like you have to do something else, but actually you have to do something else. Which is weird... and flawed.

This is a technical paragraph - feel free to skip... Amod and I had a bad experience when we started learning jQuery. On click of a button, we would clear a div, make an ajax call and create a table html structure and populate the div by using jQuery append. Okay, we know it's wrong to do such things now and use more elegant ways, but we were beginners then. If a person pressed the button once, the code worked fine. But what happens if a person presses the button twice? Ajax being asynchronous resulted in the div getting cleared for each click once, ajax calls being made and the responses of both getting appended, which means, two tables got appended. Clearly wrong. You can argue and say - Don't press  twice. But that's not the point. The design is flawed and  the system is wrong. To avoid it, either fill entire html (use html instead of append) or disable the button till the callback is completed...

To summarise, designs and systems should inherently avoid mistakes from being made. I am no expert in the field, I was just excited to share these views and recommend the two books to everyone.

3 comments:

Abhishek said...

"A good system, according to me, is something that is idiot-proof." Epic one man!

Abhishek said...

"A good system, according to me, is something that is idiot-proof." Epic one man!

Sandesh R K said...

I have similar thoughts regarding the water taps in most of these restaurants. I don't care how fancy they look, but if it makes you think for more than a second on how to let the water out, the very purpose of having a tap is defeated.