Paul Rouke Bio

I'm the user experience director at PRWD, and have 7 years commercial experience at Littlewoods Shop Direct. Delivering User Centered Design processes to improve systems and applications is what I do.

view my full bio

PRWD

Usability and software development agency specialising in:

  • User Centered Design
  • Best Practice E-commerce capability, UCDCommerce
  • Business Modernisation

view more on PRWD

PRWD, specialists in online user experience
Call us today on
0161 918 6729

Search

Posts Tagged ‘agile’

ThoughtWorks GeekNight on UCD and Agile

Friday, October 24th, 2008

Last night myself and Paul attended a ThoughtWorks GeekNight event, held in central Manchester. The speaker was Luke Barrett and the topic of discussion was the state of modern usability, user-centered design and how this can fit in with best-practice software development techniques such as Agile development.

Luke’s talk was a great overview of the state of usability, touching on a wide variety of topics. In particular, he highlighted the tension between functionality and aesthetics from a number of different angles, pointing out that a functional but drab interface might score well for usability, but lack any emotional weight. Likewise, whilst it’s certainly possible to allow artistic impulses to run wild, the lack of usability input into interfaces can result in designs which look great but fail to deliver for users.

He explained how his own role at ThoughtWorks – a global company employing over 1100 people – has become ever more central as the importance of usability has moved up the agenda and gained acceptance amongst software developers, managers and clients alike. Often it’s hard to make a case for usability simply by talking or writing about it – customers can be dubious about what sounds like a costly exercise in something they don’t understand – but it’s often easy to get people on board once they begin to see the results. The modern approach of making extensive use of visual prototypes rather than written software specifications allows for much higher-quality feedback from the customer early in the development process, leading to better project execution in the long run.

Luke concluded by saying that he felt that there is a considerable benefit to combining modern usability techniques with ‘agile’ software development, a process which involves rapid prototyping and a willingness to change course to satisfy customer feedback. This is something that I’ve written about before, and it was great to encounter someone from such a successful company extolling the virtues of that approach. Events like last night’s are a great way to spread best practice amongst the software development and usability community and many of the attendees came away enthused by what they had heard.

User-Centered Design and Agile Development

Tuesday, October 7th, 2008

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:

  1. 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.
  2. Specify requirements
    Identify any business requirements or user goals that must be met for the product to be successful.
  3. Create design solutions
    This part of the process may be done in stages, building from a rough concept to a complete design.
  4. 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.