miércoles, 11 de marzo de 2015

Human-Centred Design

Continuing with usability in software systems, the current post will cover the iterative process which must be follow to deal with this topic. This iterative process was quoted in the previous entry as User-centred design process, it can also be called as Human-centred, whose definition and graphical representation are:
"Human-centred design is an approach to interactive system development that focuses specifically on making systems usable." [1]



After planning a human-centred design process (step1), the next step in the process is to understand and specify the context of use.
Remember we talked something about the context of use in the previous post, did you remember?
The context of use is the actual conditions under the software product is used, or will be used in a normal day to day working situation. This context must be studied in order to know their characteristics insofar as they are likely to influence the usability of the final software product. The context of use is composed by three elements (users, tasks and environment).






We have to analyze:

  1. Characteristics of users.
  2. Tasks that users are going to perform.
  3. Environment where the system is going to be used.





This type of design requires active involvement of users throughout the development process, plus an appropriate allocation of function between users and technology. At this point, it is going to reflect on some available methods for the observation of the context of use:
[USERS]
Questionnaries: After preparing a questionnaire about relevant issues, you can choose to conduct a series of personal interviews or distribute it  to a sample of users. In my opinion the second option is better because the user will feel more free and you probably will receive more feedback.
User representation: This can be done with Personas technique, defines fictitious personas based on information gathered from many real users and focuses on these personas throughout the software development process (advantage: it helps to think on the real end user); or User profiles, collects and organizes information about users viewing them as roles.
[TASKS]
Observation: Made by the observer himself following the technique of Ethnographic observation, in which the viewer is immersed in the "culture" to study, understanding the motivations and needs of the user and their use of technology (aka fieldwork); or Contextual Inquiry, technique based on elicitation requirements in the user workplace, in this case the observer occasionally interrupts the user to ask why a particular action has been performed in order to find the logic behind. This technique could be seen a little bit intrusive/aggressive ( :-o I prefer not to use it!).
Self-observation: The observer does not have to act, at least initially, is the user who performs his tasks and we can study him, bothering him, writing a diary, or using a tool such as Google Analytics (automatically, undisturbed).
[ENVIRONMENT]
Competitor analysis: This method is an important part of the strategic taken, it is a strategic technique used to identify weakness and strengths that a company's competitor may have, and then use that information to improve our own product. Some might wonder Why bother to analyse competitors? On the one hand some companies think it is best to get on with their own plans and ignore the competition, but on the other hand there are others who become obsessed with tracking the actions of competitors (even using illegal methods). In summary the best goal we can achieve with this method is to generate understanding of competitors strategies to react to changes, templates on how to write can be seen here.


Besides specifying the context of use, it is necessary to produce design solutions that meet user requirements. And...what is design? Design is create something from scratch, in software market, this something is abstract, complicating the job. Therefore, designers should have in mind a product concept (design model), that's a high-level description of how a system is organized and works.
Another question arises at this point How designers can generate and discuss design ideas? let's answering this question explaining different techniques:
Brainstorming: That is useful to generate a diversity of ideas, however it is not good if there is tension in the group or there are fights over the ownership of ideas.
Parallel design: To explore different alternatives several different designers work out preliminary designs before settling on a single approach.
Scenarios: Specific case of the use of the product, they are fictional stories written as a narrative.
Storyboards: Also an specific case of the use, but this time the story is a comic-strip-like set of drawings.
Scenarios and storyboards are a good way to increase the fidelity of the project without overly focusing the functionality of the UI. They concern themselves with situated conditions, user motivations and environments without addressing functional details of the UI. Both design artifacts can offer visual ideas of users’ interaction with the product and can force design decisions, if you are not good at drawing, your choice are the scenarios, but as "a picture is worth a thousand words" I recommend using storyboards. To do storyboards check out Guide to storyboarding [2], a very good guide that considers three main points (setting, sequence, satisfaction) when making them.


Setting:  People involved? Environment? Task being accomplished?
Sequence: What steps are involved? What heads someone to use the app? What task is being illustrated?
Satisfaction: What's the motivation for the user? What's the end result? What need are you satisfying?
Applying these three points, this is part of the storyboard of our project

The big problem that exists nowadays is that enough iterations are not performed in the development process of a software system, perhaps caused by budget problems, time, etc. Often, only the first user requirements are taken in account and without continuous iterations it is hard to keep the project updated and at the end you have a different product than the user wanted. The reaction of users to the system can not know in advance 100%, no matter how has been studied the problem and potential users (humans are unpredictable by nature), so you need to refine or redefine the design. Consequently the iterative approach is required because the better understanding of the problem is only reached when the solution is finished.

[1] ISO 9241-210
[2] Dar Aziz, Amal. Amal's Guide to Storyboarding. Stanford University.

domingo, 1 de marzo de 2015

HCI and Software Engineering basics

Let's start answering these question: What does HCI stand? What's Interaction Design about?

HCI stands for "Human Computer Interaction", the HCI discipline is concerned with the design of computer systems that help people to perform their activities productively and safely [1].
Interaction Design is about designing interactive products to support the way people communicate and interact in their everyday and working lives. This approach considers user experience (UX) [1]. To learn more about user experience, check out Usability.gov the leading resource site for UX best practices and guidelines, from this site I strongly recommend starting with Interaction Design Basics.

HCI and Interaction Design are multidisciplinary, within the wide range of disciplines we will focus on Software Engineering. In the Software Engineering market, usability is a pending issue, when we talk about usability the term denotes the ease with which people employ a tool in order to achieve a particular goal.


As we can see in the picture above, Garfield is really messed with his computer :-? but Garfield, like everyone, doesn't want a computer friend, he wants to get on with his work, so we must say NOT USABLE instead of "not user friendly" because the user can not accomplish his goal. 
When someone wants to buy a software product, you want quality and quality includes usability (a basic software feature). Thinking about usability, people tend to think about the user interface (UI) of the software product but these two concepts are not synonymous. The UI is just the visible part of the system.


And what about the User Experience?
According to Tom Stewart: we define it as "all aspects of the user's experience when interacting with the product, service, environment or facility" and we point out that "it is a consequence of the presentation, functionality, system performance, interactive behaviour, and assistive capabilities of the interactive system" [2]. This essentially means that UX includes many aspects such as human factors, design, ergonomics, HCI, accessibility, marketing as well as usability. Of course, Apple is particularly good at this field, the group of UX conditions can be sorted by representing them as concentric circles from the most basic to the least, as shown in the diagram below:


Usability is not properly addressed in most developments, on spite of its importance. Take into account usability at the begining of the development process is more profitable since later becomes more expensive and harder to lead.
The way to deal with usability is to assume a User-centred design process in which the design is based upon an explicit understanding of users, tasks and environments; knowing that the system is not isolated, it is surrounded by the context of use.

Focusing on interaction design, design usable software needs the integration of the skills and techniques of the HCI community (it has techniques to develop usable software) and the Software Engineering community (it  has the knowledge about software systems development).



[1] Ferré, X., 2015. Human-computer Interaction basics slides as part of the subject 'Interaction Design'. Msc EMSE, Universidad Politécnica de Madrid.
[2] Stewart, T., 2008. Usability or user experience, what’s the difference? - accessed on March 1, 2015