Monday, November 19, 2007


Now that I am a CUA, I got some interesting job in hand. One of our projects was just taking off and my company decided to make use of my recently gained knowledge on usability. So I was introduced in the project as a Usability Analyst. As the name sounds good, so does the work. In this endeavor I had to do user analysis and data gathering. My job started with a quick survey to know who the end users of our client were. I had an 18 question survey which got 90% completed response. That’s too good by number. By this I was able to come up with User profile, Environment Profile and Task profile of the user group.

Survey gave a strong foundation for usability interviews or end user interviews. For all those who got baffled by the thought of taking end user interviews, let me tell you this is the first and a major step in any user centered design. As the name ‘user-centered-design’ itself includes ‘user’ as the first term, we too keep users in first place while designing a good interface for them.
Usability interviews are done at various stages of a project to gather data about users, their conceptual model and their working habits. One-on-one interview is a good choice if it is difficult to have people perform a task while being observed. Once you know your users and their conceptual model, you go back and come up with a design which now needs to be tested with the users. Again you can conduct user interviews as a part of usability testing.

Following is a quick guide for conducting usability interviews to gather data.

Purpose: To uncover users’ conceptual model, assumptions and thought process.

Number of participants: Now this has always been a debatable issue. Ideally I recommend 5-7 which is a good number to gather data as well as test a sample interface.

Screener: You need to find out right candidates for interview purpose. Write down the criteria’s you want in your candidates. For example you want candidates with at least 3 years of computer experience, who are familiar with internet apart from checking mails. You desire candidates who have done online shopping at least 2-3 times and are aware of the process etc. These screeners are handy for recruiting firms who fill find out suitable candidates for you.

Setup: A closed cabin, question set, voice recorder (if needed), rough sketches of design, mints and water for participants, card sort material and gifts for participant

Questions: There are a lot of questions which you need to bombard the interviewee with however; it’s not just the questions but also their sequence which matters a lot.
Start your interview by giving your introduction, purpose of the meet, duration of the interview etc. It should include a blend of open ended questions followed by close ended ones to get to a proper insight.

Focus of interviews must be demographics like age, work profile education roles and responsibilities, computer experience etc. Interview must also include questions to know users’ domain knowledge, terminology used, past experience with the system, current information source and so on. To be an effective interviewer, you have to focus on the insights. During the interview if the user narrates a story or incident about the system, you are on the right track. Capitalize on it, try to find the reason of that kind of user behavior and document it. This means that the user is not beginning to open up. Try to pull the thread of a topic till the time you have got all the information desired. During interviews be absolutely non judgmental and neutral. Practice active listening which gives the interviewee a feeling of being heard inherently he/she will be keener to answer more questions with ease.

One more burden that the interviewer has to carry is the task of documentation. It’s not a bad practice to note points during interview itself, but it slows down the process and sometimes the focus is lost. It’s better to have one more person with you with a job to note down important points. You two can discuss on more inputs after the interview has finished. Finally note down interview results as soon as possible as these minor but valuable information may slip from your mind.

Card Sort: Card sort technique is useful to open up users mind and know how they tend to group data. Perform card sort with the participant and ask them to group similar labels under one heading. Enquire why they have made certain choices. This will uncover their thinking about a particular label and give you inputs on redesigning labels if needed.

Closing: Inform the participant that you have completed all the questions and were glad to have him. Enquire whether interview has any questions for you. Hand over the gift to him/her and let them leave on a pleasant note.

I forgot to mention the cons of one-on-one interview techniques

1. Time consuming
2. Expensive
3. Can yield different responses form same participant
4. Highly dependent on interviewers technique.


On a closing note, mastering interviewing technique is not a one night job. Do not let newbies conduct user interviews as they may tend to loose the focus of interviews and gather data may not be fruitful. Instead ask them to join in as an observer or for noting interview points for first few interviews. This will give them the right set of skills needed for interviewing candidates in future.

Thursday, November 15, 2007

I am updating my blog after a long time, thanks to my busy schedule but now I am back. During these days I was engaged with a usability project as well as a flex project.

In my Flex application I came across a very challenging scenario. Here is a background of what we were doing. We had our main application made up of various nested flex applications. Finally all the smaller applications were getting loaded into the main application using SwfLoader component of Flex. Everything was looking good till the time our dear client did something which they love to do -change the requirements. To meet their requirement it was necessary to pass a lot of arguments from the main application to the smaller nested applications. Now it looked pretty simple approach.



I did some Google search but could not get any help. Finally I got a simple example in Flex 2 Developers’ Guide which is the documentation on Flex 2 provided by Adobe to help poor developers like me.


Flex 2 Developers’ Guide has an example of passing arguments around various applications on page 276. It gives a brief idea of argument passing between applications however one has to alter the code to make it usable.
To enable argument passing you need to use SystemManager class provided in the Flex 2 frame work. Here is the code snippet


[Bindable]
public var loadedSM:SystemManager;
// Initialize variable with information from the loaded application.
private function initNestedAppProps():void
{
loadedSM = SystemManager(myLoader.content);
}

In the above code ‘myLoader’ is the SwfLoader component used to load a swf file or an application. You can define it like this

<mx:swfloader id="myLoader" source="local.swf" width="300" creationcomplete="initNestedAppProps();">


Lets say you want to change a public variable ‘varOne’ of local.swf which is loaded using SwfLoader, we write the following function:

public function updateNestedLabels():void {
loadedSM.application["varOne"] = "I was just updated";
}

To call this function we need to modify the initNestedAppProps() function to the following
private function initNestedAppProps():void
{
loadedSM = SystemManager(myLoader.content);
l
oadedSM.addEventListener(FlexEvent.APPLICATION_COMPLETE,updateNestedLabels);
updateNestedLabels();
}
The second line of initNestedAppProps() is most important as it assigns an event listener to SystemManager when the application is loaded completely. If this code is missing you will be slapped with a ‘Null Object Reference Error’ which took me 2 days to resolve.

In this way arguments can be passed across various nested applications in flex 2 using swfLoader.