Archive for November, 2009

h1

Individual versus Conforming design

November 27, 2009

Have you ever seen a website whose interface is ‘way out there’?  Of course you have – there are many.  Sites where, for better or worse, the designer has chosen to make her own path rather than follow a tried and tested design.

Picture of rather individually styled Smart Car

Individual design is a highly creative discipline; it forces the designer to think about every little detail, how those details fit together and how they combine as a whole.  It allows the designer to express personality, demonstrate their technical and aesthetic capability, and challenge accepted norms.  To be brief, it’s something of a clean sheet with all the possibilities that this brings.

Conformity is the contrasting approach; it’s more constrained, conforming to established rules, guidelines, accepted practice, you name it.  It prescribes ways of doing things and in practice frees the designer from the tyranny of that ‘clean sheet’ which can be daunting.

Neither approach is ‘all-or-nothing’; the designer will find a balance that suits their own preference, experience and abilities, tempered by the requirements of the customer.  We’d like to consider some benefits and drawbacks of either approach.

Image of rather ordinary grey blocks

First of all, let’s consider conformity.  The driving force behind conformity (in a software design context) is to take advantage of the hard-won experience of those who have gone before.  Over time, a solid body of accepted practice has built up, shaped by the lessons learnt about what works and what doesn’t.  There’s a good reason that things are the way they are.

In conventional software development, for example for Windows forms-based applications, a great deal of the hard-work is already done.  There are standard form styles, controls, menu conventions, buttons and so on.  A user, having never seen SomeCompany’s new ThingyApp tool, will at least be presented with something which has a basic familiarity.  A conforming design will behave in much the same way as other applications.  The minimise button will be where it always is; there will be a File menu, perhaps a tool-bar, et cetera.

What we as designers gain from this is a greater consistency with the ecosystem of other applications.  We also benefit from the re-use of common components and frameworks, which are probably more stable and better tested than anything we could come up with ourselves, if truth be told.  A common UI is, then, a starter-for-ten which enables us to concentrate on the functionality without getting bogged down too much in how we’re going to let you control that functionality.

The drawback to conformity is of course that everything tends towards… well, bleh.  ‘Bleh?’ I hear you say?  Unashamedly non-technical, it’s our instinctive reaction to the ordinary, the familiar, the taken-for-granted – dare I say it, the dull.

If you want to make a big impression with your software, it has to stand-out in a good way.  Maybe this can be achieved by solving some hitherto difficult task, or by improving radically on something that already exists, or perhaps by doing things in a novel way.

Picture of crazy headphone design

Individual design tends towards this ‘doing things in a novel way’ approach.  Rather than be constrained with the common UI, the designer can really go to town on a design.  No longer bound by convention, then, the outcome is completely at the hands of the designer.

And this is where it typically falls down.

You see, many designers want to express their individuality into their designs.  Especially in web development (whose actual content doesn’t have a common UI as such, beyond standard html controls and the typical page lifecycle).  Flash has a lot to answer for here.  Many potentially great website ideas have been compromised by the use of bad Flash design.  Slow, confusing, overly graphical and exclusive (in the sense that they exclude people who might have no choice but to surf using assistive technology, for example the Jaws screen-reader).

The difficulty is that deviating from well-worn path of convention is a real risk to the usability and accessibility of a design.  Whilst it’s possible that a designer might come up with something which improves upon convention, it’s far more likely that what is designed will fail.  A radical design may well please a small proportion of its user-base, but by messing with the accepted norms, it will doubtless alienate or at best confuse a significant number of its users also.

So, where does this leave us?  Well, the point of this article was to weigh up ‘individual’ versus ‘conforming’ designs, and the short answer is that we can’t really rule on either.  After all, designs exist for a reason, and that reason is to facilitate the use of the thing for which the design was created.  An individual design may well achieve this goal better than a conforming design – we can’t really judge this on a hypothetical basis.  What we can do, however, is look at human nature and suggest that anything which challenges our understanding of how to interact with a system, or forces us to leave our ‘comfort zone’, is likely to require greater effort than a design which plays to our existing understanding and experience in interacting with a system.  Where greater effort is required, we are more likely to make mistakes.  With mistakes come frustration, and frustration quickly turns into dislike and abandonment.

The designer should bear all of this in mind before she departs from the ‘standard designs’, and have good reason for doing so.  If she does take this route, then it places a far greater responsibility on her to ensure that her design works, and justifies its ‘individual’ nature.  There are many techniques which might be used to do this – requirements prototyping being one of the best choices – but at the end of the day a radical design is a challenging proposition and carries increased risk.

We don’t like unnecessary risk.  We can either mitigate it, with careful feedback using prototypes, or avoid it, by sticking to tried-and-tested ‘conforming’ designs.  What we mustn’t do, however, is bury our heads in the sand and hope it all works out…

h1

Pushing the envelope

November 21, 2009

Sometimes a design will arrive for an everyday item that’s so blindingly obvious yet revolutionary you have to wonder why nobody did it before.

Such a design is the folding plug, designed by Min-kyu Choi.

Taking inspiration from the Apple Macbook Air, which is advertised as being the ‘world’s thinnest laptop’, Min-kyu found irony in the fact that this wonder of modern design was saddled with the rather archaic and clunky UK three-pin plug:

Picture of Macbook Air and folding plug in an envelope

In a breathtakingly simple but inspired design, Min-kyu has created a clever folding plug which occupies under 1/3 of the space of a conventional UK plug.  Thinner than your little finger when folded, this beautiful bit of design refactoring takes plug design forward in leaps and bounds:

Picture of folding plugs

As software designers, we should be actively seeking out the ‘chunky plugs’ in our world – awkward, unfriendly, approaches to interaction that have somehow become the ‘norm’.  These are the things that people put up with despite their shortcomings.  If we put the effort in, we shall and will find them.  We may even be able to come up with something significantly better.

Min-kyu deserves great credit and recognition for making such an improvement to an everyday object.  I hope that you can find your own ‘chunky plug’ and make your own mark.  After all, that’s the essence of good design – improving our everyday lives.

h1

Ergonomics…

November 18, 2009

Just wanted to put a link to a great article on the science of ergonomics.

It’s something which applies as much to effective software design as it does to milk cartons or portable music players. 

That page design that requires the user to constantly scroll within a tiny window to see their document?  Or the excessively large button strip that houses rarely used functionality but takes up precious screen real-estate, pushing the user’s content down below the fold?  These things aren’t just usability concerns, they’re ergonomic flaws. 

Software ergonomics: It’s the difference between creating a frustrating and a rewarding user experience.

It’s as simple as that.

h1

Adding magic

November 18, 2009

Picture of a magic wandDesigning interactive software systems is a fantastic opportunity not only meet the objectives of your customer, but improve the day-to-day experience of the end users.  This responsibility doesn’t come lightly; get it wrong and you run can just as easily frustrate and irritate those users, and even a mediocre system will become a hated system over time. 

What we need to do is to try to think as a user does, see a system as a user sees it and consider the bigger picture of that user’s working day.  How does this system fit in with the other things they do.  Do they want to be able to use this system concurrently with another system?  Will we need to work with a non-maximised screen layout in mind?  How much assistance in using a system is enough?  How much is too much? 

The list of considerations is seemingly endless, but by thinking about these things we achieve something very important indeed: we start seeing a system from a user’s perspective.  In other words, we start to really appreciate just how a system will fit in with the workflow of our users, in the context of their everyday tasks.  In essence, we start considering that system’s place in the ecosystem of a user’s day.

We have, then, our opportunity to add value beyond the delivery of ‘a system’.  We can deliver ‘a solution’ that integrates into workflow more effectively, and delivers real benefit through the combination of increased productivity, ease of use, interoperability with other systems and so on.

What we have is the opportunity to really improve, to ‘add magic’ to that user’s day.  Let’s not waste that opportunity by rushing our software out the door…

[why not subscribe to this blog via RSS? It’s a great way to ensure you don’t miss a single post]

h1

The power of small teams

November 16, 2009

One of the most recurring questions that crops up in software development is ‘what size of software team is optimal?’ It’s a tricky question and consensus seems as far away as ever.

Picture of figures lifting a piece of a puzzleThere is a school of thought which suggests that smaller teams are considerably more effective, per person, than larger ones. The theory goes that the overhead required to organise and manage a smaller team is proportionately lower than that of a larger team. As team numbers increase, in fact, this overhead appears to increase exponentially.

Why should this be? Well, there are a number of factors, including:

  • Communication
    The more people need to know, the greater the time spent propagating information and ideas, and the larger the risk of those ideas being misunderstood;
  • Diversity
    Generally a good thing, in an effective software team it can be difficult to ‘carry’ anyone whose skill-set and experience doesn’t closely match to the tasks in hand. Diversity is nice, but when there’s a job to do it’s better to have a few specialists than many generalists;
  • Division of tasks
    Splitting larger tasks into smaller ones makes sense but it requires careful planning and resourcing, and runs an increased risk of ‘compartmentalisation’ of knowledge;
  • Personality issues
    The greater the number of participants, the larger the likelihood of conflicts, fallings-out and so on. Also, more people mean that people have smaller individual stakes in the outcome of the project and may feel that their contributions are less valuable;
  • Environmental issues
    It is always trickier to locate a larger team together due to space constraints so larger teams may end up having to be split into two or more physical locations. This creates difficulties with communication, co-operation and dilutes the sense of ‘belonging’ that a smaller team located in one place would have.

In fact, a smaller team can be considerably more efficient than a larger team for a majority of software projects. And this is after taking into consideration the fact that a smaller team will have fewer ‘man days’ available within a fixed period. With the right people on board, a smaller team can be twice as productive per person as in a larger team, due to the considerably lower organisational overhead.

So, who are the ‘right people’?

There is a strong body of evidence to show that the very best individuals can be five or ten times as productive as even averagely competent individuals, when given the opportunity to release that productivity. This opportunity occurs only when the structure of the team permits rather than obstructs performance.

In other words, the team is small enough so that communication is direct and timely, meetings are short and only when required and management’s role is less one of fighting the bureaucracy and ‘red tape’ and more one of enablement and facilitation. The interaction between team members, playing to individuals’ strengths, promotes a synergy that is very rare in larger teams.

A smaller team, composed of talented individuals who have sizeable responsibility, enthusiasm and whose workflow is not impeded by the overhead of larger team issues, can achieve great things.

Innovation always has been driven by a person or a small team that has the luxury of thinking of a new idea and pursuing it. There are no counter examples.”
– Eric Schmidt, Google.

The power of small teams is in achieving great things with minimal waste – and in this sense our original question ‘what size of software team is optimal’ might be answered as follows:

The optimal software team size is as small as one can get away with whilst still achieving the goals.

I know this doesn’t really commit to a particular number, and of course everything is dependent on the quality of the people in the team, the scope of the work to be carried out, the environment in which that work needs to be carried out and countless other factors, but if we had to be drawn on a number, we’d say that the very best software teams are composed of less than ten individuals in total. Generally speaking, of course…

h1

Don’t miss a thing…

November 15, 2009

Today’s article is simply to let you know that there is an easier way to keep up with the latest Prototypically Speaking articles without having to check-in daily.

If you don’t already use one, it’s a good time to think about subscribing to this blog using our RSS feed and a suitable reader.

This way, you won’t miss out on some of our latest articles that you might not have read, such as:

…and many more.

h1

Involve important people (part 1)

November 14, 2009

It’s far too easy to forget to involve the most important people in your software design: the people who will use it.

Your important users
Your users are at the front-line; you should try to involve them in the design phase, so that their needs are acknowledged and their ideas considered and perhaps incorporated into your design.

Use software prototyping to give them interactive designs they can try out for themselves and see what works for them and what doesn’t. Listen to their suggestions and preferences. Value their opinions.

They will love to be involved, as they have a personal stake in the success of your design. Do it well, it will enrich their working lives; do it poorly and they may never forgive you.

h1

Turning prototypes into training simulations

November 13, 2009

Last week, we discussed some reasons why we shouldn’t always throw away our prototypes. After all, we’ve invested a fair amount of time in them, so it makes sense to put them to as many good uses as we can.

Picture of Training Wheels on Motorbike

As mentioned, a powerful use of a software prototype is as a training simulation. Well, we received a couple of emails asking for some more detail about using prototypes for training, and how best to do this, so here is a little more information:

To create a training simulation from a prototype, we ask certain things of our prototype:

  • It must be stable (in terms of functionality)
    In other words, if we are going to use it to train users, it must reflect the system that will be implemented closely – otherwise the use of simulation will be counter-productive;
  • It must be interactive and sufficiently detailed
    Effective training has to feel like a real system, which means it must be interactive. Navigation should work, logins should be simulated, drop-down lists should contain real-world entries, selections on pages should work as a real system would, there should be mock training data and so on;
  • It must look and feel complete
    Each aspect of the prototype’s design should be consistent and complete, at least within the scope of the training requirement. There should be no ‘coming soon’ placeholder pages or anything that suggests a work in progress. Bear in mind that what we are trying to do is to make the simulation feel as much like a built system as possible.

Once we’ve confirmed that our prototype meets these requirements, then we need to think about what type of training simulation we want to create.

The two main types of training simulation that we’ll consider are:

Free (unguided) Training Simulations

…and…

Guided Training Simulations

Picture of 'keep right' sign showing left arrow‘Free’ training simulations allow the user to try systems out without imposing structure on what they should do, or how they should do it. Whilst there may be context sensitive help or general guidance on training objectives, the user is left to their own devices to explore the system and make their own discoveries. In these ‘unguided’ simulations, as we aren’t focusing on workflow or operational tasks. We simply want the user to gain confidence in, and awareness of, the system and how to navigate within it.

Guided training simulations are more complex from a design perspective as the overall aim is to guide users through one or more tasks – typically workflow or operational objectives – with supporting contextual material such as a step-by-step help system. Within a guided simulation, the objective is to train a user how to accomplish distinct tasks in a more directed fashion.

To create an unguided training simulation from an existing prototype isn’t a huge task, provided it meets the criteria mentioned earlier. In fact, it’s almost a ‘freebie’ if enough care has been taken within the prototyping process. Certainly, it’s an added-value output whose cost shouldn’t add significantly to the overall budget and whose benefits will certainly out-weigh those costs.

A guided training simulation is a more significant undertaking – care has to be taken to add ’state’ to the prototype – and this isn’t always easy. We need to do this, however, to hold the ‘current’ status of a user’s interaction with a guided task, and also to use this to control the context sensitive guidance materials. Building a guided training simulator requires a greater commitment from management as it will swallow time and resources to create. However, for critical systems, or where complexity is above average, the investment in creating a guided training simulation ahead of time pays off in diminished risk of ‘down-time’ (whilst users get ‘up to speed’) and increased acceptance from those users as they are already familiar with a new system before it is launched.

In a future topic, we’ll cover guided training in some more depth, but for now hopefully this overview will be useful.

[why not subscribe to this blog via RSS? It’s a great way to ensure you don’t miss a single post]

h1

World Usability Day!

November 12, 2009

In case anyone wasn’t aware (and one could hardly blame you), today is World Usability Day.

World Usability Day Logo

This year’s topic is ‘Designing for a Sustainable World‘ – which is something we should all be doing.

By exploring the impact design has on this planet, the idea is to approach design with the goal of allowing easy re-use or re-purposing of products or the parts of products. What has this got to do with effective software design? Well, don’t forget that though the environmental impact of software design may not be as direct as, say, automotive design, it has an indirect influence due to its ubiquitous nature. Software is everywhere, and poor design in software may prevent reuse of components or products further down the line.

So, it’s important that we carry the spirit of sustainable design through our own developments. It’s about making our world a better place, little by little; as the World Usability Day website says:

Technology today is too hard to use. A cell phone should be as easy to access as a doorknob. In order to humanize a world that uses technology as an infrastructure for education, healthcare, transportation, government, communication, entertainment, work and other areas, we must develop these technologies in a way that serves people first…

So, take a moment out of your day and visit the World Usability Day website, and think about how you can make your designs more usable and perhaps sustainable…

h1

Choice and Accessible Design

November 10, 2009

Choice can be an empowering thing, but it can also overwhelm.

Picture of a pile of question marks Many great designs have succeeded because they kept things simple. Consider the Apple iPod: a music player like many others in functionality, but in essence a much more desirable gadget due to its great design. At least as far as the original iPod design was concerned, the engineers at Apple concentrated on how the device would be used rather than loading it up with niche features. The competition chose to stuff their competing devices with extra features which invariably got in the way.

The market recognised that having an accessible, simple design was more important than niche features and voted with its money: today, the iPod commands a market share of at least half of all portable music devices sold, if not closer to two-thirds, whilst the ‘also-rans’ scrabble to be noticed.

There is a strong correlation between good, approachable design and how well a product or service is adopted in its marketplace. Google Search is another great example: a very simple, easy to understand search page. It didn’t bombard you with banner adverts or confuse you with options and niche functions. It simply reduced the choice in the interface down to a bare minimum so that the it got out of the way, and people loved it.

So, as software designers we should look to our designs and see what is important, what is fundamental to the operation of our product. Speak to the people who will ultimately use your product. Find out what is really important to them, and how they would see it working. Build software prototypes of your design, and let them try them out. Listen to their feedback. Get the fundamentals right, before you even consider any secondary functionality.

It might seem radical, but as the majority of software users make use of only subset of functionality, it’s our job to put the majority of effort into ensuring that subset is as good as can be.