Client Spotlight

“Working with PRWD has been invaluable.
Paul is very logical and detailed in his approach and communicated his findings very clearly to help us see things differently”

Paul McDermott, Head of E-Commerce at Speedo International


Search

Archive for the ‘Web Development’ Category

Oh No, Not More Unusable Business Software!

Tuesday, October 28th, 2008

I have just written an article over at E-consultancy entitled ‘Usable Internal Business Systems – Just a Pipedream?‘.

I would recommend having a read as the usability issues that I talk about are what we have all experienced during our working lives, and there is extensive research provided which proves that the majority of business systems and software solutions in the market don’t value usability anywhere near as highly as we would always advocate.

The article includes my:

  • evaluation of the enterprise level software market
  • industry analysis on the lack of importance placed on usability in software
  • advice on how businesses can attempt to improve the usability of their existing systems
  • advice on how User-Centered Design should be embraced for businesses looking at bringing in new internal software systems
  • summary of why usable internal business systems shouldn’t be a pipedream

Further reading

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.

Credit card validation

Monday, October 13th, 2008

As part of our continual improvements to the UCDCommerce platform, I’ve recently been working on implementing some improvements to the checkout process. One of the most interesting pieces of work involved with this was the implementation of additional credit/debit card validation checks. Validation is the process of establishing whether or not a given piece of data is valid – that it meets the forms and standards expected. In the case of e-commerce checkout processes, it is important to ensure that the details that the user submits are correct, and to give feedback to the user as they are submitting them.

Handling of credit card data is of paramount importance for trust and security, so it’s a good idea to check, as much as possible, that the user has entered the details correctly before submission. If the user does accidentally submit invalid data, this can lead to payments failing to go through, which is potentially worrying for the user and may also be an overhead for the retailer if they need to respond to any user support requests on the subject.

Fortunately, there are a number of checks that can be done to ensure that credit card data is valid, before submitting the data to the card issuer for payment processing. This can’t ensure that the user made no mistakes at all, but it can catch most errors before submission. Amongst the possible checks are:

  • Number of digits
    An obvious check is to ensure that the number of digits is correct, for the given type of card.
  • Card prefix
    The first few digits (normally the first two or four digits) of a credit card number depend on the type of the card (e.g. MasterCard, Visa, AmEx). It is possible to check that the prefix digits match the user’s selection of card type.
  • Luhn algorithm check
    The Luhn Algorithm is a simple formula which can be used to check the validity of many different types of ID number, including credit card numbers. If there’s a mis-typed digit in the number, this check is likely to catch it.

When combined, these checks all act to ensure that any errors in the input of a credit card number are detected before submission, giving the user an opportunity to double-check and correct their input before submission. What we have implemented is a simple system which gives visual feedback to the user, showing a green tick symbol when they have inputted a valid credit card number which conforms to all of the rules mentioned above. Here’s how it looks on one of our clients’ sites:

When the user begins entering their payment card number, no feedback is given until a certain number of digits have been entered:

If the user enters an invalid number, they get this immediate feedback:

And if the number entered is valid, the user is encouraged by this feedback:

For more information, Wikipedia provides a good run-down of the various credit card numbers and their rules here.

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.

PHPNW08 Conference: November 22nd 2008

Friday, August 22nd, 2008

It’s confirmed, the North West’s first PHP conference is to be held at Manchester Central on the 22nd of November!

This is a hugely exciting event which should be a great day for PHP developers to listen, learn and discuss many interesting topics with each other. After the success of the initial social gathering, it’s great to see the final announcement.

There’s currently a call for papers underway, giving potential authors a month to submit their presentation abstracts. I see from Twitter that Jonathan Wage (lead developer of the Doctrine ORM library, which we have used here at PRWD) has put in a proposal and I’d certainly look forward to hearing what he has to say, with the launch of Doctrine 1.0 set to happen shortly before the conference.

Needless to say, I’ll be attending and I hope that as many others do so too. I expect that PHPNW will become a regular and important fixture in the development conference calendar.

Further Information

The conference website is here, PHPNW Google Group is here, and an Upcoming.org event for the conference is here.