"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.
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.
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.