Monthly Archives: October 2008

New Article at Boxes & Arrows on Prototyping with XHTML

I’ve got a new article at Boxes and Arrows called Prototyping with XHTML. The article really came about because, time after time, I’ve found myself in conversation with a fellow UXer, and we’ll be discussing design methodologies, and I’ll tell them I’ve relegated wireframes to just being refined sketches, while instead specifying my design with XHTML. And inevitably, they’re curious and want to learn more. Problem is, there isn’t a lot written about this way of working, which is why I decided to write the article. That, however, is not to say that this is some methodology that I conceived of. On the contrary, I’m aware of many many others who work this way.

The first time I heard about designing with XHTML was in 2005 at an IA retreat in Asilomar, where Christina Wodtke bluntly proclaimed that we should “stop doing wireframes.” I was both skeptical and enticed. I had been doing wireframes for years, and was pushing the practice to an extreme with excruciatingly detailed designs defining every last element on the page, and annotating them in tome-sized specifications documents.

Christina later sent me the slides from her presentation, “First Things First: IA and CSS,” which she gave with Nate Koechley at WebVisions 2004, and which described a method for representing information architecture not with the familiar diagrams but instead with some kind of weird DIV tags and CSS classes and what-not.

Looking back, I think I my reaction to their ideas was like someone riding a horse and buggy for the first time being told about an automobile. I just could not fit the idea of using XHTML markup to communicate a design solution into my wireframe-based mental model of the IA practice. But at the same time, I knew that designing with wireframes is fraught with problems, from the lack of a standardized notation understood not just by stakeholders but, most critically, by developers, who have to build the darn thing based on them, to the confusing overlap between wireframes and design comps, to the abundance of information not inherently communicated in a wireframe that therefore needs to be explicitly explained in droves of labor-intensive annotations, that inevitably become out of date. And on and on.

So I tried to fit Christina and Nate’s XHTML-shaped peg into a wireframe-shaped hole, such as trying to get annotation references to appear ‘on top’ of the XHTML, which in hindsight is akin to early designers of the automobile creating steering mechanisms modeled after horse reins. In both cases, it was an attempt at working in a new paradigm with your mind stuck in the old one. But major forces of change in the last several years, in terms of how websites and related technologies are designed and built, served as the undercurrent that washed away old thinking. Most important of these are the migration among software developers from waterfall-oriented methodologies to agile and iterative methodologies, as well as the increasing predominance of web standards and all the best practices associated with it related to XHTML, CSS, and JavaScript as the pro forma method for building websites.

Today, I could not imagine specifying my design with traditional wireframes. Yes, they are still part of the process, but they function as explorations of an idea and not the instructions of what to build, and are discarded once the design has evolved beyond them. When designing the user experience for standards-based websites and applications, I am instead using the same technology developers use to implement the product—XHTML, CSS, and JavaScript—as both a prototyping and specification platform. So, for an introduction into what that all means, check out the B&A article.

Three Reasons Why I Don’t Use Prototyping Tools

I remember when I first started using prototyping tools, i.e. software designed specifically for prototyping. The idea of a tool where I could quickly create a simulation of my design idea and present it to users without needing to write a line of code just seemed too good to be true. I was convinced it would be the salvation to all my design challenges. What I instead discovered, after several years of using most of the major tools on the market at the time, was that a prototyping tool, in most situations, in fact is not a great approach to accomplish the goal of designing a great user experience. Sure, there are definitely are situations where using these tools make sense. But if you’re thinking of incorporating prototyping tools into your practice, these are some things to consider.

1 – Prototyping Tools are Inherently Based on the Old; Design is Inherently about the New

Some years ago, I was working on a prototype for a web-desktop hybrid application. One key scenario I needed to simulate was the ability to display an alert on the user’s desktop and then allow the user to click on the alert, which would open a browser window and display a page where the user could take action on the alert. Seems pretty straightforward right? As it turned out, because web-desktop hybrid apps were just coming into vogue at the time, this top-of-the-line prototyping tool did not support the ability to open a new browser window and then have the prototyping experience continue in that window. Sure, they may have added that ability by now, but that sort of makes my point. Prototyping tools are in a continual state of playing catch-up with the rapidly evolving state of the art of user experience paradigms. And in their current form, they will always be playing catch-up, always containing a set of widgets and features that are either a little or (more likely) very outdated. This effectively means that they create an artificial design constraint, limiting you to what the prototype can accomplish rather than what truly can be accomplished by the production technology.

2 – Prototyping Tools are Inherently Technology-specific

The technology used to implement an application will have a significant impact on user experience. Something, for example, built with Flex/Flash will feel very different from something built with XHTML, CSS, and JavaScript. Since the point in your project when you are prototyping is before you have started building the actual application, that also means that you may not have chosen an implementation technology. But a prototyping tool is inherently going to use a specific technology to generate the prototype, and if it is not the same as the production technology, stakeholders that have been using your prototype will be in for a surprise when they see the real thing.

3 – Prototyping Tools Only Create the Illusion of Validating a Design Solution

A prototype may give you a sense of if your design solution has merit, but it won’t actually confirm if its the right solution. For example, the prototyping tool will almost certainly not generate the interface in the same way that it would when built with the actual technology.

On a project that I worked on, I created a prototype with a tabbed interface. In my prototype, one could go from tab to tab without a page refresh. This prototype went through several team and user reviews and we were all happy with it. But then, when time came to build the actual thing, it turned out that it would not be possible to go from tab to tab without a page refresh, making the feature far less palatable.

The impact of that discovery was so significant that we had to abandon the whole tab concept and undergo the costly effort of redesigning an application that already was in production. The prototyping tool had created an illusion of a good solution, delaying the point when we discovered a problem with our idea.

In other words, this means that—ultimately—you will always have to vet the solution using the actual technology, which is another key reason for prototyping your idea using the production technology, or else risk not discovering design issues related to the technology until you go into production.

So what’s the alternative?

My recommendation, when it comes to prototyping, is to either be technology-agnostic or technology-specific. In other words, either use something that doesn’t dictate a specific technology, such as paper prototypes or wireframes, in the early stages of design. Then, once the design has matured, use the actual production technology. In my experience, the benefits of that approach far exceed any drawbacks.

My All-Time Favorite Apple Quote

Was reading the article Apple’s New Notebooks: What We Should Expect on the Wired blog, and came across what pretty much sums up Apple’s business philosophy:

Apple customarily comes late to the game, sitting and watching and then releasing its own, usually better, take on the current offerings. If Apple went to a party, it would turn up last and leave with the hottest girl there.

Love it!

Maureen Dowd’s Word of the Day

Though Gail Collins does give her a run for her money, Maureen Dowd is definitely my favorite columnist. One thing she seems to manage to do in virtually every column is to include a word that I’ve never seen or heard before. In today’s column, that word is sesquipedalian.

I think I’m going to do a post every time she includes a new word from Maureen’s apparently infinite vocabulary.