Software as prose

August 3rd, 2009 in Design

Software design is a vast, dangerous forest. Languages, platforms, toolkits, philosophies, the list goes on. With a landscape of possibility it’s easy to get lost before setting off (and even harder to complete a project with any amount of focus). While experience teaches you to pick your way through the fundamentals, finding the useful paths is always difficult.

There are many ways to find the essence of a piece of software, from the use of the black arts to fully sanitized disciplines. Each method works to some degree, if you’re able to complete the project. The extremes suffer different limits and provide their own insights. Most methods, however, do not focus on the inspiring aspects of software (like the visuals or themes) as the technical bits themselves are hard enough to consume most of our efforts.

Think of your software as a fiction. It has theme, plot, setting, characters and so on. Write about it if you were writing a story. Use storyboards for the user interfaces. Find the root of the software, what it means, what it looks like, what it should feel like. From this you will discover metaphors and themes, the foundation of interesting and inspiring software.

Finding plot

You won’t often know the plot from the outset, so start a project by writing about what you know, in plain English, as if it was a story–and you’ll start uncovering the things you need to know. The simple process of writing about what you’re building is a catalyst that sparks your imagination, pushing you to discover what your software should really be.

Stephen King writes many of his novels this way,1 not knowing the outcome until he’s done the final chapter. This is a great approach for software with suspense (like games), or when you know intuitively there is an elegant solution but you haven’t dug through your subconscious enough to see it. Give it time and your subconscious will produce that nugget, given a bit of coaxing and care.

When you don’t know the story before you start you have two choices. You can write and wait, or you can write and build, hoping that the process unearths it. Building the software without knowing the story works if you’re willing to take a risk (you may have to backtrack later), but if failure isn’t your thing consider working on other projects until you see this one more clearly.

What, why, and how

Saying that you should write a story about your software is easy. A story isn’t a specification. It isn’t a set of use cases or scenarios (though it could give birth to either). A story is simple prose about the thing you want to build. It’s not an essay or paper either. It’s a story. Freeform. Creative. Unbounded.

One way to dream up a software story is to look at a brilliant design, finding the continuity and pervasive lines throughout it. Consider Apple’s Macbooks. I’ve owned several laptops, but my Macbook (a white Intel clamshell) is the first that is useful–so damn useful that I take it anywhere and just start writing. It works as a whole so well that I no longer notice the technical things like the battery, operating system, or other features listed on the spec sheet. It actually is a notebook. And it works for the things I use a notebook for.

So what’s a story for a Macbook?

Once upon a time there was a budding author in a distant land. His mind overflowed with ideas waiting to escape, but his hands were unable to write them quickly enough. In fact in this land writers used parchment and quills to write their stories, which was a slow, laborious process that guarded the craft like a dragon guarding his cave. And while the author practiced writing, which really was the art of ink-making and handwriting, he didn’t often write.

In the land there was a wizard who spoke of a magic book, a book that could hear your story and put it on parchment without quill or ink. The magic book became a natural extension of the writer, so that he could write and not think of inks and quills and parchments. It just worked.

My previous laptops were quills and parchment, a lot of setup and fiddling so that they never melted away, never making it easy to just create things. Because of Apple’s ability to imagine how a laptop should be, I have a better tool. A tool that actually works. Most of the time at least.

‘Once upon a time’ is a silly example, but for something like a Macbook it could work. Apple creates magic devices, and they nail it most of the time. Your story could be truer to reality (or further from it) depending on what you’re trying to build. The point is to figure out what a design means, and to paint a picture to remind you of that when you’re lost in the details of building the damned thing, something that gets you exciting about what you’re doing, seeing colours, shapes, screens, and more. A Macbook is a notebook, and every design decision screams it.

Tapbots, experts in plot

You can also write your stories like a text adventure from the 80s. Tapbots make amazing utilities for the iPhone that ooze consistency and plot. Take Weightbot for example:

You jump on the scale in the morning and wince at the result. “OMG. Ten pounds? I thought I was doing better than that.” Of course you’ve forgotten the beer and pie that have disappeared from your fridge. You sigh, and write your weight on the calendar. “I guess I’ll have to run an extra five tonight.”

It’s a simple story, but it frames a resulting design. You get on a scale. You track your weight. You try to improve. The visual design hits these themes, and the flow follows the story. And adding a visual narrative to your prose can help even more, starting your path to finding a compelling look for your tool. WeightBot happens to look like a calendar mashed with a scale, a metaphor that is downright slick.

Of course you can find a tight, focused design without a story or story board. But these tools are another way to explore what you’re thinking, to help you find the great software buried within. A few great designers intuit their software without any exercise, but most do not–based on how disjoint most of the software I use is. Stories are a digging and divination tool to help you find that perfect path.

Finding continuity through honesty

King talks about honesty in writing, as it’s a way to find the natural path. A surly millworker, for example, doesn’t make doodoo, they take a big old stinky shit. Your aunt Bee relieves herself. And the Pope himself presents his wondrous gifts to the universe.2

Different situations and characters can only honestly do specific things. The surly millworker will do one thing and aunt Bee another. They can’t honestly switch places, it wouldn’t feel right.

Software is the same. A game with a formal reporting interface feels off. Business software with a shotgun tool, while comical, doesn’t work. You need to unearth honesty in the design to balance formality and metaphor.

Billings 3 is a tool for OS X that helps you track time, clients, and invoices. It’s not a customer management tool. It’s not a spreadsheet or accounting package. It’s focused tightly on creative, independent consultants, who want slick looking invoices and a simple way to populate them. It’s honest to the character of the creative consultant. It doesn’t try to serve the accountant or programmer, and because of that it avoids feeling stuffy and corporate. The tool’s honesty to the people who use it makes it great.

Honesty fits websites too. It helps guide what you write and who you write it for. It focuses how you lay out the content. It answers your questions for you. It tells you how much depth to strive for, and what language to use. “Should I write about my cat?” (The answer to which is almost always a resounding “No!”).

Simile and metaphor are the King

While you’re exploring the plot, the story elements of your software you will start to discover metaphors that clearly define the essence of what you’re aiming at. “Aha, it’s like this!”

I once had an office mate describe the movie Fight Club as like “eating an ashtray.” For him the movie felt gritty and not at all appealing. It had a strong, pervasive feel to it, from the script to the final visual design. When you are able to boil down the essence of your plot well enough to find striking themes and metaphors, it not only is a sign that you’re nearing understanding, it’s also a starting point to test your plot and find new veins of consistency.

If the writers or director of Fight Club wanted to add to the movie, they would consider each in light of the tasty ashtray. Adding a song and dance wouldn’t fit. Adding another deranged character might, assuming it fit the plot and honesty of the story.

If Apple wanted to add another button to the iPhone would it still fit the simple essence they’re aiming for? What about a slide out keyboard? I’m sure they could do either and fit it into the theme, but it wouldn’t be as simple as just slapping them on. This is where many hardware and software designers go wrong, slapping on features for one reason or another, ignoring the underlying essence of what the thing is.3

Staying honest to your software’s story and characters is difficult to do too. It’s easy to add a cookie-cutter administration interface to your web app. But does it fit? Is it honest to the people who will use it? And more important, is it inspiring?

Nailing the son of a bitch

Exploring what your software is in terms of fiction and art is a tool for discovering the beautiful parts of what you are building. It helps you escape the technical weeds that obscure your aesthetic senses, and the political bullshit that ties you to arbitrary constraints. Prose and story boards are freeform archeological tools, an exercise to discover the elegant software hidden beneath your ideas. The result is a frame that you can string your thoughts from, that you can use to measure new features with (or discard them when they clearly do not fit).

Spend more time exploring your designs. Find what honestly fits in your design, what the metaphors are, and then stick to them. Find the colours. Find the shapes and themes. And if you finally find them, nail the bastard in construction.

  1. King’s On Writing is hands down the most inspiring book on writing I’ve ever read. It’s an autobiography peppered with King’s unique views on HOWTO write. What he says is directly related to anything creative … so it’s a book I read at least once a year, and it always inspires me to MAKE something.
  2. I stole King’s metaphor because it worked so well. I apologize in advance as his version is funnier, more fluid, and far more effective.
  3. Remember that the difference between a whore and a super model is careful application of the facade (and several years of drug use). Don’t just slap on the features unless you’re building whorish software.