Sunday, August 20, 2006

Dont let user feel stupid

Few days back I started taking car driving class. Instructor explained to me were various peddle for accelerating, breaking and changing gears. Using my two legs I can press various peddle in total of 6 possible ways:
  1. Only accelerator peddle – Speed will increase. No problem.
  2. Only break peddle – Speed will decrease. No problem.
  3. Only gear changing peddle – Gear disengage. No problem.
  4. Accelerator and break peddle – Car will be get confused. It wont know what to do, whether to increase the speed or decrease the speed. So pressing both peddles together is a problem. It looks so stupid. Why some one would do it. But nevertheless it’s a possibility even by mistake.
  5. Accelerator and gear changing peddle – Engine speed will in increase but gear will be in disengaged position. No problem. Only fuel waste will happen.
  6. Break and gear changing peddle – Gear disengages and speed will also decrease. No problem.

The problem combination is made almost impossible (almost because, if some one want to do, he can always find ways to do it) by very simple design – the relative position of peddles. Their relative position is shown by simple diagram. If you notice, break and accelerator are positioned closely while clutch being slightly far off left (with respect to gap between break and accelerator peddle. This placement ensures that, you will not be pressing accelerator and break together and avoiding mistakes from driver, and not letting driver feel stupid.

Question is that, why I am talking about this. It is so obvious. Reason I am talking about it is that it is not obvious to many in software development. Many times I face argument that if user makes a mistake, it’s his fault. User should have read the manual etc. If he gives wrong input, he is definitely going to get undesirable output. But the fact is that even learned user makes mistake. I think terming an input as wrong is it self incorrect. Input can not be wrong, only output can be wrong. Off course it’s possible to give input outside the input set/range we have considered. We can handle this scenario in two possible ways. One giving user with undesirable results and making him feel stupid. Another could be to design the system in a way which eliminate can eliminate the possibilities of user giving wrong input or performing wrong operations. This does not require very complex design. In fact complex design creates an elite group which can understand it making average user feel stupid.

Learning here is that we should strive to create simple design/application which does not let user feel stupid.

No comments: