User-centered design is a big part of what we believe in at PRWD. At its most simple, UCD is all about ensuring that the needs of the user are placed at the heart of the development process, from the very first designs to the very last details of implementation and support. A UCD process involves significant stages of testing in which real system users are able to give their thoughts and opinions on a system’s design and use and ensures that, when deployed, the new system will fit neatly into the intended environment. For customer-facing websites such as e-commerce sites, this is all about ensuring that the customer’s experience of the site is enjoyable, making it easy for the user to locate and purchase those items that may be of interest. Whilst this all sounds quite obvious, it’s amazing how much difference can be made to a site’s conversion rate by testing it against users in the real world!
The Usability Professionals Association, an international industry group, provides a definition of user-centered design which includes the following development cycle, codified in the ISO standard 13407:
- Specify the context of use
Identify the people who will use the product, what they will use it for, and under what conditions they will use it.
- Specify requirements
Identify any business requirements or user goals that must be met for the product to be successful.
- Create design solutions
This part of the process may be done in stages, building from a rough concept to a complete design.
- Evaluate designs
The most important part of this process is that evaluation – ideally through usability testing with actual users – is as integral as quality testing is to good software development.
This process still leaves a substantial part of the development process open to discussion. In particular, it doesn’t make any specific reference to the technical implementation of a project. Since that’s my responsibility, that’s where my interest lies! However, there are many development methods which are a good fit for UCD, and this includes the ‘Agile’ development methodologies.
Agile software development comprises a group of related approaches to software development which attempt to overcome many of the problems faced by traditional software development processes. The fundamental tenets of Agile Development are set out in the Agile Manifesto, and the approach is summarised as follows:
- Individuals and interactions over processes and tools
- Working software over comprehensive documentation
- Customer collaboration over contract negotiation
- Responding to change over following a plan
In short, Agile development is based on the notion that software development processes can be unpredictable and that the bigger they are, the less predictable they become. Agile offers us some important insights into how to manage that process on a dynamic basis, rather than try to eliminate all uncertainty with a huge and detailed up-front plan. As a result, Agile development can cut costs and cut delivery time by placing the emphasis on delivery and quality, working with customers on a good faith basis rather than by setting down overly strict requirements at the start which may bind both parties in ways that neither wants. And this is a very good fit for user-centered design, because it leaves open the possibility of incorporating user feedback as the project gets underway.
One of the 12 principles of Agile Development is this: Welcome changing requirements, even late in development. Agile processes harness change for the customer’s competitive advantage. User input and user testing are perfect examples of that kind of late change. Imagine that you’re setting up a major new e-commerce store; your company needs to boost sales but can’t extend the marketing budget. User testing reveals that the new system does improve slightly on your old one, but with a few more improvements – perhaps to increase the user’s trust in your system, or to improve the system for recommending related products – you could gain a few more percentage points on your sales. At that point, you need a software development process that can react and incorporate those new insights into the site development.
Agile development puts an emphasis on delivery of working prototypes early in the development cycle, giving customers and users a much better idea of what will be delivered at the end. And because these prototypes are delivered early, it’s much easier to incorporate feedback into the finished product. Having worked in software development for some time, I’ve seen plenty of frustration from clients who want to make changes at the last minute, causing even more frustration amongst the software developers who see weeks or months of work being re-written to accomodate them. Projects go over time and over budget when that happens, and Agile development excels at preventing these problems.
It is by combining the two approaches outlined above that we deliver our projects at PRWD. As a developer I’ve found the Agile mindset to fit much better with the problems that I have to solve and with the need to react to a variety of inputs, from clients and system users alike. Being that responsive to user requirements does require a change in mindset from that of a traditional software developer: it’s no longer safe to assume that I always know best about how something should work, and I have to be more flexible to cope with the requirements of the users. But this is all worthwhile as it reduces the pressure associated with delivering a piece of software – if the users and the clients have been involved in the development, you know that they will be happy with the end result.