User-centered design

User-Centered Design (UCD) or User-Driven Development (UDD) is a framework of processes (not restricted to interfaces or technologies) in which usability goals, user characteristics, environment, tasks and workflow of a product, service or process are given extensive attention at each stage of the design process. These tests are conducted with/without actual users during each stage of the process from requirements, pre-production models and post production, completing a circle of proof back to and ensuring that "development proceeds with the user as the center of focus." Such testing is necessary as it is often very difficult for the designers of a product to understand intuitively what a first-time user of their design experiences, and what each user's learning curve may look like. User-centered design is based on the understanding of a user, their demands, priorities and experiences and when used, is known to lead to an increased product usefulness and usability as it delivers satisfaction to the user.
The chief difference from other product design philosophies is that user-centered design tries to optimize the product around how users can, want, or need to use the product so that users are not forced to change their behavior and expectations to accommodate the product. The users thus stand in the center of two concentric circles. The inner circle includes the context of the product, objectives of developing it and the environment it would run in. The outer circle involves more granular details of task detail, task organization, and task flow.
History.
The term "User-Centered Design" was coined by Rob Kling in 1977 and later adopted in Donald A. Norman's research laboratory at the University of California, San Diego. The concept became widely popular as a result of the publication of the book "User-Centered System Design: New Perspectives on Human-Computer Interaction" in 1986. The concept gained further attention and acceptance in Norman's seminal book "The Design of Everyday Things" (originally called "The Psychology of Everyday Things"). In this book, Norman describes the psychology behind what he deems 'good' and 'bad' design through examples. He exalts the importance of design in our everyday lives, and the consequences of errors caused by bad designs.
The two books include principles for building well-designed products. His recommendations are based on the needs of the user, leaving aside what he considers secondary issues like aesthetics. The main highlights of these are:
In a later book, "Emotional Design", Norman returns to some of his earlier ideas to elaborate what he had come to find as overly reductive.
Models and approaches.
For example, the User-Centered Design process can help software designers to fulfill the goal of a product engineered for their users. User requirements are considered right from the beginning and included into the whole product cycle. These requirements are noted and refined through investigative methods including: ethnographic study, contextual inquiry, prototype testing, usability testing and other methods. Generative methods may also be used including: card sorting, affinity diagramming and participatory design sessions. In addition, user requirements can be inferred by careful analysis of usable products similar to the product being designed.
User-Centered Design takes inspiration from the following models:
Here are the principles that help in ensuring a design is user-centered:
User-Centered Design Process.
The goal of the User-Centered design is to make products which have very high usability. This includes how convenient the product is, in terms of its usage, manageability, effectiveness, and how well the product is mapped to the user requirements. Below are the general phases of User-Centered Design process:
In the next steps, the above procedure is repeated to further finish the product. These phases are general approaches and factors like design goals, team and their timeline, and environment in which the product is developed, determine the appropriate phases for a project and their order. You can either follow a waterfall model, agile model or any other software engineering practice.
Purpose.
UCD asks questions about users and their tasks and goals, then uses the findings to make decisions about development and design.
UCD of a web site, for instance, seeks to answer the following questions:
Elements.
As an example of UCD viewpoints, the essential elements of UCD of a website usually are the considerations of visibility, accessibility, legibility and language.
Visibility.
Visibility helps the user construct a mental model of the document. Models help the user predict the effect(s) of their actions while using the document. Important elements (such as those that aid navigation) should be emphatic. Users should be able to tell from a glance what they can and cannot do with the document.
Accessibility.
Users should be able to find information quickly and easily throughout the document, regardless of its length. Users should be offered various ways to find information (such as navigational elements, search functions, table of contents, clearly labeled sections, page numbers, color-coding, etc.). Navigational elements should be consistent with the genre of the document. ‘Chunking' is a useful strategy that involves breaking information into small pieces that can be organized into some type of meaningful order or hierarchy. The ability to skim the document allows users to find their piece of information by scanning rather than reading. Bold and italic words are often used to this end.
Legibility.
Text should be easy to read: Through analysis of the rhetorical situation, the designer should be able to determine a useful font-family and font style. Ornamental fonts, text in all capital letters, large or small body text are all can be hard to read and should be avoided. Text-colouring and bolding can be helpful when used in text-heavy scenarios. High figure-ground contrast between text and background increases legibility. Dark text against a light background is most legible.
Language.
Depending on the rhetorical situation, certain types of languages are needed. Short sentences are helpful, as are well-written texts used in explanations and similar bulk-text situations. Unless the situation calls for it, jargon or heavily technical terms should not be used. Many writers will choose to use the active voice, verbs (instead of noun strings or nominals), and a simple sentence structure.
Analysis tools.
There are a number of tools that are used in the analysis of User-Centered Design, mainly: personas, scenarios, and essential use cases.
Persona.
During the UCD process, a Persona representing the user may be created. A persona is a user archetype used to help guide decisions about product features, navigation, interactions, and even visual design. In most cases, personas are synthesized from a series of ethnographic interviews with real people, then captured in 1-2 page descriptions that include behavior patterns, goals, skills, attitudes, and environment, with a few fictional personal details to bring the persona to life.
For each product, or sometimes for each set of tools within a product, there is a small set of personas, one of whom is the primary focus for the design. There are also what's called a secondary persona, where the character is not the main target of the design, but their needs should be met and problems solved if possible. They exist to help account for further possible problems and difficulties that may occur even though the primary persona is satisfied with their solution. There is also an anti-persona, which is the character that the design is specifically not made for.
Personas are useful in the sense that they create a common shared understanding of the user group for which the design process is built around. Also, they help to prioritize the design considerations by providing a context of what the user needs and what functions are simply nice to add and have. They can also provide a human face and existence to a diversified and scattered user group, and help in creating some empathy and adding emotions when referring to the users. However, since personas are a generalized perception of the primary stakeholder group from collected data, the characteristics may be too broad and typical, or too much of an "average Joe". Sometimes, personas can have stereotypical properties also, which may hurt the entire design process. Overall, personas can be a useful tool to be used by designers to make informed design decisions around, opposed to referring to a set of data or a wide range of individuals.
Personas can also be modified all through the UCD of a product, based on user testing and changing environment. This is not an ideal way to use Personas but should not be a taboo either particularly when it becomes apparent that variables surrounding a product's development have changed since the design started and current persona/s may not cater well to the changed conditions. 
Scenario.
A scenario created in the UCD process is a fictional story about the "daily life of" or a sequence of events with the primary stakeholder group as the main character. Typically, a persona that was created earlier is used as the main character of this story. The story should be specific of the events happening that relate to the problems of the primary stakeholder group, and normally the main research questions the design process is built upon. These may turn out to be a simple story about the daily life of an individual, but small details from the events should imply details about the users, and may include emotional or physical characteristics. There can be the best-case scenario, where everything works out best for the main character, the worst-case scenario, where the main character experiences everything going wrong around him or her, and an average-case scenario, which is the typical life of the individual, where nothing really special or really depressing occurs, and the day just moves on.
Scenarios create a social context in which the personas exist, and also create an actual physical world, instead of imagining a character with internal characteristics from gathered data and nothing else; there is more action involved in the persona's existence. A scenario is also more easily understood by people, since it is in the form of a story, and is easier to follow. Yet, like the personas, these scenarios are assumptions made by the researcher and designer, and is also created from a set of organized data. It is important to ensure that scenarios are created as close as possible to real world scenarios. Nevertheless, it can be sometimes difficult to explain and inform how low level tasks occur, for ex- the thought process of a persona before acting.
Use case.
In short, a use case describes the interaction between an individual and the rest of the world. Each use case describes an event that may occur for a short period of time in real life, but may consist of intricate details and interactions between the actor and the world. It is represented as a series of simple steps for the character to achieve his or her goal, in the form of a cause and effect scheme. Use cases are normally written in the form of a chart with two columns: first column labelled actor, second column labelled world, and the actions performed by each side written in order in the respective columns. The following is an example of a use case for performing a song on a guitar in front of an audience.
The interaction between actor and the world is an act that can be seen in everyday life, and we take them as granted and don't think too much about the small detail that needs to happen in order for an act like performing a piece of music to exist. It is similar to the fact that when speaking our mother tongue, we don't think too much about grammar and how to phrase words; they just come out since we are so used to saying them. The actions between an actor and the world, notably, the primary stakeholder (user) and the world in this case, should be thought about in detail, and hence use cases are created to understand how these tiny interactions occur.
An essential use case is a special kind of use case, also called an abstract use case. Essential use cases describe the essence of the problem, and deals with the nature of the problem itself. While writing essential use cases, no assumptions about unrelated details should be made. In additions, the goals of the subject should be separated from the process and implementation to reach that particular goal. Below is an example of an essential use case with the same goal as the former example.
Use cases are useful because they help identify useful levels of design work. They allow the designers to see the actual low level processes that are involved in a certain problem, which makes the problem easier to handle, since certain minor steps and details the user makes are exposed. The designers' job should be to take into consideration these small problems in order to arrive at a final solution that works. Another way to say this is that use cases break complicated tasks into smaller bits, where these bits are useful units. Each bit completes a small task, which then builds up to the final bigger task. Like writing code on a computer, it is easier to write the basic smaller parts and make them work first, and then put them together to finish the larger more complicated code, instead tackling the entire code from the very beginning.
The first solution is less risky because if something goes wrong with the code, it is easier to look for the problem in the smaller bits, since the segment with the problem will be the one that does not work, while in the latter solution, the programmer may have to look through the entire code to search for a single error, which proves time-consuming. The same reasoning goes for writing use cases in UCD. Lastly, use cases convey useful and important tasks where the designer can now see which one are of higher importance than others. Some drawbacks of writing use cases include the fact that each action, by the actor or the world, consist of little detail, and is simply a small action. This may possibly lead to further imagination and different interpretation of action from different designers.
Also, during the process, it is really easy to oversimplify a task, since a small task derived from a larger task may still consist of even smaller tasks which were missed. Picking up a guitar may involve thinking of which guitar to pick up, which pick to use, and think about where the guitar is located first. These tasks may then be divided into smaller tasks, such as first thinking of what colour of guitar fits the place to perform the piece, and other related details. Tasks may be split further down into even tinier tasks, and it is up to the designer to determine what is a suitable place to stop splitting up the tasks. Tasks may not only be oversimplified, they may also be omitted in whole, thus the designer should be aware of all the detail and all the key steps that are involved in an event or action while writing use cases.