User-centred design is an iterative set of steps which focus on involving the users in the design process, development and testing of our software (i.e. our Software Development Lifecycle).
A key concern in UCD is constantly re-evaluating the context of use. This helps us to specify (using e.g. UML) requirements which, in turn, help inform our designs.
Because our conceptual understanding of how a system works is, in general, lacking, UCD provides a process to try and remove biases during system design an development.
Ultimately, we want to produce better systems. We achieve that by taking into consideration feedback from our stakeholders. As we incorporate this feedback, the resulting product tends to better fit our users’ requirements.
We also want our designs to fit the widest possible demographic. This is referred to as Universal Design.
The result of all this effort also has tangible socio-technical benefits. Through an iterative design process we get:
7.02 User Friendliness – a false metric
User-friendliness is not a universal, measurable metric. Its meaning changes depending on context.
Our systems will, hopefully, be used by hundreds of different users from different backgrounds. How can we design a system that’s friendly to this myriad of different users? In short, we can’t.
We can say that user-friendliness is a false metric, considering that there’s no universal truth for what user-friendliness means. What is friendly to one person could be unfriendly to another.
This is one reason why we can find so many options of SW doing roughly the same thing (IDEs, Operating Systems, Text Editor, etc).
Instead of looking at user-friendliness, we should aim at understanding Usability. Here, our primary concerns are:
Usability grew from the work on pioneers such as Jakob Nielsen, Donald Norman and Ben Shneiderman. The real revolution, however, came about with the increase in usage of systems.
Along the way a series of innovations paved the way for big paradigm shifts. For example, the early Xerox Alto and Windows operating systems gave us a Graphical User Interface (GUI) operating system while affordable broadband internet largely increased the number of internet users. More recently the original iPhone revolutionized the mobile phone market and MOOCs have changed the way education is delivered.
7.03 Test early, test often, iterate
Testing is important in all Software Engineering. When we talk about Iterative User Testing, we might think of a test as way to verify that our system behaves as specified. eg if I turn the key in my car, I expect the engine to start.
We can combine our testing methodology with our usability definition. For example, from an effectiveness and efficiency point of view, we can collect metrics on whether a user completed a specific task and how long did it take:
User satisfaction testing is a bit more subjective. We probably want to collect more qualitative data regarding user satisfaction. We could watch people using our system to identify interaction patterns, or try to look out for hesitation which might indicate a design problem without it being reported as such.
Sometimes, observational data and metrics may paint a different pictures, we have to resolve these sorts of problems as well.
In order to frame our use cases, we may want to create Personas. They are an amalgamation of data that can help us think about what a typical user might look like. It should help us targeting users from a particular demographic.