Friday, March 13, 2009

Why usability training is required for engineers

I am a software engineer myself. But sometimes I think that one of the subjects that should compulsorily be taught in Software Engineering is Usability and User Centric Design. Because this subject is not taught, engineers end up making the end user's life very difficult, thus defeating the very purpose of creating software for that user.


Latest reason: My extremely poor user experience with using Motorola Phone Tools (MPT).


Background: I have a Motorola Razr V3I phone, purchased 2-3 years ago. One day, it suddenly started giving me trouble. Whenever I tried to read my SMS Outbox, the phone would reboot!!


I thought I would try a software upgrade. So I went to the Motorola website and downloaded the latest software for the cell phone.

The upgrade went off well overall, except for the part that it wiped out all my contacts. The upgrade did not prompt me to save my personal data manually in another location (it only had a check box for automatic backup and restore). Otherwise I might have done that to save me further grief. But that is a separate story. At least it brought back a lot of my personal data.


The real fun started now. Fortunately I had taken a backup of my cell's Contacts folder a few months ago. So I had something to fall back on.

The backup was taken by Motorola Phone Tools (MPT). I started MPT, and asked it to restore the data.
Data restored, me happy, right? Wrong!! The software failed to restore a backup that it itself had taken!! Wow!!

Googling revealed that a later version of MPT might solve the problem. So I downloaded MPT ver 4.5 and tried with it.


MPT deleted my SIM card's contents. It deleted my phone's contacts. It restored my SIM's contents. And it .... DID NOT restore my phone's contacts!!

"Failed to restore data" was the extremely verbose and helpful error message given by MPT.


I am a Software Engineer, and we do not give up that easily!! I opened the file that had the contacts list (approx 500). It was a text file (delimited by semi-colons ";" for the tech-savvy people out there).


Instead of all the records, I took 50 at a time. The 1st 50 succeeded!! I had 50 contacts transferred to my phone. Then I took the next 50, and so on.

I had a failure for the 251-300th records case. I then narrowed it down to 1 record. Changing 1 field made that record pass!! Actually it was 1 number that I changed, and presto!! It worked.

To cut a long story short, only 2 records out of 500 had problems!! And for that I got absolutely no help from MPT itself!!

There were many reasonable options that MPT developers could have given:
  1. Say that "2 out of 500 records are bad".
  2. Pointed out which ones were bad.
  3. Pointed out which field in the bad records was causing a problem with the import.
  4. Given tips on how to fix it.
  5. Imported the remaining 498!! How difficult is it to ignore failures and move on with the rest of the data?


Seriously, the folks who worked on that piece need a crash course on thinking from the end user's point of view. If I had not been an engineer myself, I would have quit long back on trying to get anything to work.



I still am going to quit - on Motorola cell phones. My next one will definitely NOT be a Motorola.



I have great respect for the Motorola company. This is one company that has extremely high standards for their products. Their hardware products are one of the best.


But if they are taking no pains with the usability of their products, then there is no point in buying from them - especially if the product happens to be a consumer one.

I know that the engineering team that made MPT must be working hard. They probably did not think that in case an error occurs, they should take pains to make life easier for folks that are using the software. But this is no excuse.

God knows how many such engineers in different companies are writing software that is fundamentally good, but lacks in usability. According to me, User centric design is NOT optional. In today's world, it is a must.


Usability design training must be given to each and every engineer working on a software product. Making life easier for the end user must be one of the goals of any software project ...