In the projects that I have worked so far the teams have invested considerable amount of effort to provide a very good user experience (UX) for the users. One of the most neglected areas when developing software is personalization. I have always felt that personalization is the most important factor that makes the users come back to use the software enthusiastically. To learn about the value of personalization in software we have to look at personalization from a different angle and how it is valued in other industries. In this post I will try to explain that.
People want to stand out of the crowd. The reason everyone wants to have an almost unique name is that they want to stand out of the crowd. I remember during my school days we get our school uniforms which is same for all kids in the same class. I would take that cloth to the tailor and get it stitched to my size. I was always ask the tailor to put something unique in that uniform so that I can stand out. I will ask him to stitch the hand with a style or an embroidery near my pocket. I am sure many of you have heard of the story about Ford vs GM. Ford made cars only in black color and he even sarcastically said “Any customer can have a car painted any colour that he wants so long as it is black”. Few people saw this personalization as an opportunity and started GM and it became a company as big as Ford. I feel that the users should be able to change few things in the software atleast a theme and colors to make them feel that this software was made just for them.
Not everyone uses an application in the same way. I was amazed at this when I did a test asking few users to fillout a registration screen. The screen had 3 sections login details, personal details and education details. Of the 10 people who filled out this 3 of them first filled only the required fields. 5 of them filled the fields as per the order in the screen. 2 of them filled the personal details first, education details next and then finally filled the login details. Few of them first clicked the submit button to find out the required fields to fill. When we collect requirements we should also find out the working style of people and try to provide something that fits their style.
Personalization for performance
Once a guy went to a tailor to get a custom suit stitched. The tailor took his measurements and gave him a receipt and asked him to come after a week. The guy went to pickup his custom made suit. The tailor asked him to try it out. The guy went to the trial room and came out wearing the new suit. He found out that the left hand in the coat was shorter than the right hand and the right leg in pant was shorter than the left leg in the pant. The guy was disappointed but he has to go somewhere urgently and asked the tailor how he can even walk to his car wearing the suit. The tailor asked him to pull his left hand little bit inside the coat and the bend his knee to pull the right leg in. He walked in that inconvenient pose to his car. Few girls passed by look at the guy closely and said “We should appreciate the tailor who stitched a suit for a physically challenged man”.
The above story was given to me as feedback by my first client during my college days. I delivered a small software written in Visual Basic and this was his comment. Software sometimes severly holds back the users and brings down their productivity. Personalization for productivity and performance is very important.
I hope the above list is a good start for developers to think about personalization. One of the first steps to start implementing personalization in existing application is to collect information about errors and usage of the application at user level. There are only very few applications that I have worked on that collect error information at user level. Otherwise the error message is just logged into a file with no user details. While most projects are in agile sprints these days it is a good idea to dedicate a small team to work on a parallel sprint may be one sprint in a quarter to implement personalization features. The key to personalization is passive data collection. Collect information about how the user uses the screen passively like how long they took to enter all the fields in a screen before clicking submit button. How frequently they reset the screen. While personalization is a very good feature it is not need for all roles in an application. For example in attendance system not all roles need a personalization only the person who is going to use the attendance data needs more personalization features compared to the users who just log their attendance.
I hope this post provides and thoughts and tips for personalization in your project. Post your comments about this article or question on my twitter account.