Archive for the ‘Prototyping’ Category

h1

Wireframe or Interactive Prototype?

March 6, 2010

We often talk about wireframe prototyping and rich, interactive prototyping, which are both powerful techniques for getting conceptual designs into a form that can be explored and expanded.

Where to actually use either approach, though, is something that would benefit from covering off here; a recent email from a reader reminded me that I’d promised to give some tips a while back and so, without further ado, here we go…

Wireframes

Leaving sketches and paper-prototypes to one side, Wireframe prototypes are the quickest way to explore a visual concept.

Wireframe teddy bear

Wireframes are a little bit like the plans for a house; they represent the outlines without getting hung up on the actual implementation.  It’s about deciding on the layout of a floor, if you will, without getting concerned with the colour of the carpet.

By limiting ourselves to essentially static designs, we have to gloss over a lot of the implementation detail.  We won’t attempt to model how a dynamic panel works, or the validation on an order form.  We will, however, be able to quickly create visual representations of designs for forms and pages with a minimum of fuss.  We’ll be able to do it quickly, and because our tools don’t attempt to let us do anything particularly complicated (such as navigating between wireframe ‘pages’), we won’t get distracted as much and can focus on our designs.

Wireframes, then, are ideal for the earlier stages of requirements prototyping, when there are layouts and ‘broad-stroke’ design choices to be explored.

Wireframes are suitable for:

  1. Deciding on what things should be included in a page;
  2. Investigating where things should be placed on a page;
  3. Creating low-fidelity mock-ups to help build the ’skeleton’ of an application without investing too much time;
  4. Comparing and contrasting different layouts;

…and so forth.

What Wireframing doesn’t do so well is allow modelling of paths through a system, or interaction, or the finer detail of design.

Interactive (Rich) Prototyping

Rich prototypes are more commonly used once the basic decisions about a design have been made.  In other words, by the time we switch to rich prototyping, we generally know how many pages, and roughly what will be on each page.  We may not know how the various parts of a page will work, nor how individual pages will inter-relate with other pages, but the basic shape of a design is there.

Prototype car of the future

The move to rich prototyping is borne of a need to explore the specific implementation of designs.  In other words, modelling how functionality works, rather than simply glossing over such detail.  A good example for a rich prototype would be building a tabbed dialog so that clicks on tabs change the content, showing the tab state change and effectively simulating a real tabbed dialog.

Rich prototyping takes a proportionately longer time to do than Wireframe prototype development, due to the need to provide additional detail, interaction with forms, navigation and even simulated data.  Rich prototyping also varies in its complexity – it’s possible to create incredibly rich and accurate simulations of key pages, whilst building lower-fidelity versions of less important pages.  This allows the designer to prioritise her efforts to ensure that maximum value is extracted from the creation of prototypes with regard to ironing out any design gremlins.

Rich prototypes are suitable for:

1) Exploring the finer design details once the basic shape is in place;
2) Providing a realistic ‘finished system’ experience to allow users to get a chance to try out the complexities of a design ahead of the development phase;
3) Really ‘getting inside’ a design of key pages to ensure that a design really does work.

The drawback of rich prototyping is generally in the time it takes to do, and the need to use (often expensive) software.

A combined approach

The purpose of this article was to give a few reasons why a designer might choose a wireframe or a rich prototype approach.  However, the best approach is generally to mix and match as suits the needs of the project.

Crazy prototype gadget

For instance, work with the business to mould the basic shape of a system using wireframing techniques, comparing alternative layouts or page compositions, without worrying too much about how it looks and the finer detail of how each page will work.  Once the major layout and composition detail is stable, select parts of the design which might be either fundamentally important to the success of a design (e.g. a registration process) or involve a slightly unusual layout or functionality.  These are the things that can then be modelled in a rich prototype, and examined in more detail – perhaps by using them as the basis for user feedback sessions.

Whichever method you use, be assured that just by adopting requirements prototyping techniques into your project, you are dramatically increasing your project’s chances of success!

h1

Guided demos…

February 27, 2010

Effective software design isn’t just about designing a thing and then turning that design loose unto the world; it’s also about communicating that design to the people that matter and ensuring that they understand what your design is about, why it is the right approach and what problems it avoids or solves.

When we create a software prototype, we have to make many design decisions of varying importance.  The prototype itself might be demonstrated to various audiences and so a little guidance is worthwhile.

Holding the prototype cardOne tactic which is worth covering is to understand your audience and how they will perceive your prototype.  A technical audience will doubtless look at your prototype in an entirely different way to a business audience, which in turn will probably look for different things than would an audience of end-users.  The key is to tailor your approach to demonstrating your prototype so that:

1) It uses language and terminology that the audience understands;
2) It respects the motivation of that audience – in other words, what they want to get out of the demonstration, and
3) It prompts for any specific feedback that you, as the prototype designer, wish to solicit from that audience so as to feed back into the design.

The very best approach is a personal demonstration, particularly a one-to-one hands-on tour.  Letting a user have a play with a rich prototype is an incredibly engaging and fruitful technique, which also gives you the opportunity to watch how that user explores the design.  You might be very surprised by the varying way that different users interact with your design.  If you spot any confusion or hesitation in their use of your design, it could be a strong indicator of a problem which you can then fix.

Keeping the audience awake

However, it’s not always possible or even desirable to do a personal demonstration.  Sometimes it’s not even feasible to let users actually use your prototype at all – either for technical or business sensitivity reasons.

In these cases, one powerful method that has emerged in recent years is the use of screen-casting technology, so that a prototype can be demonstrated and a recording of the screen made (along with an audio voice track).  These can then be replayed by any interested party.

The most important thing after all this is said and done is to ensure that you are in regular contact with your end users, stakeholders and anyone who needs to be involved.  Prototyping is all about getting feedback and refining designs based on that feedback, so however you want to do it, getting your audience looking at your designs is one of the cornerstones of effective requirements prototyping.

(I’d like to recommend a very useful tool called iShowU HD Pro, which is a very low cost solution for screen-casting.  I’ll review this at the end of March, but would strongly recommend anyone who would like to try screen-casting to give it a try.)

h1

Reduce Wasted Effort…

February 20, 2010

Far too many software development projects fail to meet deadlines and run over budget.  You’ve possibly seen this first-hand.  In fact, I’d be surprised if anyone working in this industry hadn’t personally experienced at least one development that ended up taking a lot longer and costing a lot more than originally intended.

Watch for ice

Part of the problem is that designs and specifications are commonly put together in a short phase right at the beginning of a project.  Some effort is put into trying to specify the requirements and translate them into a workable design in one swoop.

This is a noble but flawed thing to do.  It almost always fails – and here’s why:

Things change…

things change

Projects can run for weeks, months or even years.  However, such projects don’t exist in vacuums.  They are part of a wider world of business, in which change is an ever-present reality.

By expecting to be able to specify a design up-front, and stick to it right through a development project, we set ourselves up for failure.  Even supposing everything went well, and we missed nothing out from our requirements analysis, the fact is that the world will be a different place in the weeks, months or years it takes to translate those requirements and that design into an actual product or service.

What’s more, if we expect to get our requirements right and then build a single design to turn those requirements into something worthwhile, we’re placing all of our eggs in one very big and rather flimsy basket.  We’re assuming that those requirements are correct, and that they won’t change.  But, inevitably, the requirements will be written by someone who’d rather be out playing golf, and the very busy business stakeholder is really rather too busy to read that requirements specification.  Probably a business analyst is trying to come up with a workable design without having any technical know-how, and in any case they’ve missed a huge chunk out because they didn’t really know how the new widget was going to fit into the existing system.  So, they hide their misunderstanding in a veil of abstract and obtuse language, which is easy to misinterpret and difficult to follow.

To compound all of this, the rather unreliable requirements documentation is then revered as ‘correct’, and management will apply pressure for Real Work to begin.  Which means cracking on with the build phase before anyone has engaged with the end-users to see if the proposed design is going to be up to the job.  Which it probably won’t be.

Fast forward a few weeks or months, and the false assumptions, omissions, bad decisions and flaky designs have become so entangled in the actual fabric of what is being built, that disappointment and failure is a certainty.  As the developers start to question the designs and requirements, it suddenly dawns on everyone that something is not right but nobody knows how to turn this baby around.

Superbaby bib
Effective requirements definition is not a one-shot deal.  It must be treated as an ongoing process, which needs to be shaped by constant feedback from all the right people.  Requirements prototyping, using software prototypes, feedback sessions and constant adjustment, is the answer to ensuring that requirements are up to the job.

By spending a bit more time at all stages, adjusting the design and the requirements to cope with new knowledge and user feedback, we can ensure that there is a much higher likelihood of delivering a quality system which actually does what it needs to do, rather than what was originally proscribed so many months previously.  Expensive development effort is minimised because the design and requirements are clear and unambiguous.

At the end of the day, any additional cost of using requirements prototyping is more than offset by the significant savings by reducing wasted effort.

Try it – you might surprise yourself by how much better your project runs!

h1

Many words saved

January 20, 2010

Thought for the day:

If a picture paints a thousand words, think how many words you can save by creating an interactive prototype of your next software development. Think of how much easier it will be for people to understand what it is that you’ll be creating. Think of how the process of creating and demonstrating your prototype will highlight shortcomings in your design. Think of how much misunderstanding you will avoid, and how that will help your actual development set off on the right path. Think of the how much time will be saved by not building that feature that your users really don’t want. Think how much time will be saved by not missing that key feature that your users really do want.

Many people view software prototyping as something that’s only really worthwhile on larger projects. This couldn’t be further from the truth: prototyping brings benefits to almost any non-trivial software development.

h1

Distracted by Shiny Things

January 11, 2010

This blog likes to talk about ways to improve your chances of delivering a successful software project.  One of our mantras is the use of software prototyping, but a recent conversation got me questioning whether building a software prototype might end up creating its own problems.

“Whoa!” I hear you cry.  Take a second to pick yourself up the floor; calling prototyping a liability on a site hosted at softwareprototyping.net might seem like a rather chilly day in hell.  And you’d probably be right, but I try to present the upsides and the downsides with a (relatively) impartial hat on.  Or at least that’s the plan.

So, software prototyping creating its own problems?  Surely some mistake?

Well, to answer the question: generally, no, software prototyping is usually a highly effective way of steering the early stages of a software project, therefore increasing your chances of success. 

However, if we widen our brief and consider requirements prototyping – i.e. the use of prototyping techniques as a core part of the analysis and specification of a new system – we hit across a small problem.

This is illustrated best with the story of Jeff*, at the time a divisional director in a large financial organisation. 

I was involved in the design of a considerably wide-scoped prototype.
Using the techniques of requirements prototyping, I was able to bring in feedback from users, stakeholders and technical analysts to help shape the design.  This was going rather well; hard work but with each revision showing real progress towards a killer design.  Along the way, however, Jeff started to sniff around in an example of classic hit-and-run micromanagement. 

Despite concentrating on building up the shape of user journeys, exploring the effectiveness of our interface and so forth, Jeff really wanted us to devote our time to ‘making it look just fantastic‘.  Which, unfortunately, involved endless fiddly adjustment to such things as the precise placement of fields, the exact colour of text, whether this image looked professional enough and so on.  All very interesting, but somewhat missing the point of the prototyping process.  All this served to do was divert significant time and effort into polishing the finest details of a prototype whose main purpose lay elsewhere.

On reflection, and in Jeff’s defence, it was pretty clear that he believed in making everything look as slick and professional as possible.  He knew that the project could gain support from his superiors only if the prototype gave the illusion of completeness, and so in a way he was right to push for consistency and professionalism in the appearance. 

Our failing (as a project) was in letting him do this at far too early a stage.  After all, we hadn’t decided if we were going with User Details Capture Journey A, B, C or D at that point, so polishing them all to a high gloss was always going to be overkill.

What I learned from this was that the production of any tangible output – be it a paper design or a full interactive prototype – invites attention from those who don’t understand its role, its place.  Even though they may be senior, important people, they may not be important to the project itself. 

Sometimes, these people get distracted by shiny things, colours, minor details.  This isn’t a problem if they remain as observers or on the fringes of the project, but can be a serious risk if they attempt to push their way into the proceedings.  As prototyping practitioners, such people really slow down the responsiveness of the prototyping process and dilute the benefits of prototyping.  In other words, these people cause more harm than good. 

The skill is recognising these people and finding a way to either educate them to the purpose of the prototype or reducing their involvement/exposure to the team.  If they really must have their fully polished, ’slick’ design ideas visualised, then at least explain to them that it simply isn’t realistic to do this over the entire prototype.  Offer to ‘polish’ up a portion of the prototype once the fundamentals are stable.  In other words, don’t wallpaper the living room until you’ve finished building the walls…

As a final word, don’t take this article as a negative reflection on the use of software prototyping techniques – there are far more benefits than drawbacks…

* name changed to save on blushes and prospective lawsuits…

Here are some links to other articles which might be of some interest if you want to know when software prototyping is appropriate:

h1

New Year Challenge

December 31, 2009

If you’ve reading this, there’s a fair chance that you’re involved in the software design and/or development business.  Maybe you’ve read some of the many articles on this site which promote the use of prototyping techniques as a way to deliver projects more successfully, but despite this you’re not yet convinced.  We’ve led you to water, so to speak, but cannot force you to drink…

Well, why not resolve to actually try these techniques on a smaller project in the new year?  Perhaps try the use of prototyping techniques and direct stakeholder and user engagement.  I’m willing to wager that you’ll find it at the very least a stimulating and energising experience, and it might just help you deliver software projects in a more organised and effective manner.

All you have to do is to approach this with an open mind, and give it a chance. 

You shouldn’t just take my word for it – give it a go, and get in touch; I’d love to hear of your experiences (good and bad)!

Have a fantastic Hogmanay and New Year – best wishes for a prosperous 2010!

h1

The Tragedy of Software Development

December 18, 2009

Did you know that less than a third of all software projects are delivered successfully?  By that, I mean on time, within budget and meeting the requirements of the users?  It’s not a great statistic at all.  As an industry we ought to be somewhat ashamed by this. 

The really sad thing about it, however, is the extent to which the remaining two thirds – those projects which fail - might have been avoided.  It’s pretty clear to see that a significant proportion of these failing projects fail for the same reasons, time after time:

  • Inadequate Requirements;
  • Poor Estimation;
  • Low Stakeholder Engagement.

Of course, within each category the usual suspects crop up: lack of understanding of the context of a system, poor communication, scope creep, lack of organisation, corporate bureaucracy, and so on and so forth.  All of these things are common to almost any software project, so an outsider would be forgiven for wondering just why we don’t learn from our mistakes and do something smart to help reduce their impact.

That smart thing, of course, is the process of Requirements Prototyping.  Which is, as you will probably know by now if you follow this blog, the process of creating interactive models of designs and using them to solicit constructive feedback from business stakeholders, users and basically anyone who needs to have a say in the outcome of a project.  Sure, there’s more to it than that, but in essence it is not overly complicated and the benefits in operating this way outweigh the additional costs – significantly, in the case of larger projects.

So, it’s a real tragedy that doing this smart thing is still so rare in modern software developments.  Many companies might toy with the idea of building a prototyping in a half-hearted way, getting too bogged down in the stylistics without really using it as a powerful medium for evaluating designs, facilitating change and clarifying requirements.  Like driving a sports car in a traffic jam, it’s a waste of the potential and a real shame.  To get the real benefit – to get out of first gear, if you will – is to use a software prototype as a living, breathing specification and actively evaluate and refine it, involving all stakeholders.

If you do this, you will certainly increase your chances of finding yourself in that 1/3 of projects which are delivered successfully. 

To pass up the opportunity would be a real tragedy indeed.

h1

Involve important people (part 2)

December 11, 2009

A few weeks ago, I wrote the first in a series of short articles about who needs to be involved in the software design process if it’s to have an increased chance of succeeding.  We covered involving users then, but they are only part of the overall picture.

This article looks at the stakeholders – those people who have vested interests in the success of the project. 

Pictire of a business baby

To them, they may have been given the responsibility to see a project through to delivery and beyond; they may be in charge of teams of users and therefore their own productivity and effectiveness is impacted by that of those users.  Get it wrong, and their bottom line is threatened.  Understandably, they’ll want to get involved and keep an eye on the progress of the project.

In today’s troubled financial climate, you can guarantee that stakeholders’ bosses will be keeping a close eye on things too; the decision to proceed with a new software project is often made from fairly senior levels.  Support from senior execs doesn’t grow on trees, so when you do get it, you can’t take it for granted.  They’ll expect something in return, and that price is invariably success. 

Stakeholder management is, of course, a science and an art unto itself, so I won’t cover that here, but it’s worth taking the time to scope where their individual priorities lie.  Some will be looking for a direct impact – software that enables their team to do better, say – and others will look to gains by association with a successful project.  Some may have competing priorities, or hidden agendas, and it’s certainly no bad idea to tread cautiously when involving these people.  Even if all is well, there is always a real danger of ‘too many cooks spoiling the broth’.

One project I worked on suffered from just this problem.  It was a large-scale system-integration which aimed to provide a consistent interface to a number of systems both old and new.  That in itself was fine and a challenge to relish.  However, every system within scope (and a few out of scope) came with its own set of stakeholders, many of whom would try to force their ideas upon the overall design without necessarily considering its impact to the others.  A difficult thing to manage, but software requirements prototyping helped by giving the freedom to build quick mock-ups to test ideas out and influence the stakeholders to reject the occasionally inconsistent, flawed or even wacky suggestion.

This said, stakeholders hold responsibility and accountability within the project, and they will want to be involved.  Do so, and they will provide domain and contextual knowledge which would be difficult to obtain any other way.  They will also invariably be involved in the eventual sign-off of any design, so by involving them throughout the design process, they will already have a better understanding of, and buy-in to, the eventual design.

h1

Design Feedback (part 1)

December 4, 2009

In Requirements Prototyping, when a designer creates an initial prototype design for a customer, it becomes the starting point for a cycle of evaluations and feedback sessions.  These sessions can (and should) involve both the users who will work with the final system, and project stakeholders.  Though not necessarily at the same time.

What I’d like to touch on is this little dance of ‘build a design:evaluate’ – in many ways it’s one of the most fundamental cogs in the wholeprocess of requirements prototyping-led software projects.  We need to get it right and understand it so that it delivers real value.

In an ideal world of infinite resources and time, we would repeat this little dance as often as it takes until we had the perfect design.

Picture of mad dancing

However, this utopian world just doesn’t exist so we need to consider how to organise our evaluations so that we can get as much out of them as possible.  We need to think about the actual organisatinal cost of getting people together for feedback sessions, and make sure that we don’t just include everyone for the sake of it.

Jakob Nielsen has suggested that five is an optimal number for testing a design.  His arguments are that the majority of usability concerns are identified by the first few participants, and thereafter most new participants tend to repeat observations with the odd exception.  His suggestion is that, rather than blow the entire budget in getting everybody to test a design in one phase, it is better to have a number of smaller test phases and an iterative refinement of that design between them.  This is precisely what we should be doing when running feedback sessions with users.

Image of feedback survey and pencil

What’s different about feedback sessions as opposed to Nielsen’s usability testing is the fact that feedback sessions are generally:

  • Collaborative: we’re not looking for individual isolated reports, but engaging discussion about the general design;
  • Objective-led: we’re not specifically testing the usability of a design, rather its suitability to meet the objectives set out at the outset;
  • Cross-disciplinary: not restricted of any one type of person, feedback sessions are most usually composed of a cross-section of interested parties, including users and business stakeholders.

The objective is different as well – usability being, well, about how usable a design is, as compared to general feedback which aims to help steer and shape the direction of an ongoing design effort.  Different beasts.

That said, restricting any feedback group to a smaller number of participants helps with focus and coordination, and it’s also much easier to find a time to get everyone together and a place to meet when the group is a fraction of the size.

So, a recommendation here is to keep the numbers low – perhaps with a representative from each section of the project: sponsor, business domain expert, designer, manager, user.  Ensure that everyone actually understands what it’s all about and is willing to make an effort to be there; there’s absolutely no point in forcing someone to get involved in this process against their wishes.

Each feedback session should set out with the stated objectives and try to assess the latest design proposal or prototype against those objectives.

Previous efforts should be used as yardsticks to gauge progress and to ensure that things don’t end up moving away from what’s required.  Nominate a chair for these sessions, someone who will be responsible for maintaining control and ensuring that the session is focused and organised.

Image portraying clarity and tranquility

What we need to get out of each session is a clear picture of how well the latest design meets the objectives, and whether further refinement is required.  It’s about proving the suitability of a design from different perspectives.  It’s also a good progress indicator, something which can be fed back into the project plan.

The next thing is to try to ensure that these feedback sessions are reasonably regular – say, once every other day or once a week – whatever works for the project.  Of course, how often depends on how much design change is going on, and it’s reasonable to expect the amount of that change to decrease as the design firms up.

In the next instalment we’ll look at what constitutes a good feedback session, how best to organise it, what outputs to expect from it and how to feed those into the next iteration and into a project plan.

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]