Using Mockups in your Agile User Stories

· Posted by Leon in how we work, process and tagged · 9 Comments

Hello, blog readers!

This is my first blog post for Balsamiq. Anyone who's worked with me knows that I have been a user and fan of Balsamiq Mockups since the beginning, so I am super excited to be a part of this awesome team.

Before coming to Balsamiq, I worked as a User Experience Designer and Business Analyst in Agile software development environments, so I thought I'd focus my first blog post on some tips I developed for creating Agile User Stories that served me well.

First off, I think that Agile and Mockups go great together. Agile is fast, embraces change, and doesn't require precision. Just like Balsamiq Mockups!

In this post I'll explain my Story writing process by describing the steps I'd go through to create a User Story for a made up feature. These steps are: break up the design; order, prioritize, estimate; and write the recipe. I probably deviate a bit from the suggested formula and format for User Story writing, but I feel that it's still true to the principles of Agile.

Side Note: This post is written from the perspective of, and primarily for, someone who writes User Stories in an Agile Development environment. I'm thinking mostly of Product Managers, UX Designers, Business Analysts, and any other people who are primarily non-technical, but work closely with software developers who are the recipients of User Stories.

Introduction

I'll start at the point that the mockup is finished. At this point a lot of the work is actually done, but it's important to take the next steps to craft a good User Story out of your design.

Let's say that you've come up with a design that allows users to view a list of customer demographic information. Something like this:

Now, it's tempting to just drop this into a User Story and say "build this". But it's important not to discount how much information is in your head about how this relatively simple page should function. There are some gaps that need to be filled in for the developer who's going to be building it. But don't under- or over-think these gaps. My Story writing approach is focused on "the art of maximizing the amount of work not done", which is one of the reasons I use Balsamiq Mockups.

This approach is all about taking advantage of the 80/20 rule.

The trick here is to combine the 20% effort that gets you 80% of the detail in a visual representation with the 20% effort that gets you 80% of the detail in a text specification.

There's no question that developers need detail in User Stories. Mockups is great because it will get you 80% of the information that you need to communicate with 20% of the effort of a more interactive or pixel-perfect tool. Now, don't spend 80% of your effort on that last 20% of the detail, just describe it using plain language in the User Story (I'll describe how later). The goal is not to have a huge, impressive-looking specification or prototype, the goal is to ship a product that allows your users to accomplish their goals.

Your User Story should be just enough to get it built successfully. Any effort beyond that is waste.

Step 1 - Break up the design

What often surprises product managers is how long it takes to develop user interfaces. A lot of that frustration is due to a lack of understanding about how user interfaces are actually built. There is rarely a correlation between how long it takes to design and how long it takes to build. That's why I like to take the time to divide up the design into smaller chunks.

Even this simple design can be broken down into pieces. Pieces, mind you, that can be delivered individually (as long as an order is obeyed). You can't deliver an incomplete feature, but you can deliver a small part of a larger feature. There's a difference. A button that doesn't do anything when you click it is incomplete. A data table that you can view but not edit, for example, can stand on its own.

Here's how I might break this feature up into pieces:

  1. The table and its content
  2. The search field
  3. The edit and delete functionality
  4. The ability to export

Note that, in that order, they can be delivered, and even released, in pieces. A table that doesn't have search may not be as useful as one that does, but it's still contributing towards the original feature requirement. Each Story should add some amount of value, however small, for the customer.

Side Note: Just because you're going to break up your work doesn't mean that you should think this way during the design phase. The value of Mockups is that it allows you to easily get what's in your head onto the page. And, more often than not, what's in your head is at a high level. So, go with it, and design what's in your head. Don't worry about the Story writing when you're designing.

Step 2 - Order, prioritize, estimate

A note about the ordering of the Stories. The important thing when breaking up a design into pieces is to find the foundation, the piece that other pieces will be built upon. In this case, I chose the table itself. You could argue that this is also the most important piece of functionality. The foundation often is. That's why I write this Story first. Writing the most important Stories first helps ensure that the most important features get delivered. With fixed release dates and shifting agendas, never assume that everything will get shipped. Start with the important stuff and you'll at least be maximizing the value of your time.

When I insert the mockup into the User Story (as an embedded image, attachment, etc.) I don't necessarily remove the peripheral information once I've decided how to break the design into its components. One of the things I like to do is show the full mockup that I created, but obscure the parts that don't apply to the specific Story. That way, it's clear what the objective of the Story is, but you're also keeping in focus the end goal.

I might do something like this, for example:

I've greyed-out the peripheral pieces, yet left them visible for everyone on the team to see where we're headed. The numbers refer to the Story numbers of the other pieces.

One real benefit of breaking up the design like this is that now you can get estimates on each of the pieces (and the mockups alone should be enough to get estimates), which should not only be more accurate, but can be divided up across sprints. Let's say that after the estimation meeting the point values end up something like this:

  1. Table with customer data - 2 points
  2. Edit and delete functionality - 4 points
  3. Search - 1 point
  4. Export - 3 points

This will allow the product owner to make better cost-benefit decisions about the overall set of features. Maybe the export function is something that one noisy customer keeps asking for but that you know won't be used by most of your customers. Seeing that this piece is relatively more "expensive" than some of the other pieces might prompt you to put it off until the next release. This wouldn't have been possible if all you had was a 10 point estimate for the whole design.

We've actually come a long way already at this point. But don't stop there, there's one more step!

Step 3 - Write the "recipe"

The final phase is to use the mockup to help you figure out the details that the developers need to know to build it. A trick I learned to do this is to imagine yourself using it. Mockups is awesome because it clarifies the picture in your head of what you're building and allows you to picture its use. I've found this process to be extremely helpful in providing the details that the developers want while building it.

Creating a mockup is kind of like cooking something. Think about cooking your favorite dish. Now, think about writing a recipe for how to cook what you've made. It's a different process entirely. It's shifted from creating to communicating. It's all about putting yourself in their shoes and not making too many assumptions about their level of understanding or knowledge.

The lesson here is that the process of creating the mockup is actually more for you than for the developer. It helps you figure out what you want to build, which, in turn, makes it easier to communicate how to build it (even if you're completely non-technical).

The structure of a User Story that I was taught is the following:

  1. Summary/Story Narrative
  2. Mockup
  3. Acceptance Criteria

Side Note: I like to include the "why" of what we're building in the Story Narrative section and explain what value this feature provides. Believe it or not, developers care about this. And this explanation should pass their "smell test" too. If you can't get them to "buy it", maybe you should revisit why you're doing it.

The third part is Acceptance Criteria (also called Conditions of Satisfaction, Acceptance Tests, etc.). This section is both for the developers and the testers. Here is where I think I take a bit of liberty with the traditional format. I like to think of this section as the recipe part. Here is where you, to the best of your ability, tell the developers how to bulid it. Don't worry if you have a hard time with this at first, one of the benefits of this process is that it helps you learn what information developers need to build things. It opens the window into the development process, which benefits everyone.

Again, here we start with a foundation. Don't be afraid to get very basic. I might start, for example, with "Create a table with the following columns: Last Name, First Name, Address, Phone". Small pieces make it easy to check things off, and often actually correspond to the chunks of code the developer has to write.

Now that you can see this table with customer information in it, picture using it. Aside from the features that you've deliberately split off into other Stories, what might you, as a user, see and do here? Can you sort columns? If so, all columns, or just some of them? Anything that you can come up with along these lines is most likely information that the developer needs to know.

As a bonus, if you're somewhat techincally savvy, you might be able to think of other things the developer might want to know. You might know that address data is stored in separate database fields (street, city, state, zip, for example). If you don't specify, the developer may create separate columns in the table for each of these, because that's how they see "address". But, you may know that users prefer to see these fields together (maybe so they can easily copy and paste them all at once). So, add to your recipe that the address field should include street, city, state and zip together. Trust me, stuff like this is important.

But, also, realize then that users probably won't be able to sort the table by city, for example, because "city" is not a distinct column in the table. Product managers often want it both ways. Being forced to write the recipe yourself doesn't allow for that. It's a trade-off: do you want a more human-readable address field, or do you want to be able to sort by each part of the address? It's up to you. This is not the developer's problem.

For this particular Story, here's what my acceptance criteria might look like, just to give an idea of some other possible details I might include.

Acceptance Criteria

1. Create a table with the following columns: Last Name, First Name, Address, Phone 2. Add a level 3 heading title for the table above the table with the label "Customers" 3. The Last Name, First Name, and Phone columns should include the last name, first name, and primary phone number fields, respectively, for each customer 4. The Address column should be comprised of the following fields (in this order): street, city, state (abbreviated), and zip code (5 digits only). Wrap the text to the next line at 100 characters. 4. By default, order the table by customer last name (ascending) 5. Allow the table to be sorted by last name or first name 6. Add pagination at 25 rows

See how many details there can be for a simple 4-column table?! The take-away here is not about how hard it is to build this table (it may take only 30 minutes if you already have a table framework in place), but how many decisions need to be made when building it. And that, if you don't specify them, those decisions will either be made by the developer or the framework you're using. As in many cases, not making a decision is making a decision. Now, if you don't care, that's another thing. But I would argue, as would many others, that details matter.

At this point, I would show the Story to the development team for a reality check, make any modifications necessary based on their feedback, and put it in the development queue. That's it! Then, on to the next Story… ;-)

A few final tips:

  1. Sometimes you'll want to make minor tweaks to the Story after the mockup is done (label changes, etc.). Even though updating the mockup is easy, sometimes I'll just update the text of the Story. I make it known that if there's a discrepancy between the text and the mockup, always follow what the text says.
  2. Be casual in your language. Write like you would write for someone who's looking after your dog while you're away. Don't be afraid to write thing like "the styling should look like our other tables" or "work with the graphic designer to create an export icon". Only include as much detail as necessary. Ask the developer if anything is unclear to them.
  3. Every developer is different, so you may end up changing the level of detail based on your team. Some just look at the mockup, some go straight for the acceptance criteria. Some improvise when details are missing, others refuse to continue until they get clarification. Try to learn their styles and preferences. Ultimately, try to take responsibility for making your Story clear and easy to understand.

This process has been successful for me. What's your Story writing process? What tips have you developed for writing User Stories? If you have any thoughts on the process I've described or your own tips for writing User Stories, feel free to share in the comments.

Sketching in Mockups

Interface sketching is a path focussed on generating ideas and finding solutions.

I feel good when I have a drawing pen or pencil in my hand. Doodling, sketching, and drawing has always made me happy, whether it's trying to be artsy in life drawing classes, imagining characters while drawing with my son, or capturing ideas for interfaces. I'm not the most skilled with a pencil, but I enjoy it. It's the quick and spontaneous creation that I've always loved, and I love being able to sketch as an interface designer.

Sketching interfaces is a path focussed on generating many ideas, and to borrow from Bill Buxton, is an activity that leads to finding the right design. It's focussed on finding solutions to problems. Lately I've been thinking about how to further take the activity of physically sketching on paper, to get the same results in Mockups.

Sketching in the physical world

I think there's something interesting about capturing interface design ideas in sketches as a disposable, spontaneous action. After the conversation and research about the problem you're solving, there is always the need to visualize the solution. The quick sketch is the right tool at this time because it can be focussed on the idea without becoming attached to how it's represented visually—form is rough and function is usually the focus.

Here are some key things to keep in mind when doing interface sketches.

  • create quickly
  • create a lot
  • don't worry about how it looks
  • don't become attached

A lot of interaction designers and information architects make this part of the ideation phase easier by creating templates with small spaces for teams to create sketches within. These look like little storyboards. They're compartmentalized sheets of paper, usually 6-up or 8-up for thumbnail sketches. The idea is to produce as many ideas as possible at this stage and at this scale, and progressively add information, select, iterate, and refine.

Brandon Schauer and Leah Buley at Adaptive Path talk about using Sketchboards as a way of generating ideas with sketches and quickly performing iterations on many possible solutions. Todd Zaki Warfel of Message First also has a similar sketchboarding technique that he calls a the 6-8-5 method, where individuals produce 6-8 sketches in 5 minutes.

I've done most of my intertaface sketching on paper, but I've been wondering how to do that same sort of rapid-fire sketching early on in Mockups.

Sketching in Mockups

Over the past year I've continued to sketch on paper, and occasionally scanned and shared them with my team. But when the myBalsamiq beta/gamma matured and became more stable, I started finding myself experimenting with how to use it to do nearly everything.

Our design process at Balsamiq is a bit like a conversation that can start from any point, but which usually flows down a similar path. Here's one typical design/dev cycle for me.

  • A feature is introduced from somewhere, internally or externally. A feature might be discussed in Pivotal Tracker, our issue tracker, or a quick Skype conversation may start it. From here, the story is described more completely.
  • Ideas are are mocked up. We set down broad strokes. Traditionally, this is where I sketched. It's like the beginning of a conversation about a new topic, where one person introduces the topic and the dialogue ensues.
  • The idea is iterated, a solution might be selected. We quickly select the idea with the most merit and iterate over it, filling in details about the flow and interaction required by the feature.
  • The mockup becomes a UI Requirement when we finally all approve, and we build.

Previously I was doing all the sketching on paper, but now I'm starting to do some rougher, sketch-style ideation in Mockups using myBalsamiq. We're also doing all of our Mockups work in myBalsamiq now, so the critique and review sessions are happening there. And since myBalsamiq is much like using a wiki with version control, alternate proposals and the iterations are happening there too. All the ideation is being moved into the ecosystem we're building for ourselves.

What's a thumbnail Mockup?

Mockups has the low-fi aspect of sketch-wireframing covered. But we're still dealing with wireframes when we work in Mockups. There's already a level of detail working at wireframe scale, and when you work too early at that scale, there's the danger of diving deep before you're really ready.

It's hard to imagine that low-fidelity wireframes made with Mockups can become precious documents. The thick, crooked, sharpie-like lines and the unattractive hand drawn font are there to keep you from fussing and making things pretty and real. But they can become precious, and for many people they will. It's natural. You work with something for long enough and you become attached. This is especially why I think there is a step that you might consider before diving into full-scale Mockups, where you're even further from sweating the details, so you can see the bigger picture.

This is where thumbnail sketching steps in. I hardly ever start full scale on a wireframe. Before I have the chance to even think about the details I work with thumbnail sketches. It's like zooming 20 feet away from the thing you're designing, blurring your eyes, and just seeing the major elements of the page.

The idea with thumbnail sketching is to draw a smallish representation of your design, roughing out boxes and greeking lines of text to get an idea of what your interface will look like. You actually don't even need text to sketch the interface, just scribbled lines. You can use text captions to describe what's happening in the story.

Here's a picture to give you an idea of what I create on paper.

Thumbnail sketch

Ryan Singer of 37signals wrote a nice article in 2004 that illustrates his interface design approach, and shows some nice sketches like this if you're interested in seeing more sketches at this kind of scale.

Now here's a screenshot to give you an idea of how I've been doing the same thing with Mockups

Thumbnail Mockup

I think this give you an idea of how I'm trying to make it close to the same experience in terms of speed and fidelity.

How to make thumbnail Mockups

To create our Mockups at this scale, we start out with two simple shapes: the box and the line (straight and squiggly). With these two, you can pretty much draw most of what you need for web and app interfaces, although you occasionally need other basic shapes like ellipses and triangles. Then, of course, you will probably need arrows to show directional flow.

I've created a thumbnail sketch symbols library that includes 2 sets of templates for 6 up or 8 up sets of thumbnail sketches, and a thumbnail sketching elements library. Download the "Sketch Templates" symbols library here.

Here's the basic set of sketch elements in the sketch library:

There's not much to it. These are the basic elements I used. There are straight and squiggly style lines for the text elements.

  • Title/Heading
  • Subtitle/Subheading
  • Paragraph
  • Sentence
  • List
  • Label
  • Text Input
  • Textarea
  • Checkbox
  • Radio button
  • Button
  • Horizontal rule

I can combine these with whatever geometric shapes and rectangles might be needed. I start to build up layouts quickly by dropping these blocks into place and annotate as I go.

Next you step through parts of the interface or entire views, by sketching the interaction and flow through some functionality, either in story-board form or by breaking out parts of the page into a sidebar, or what Dan Brown calls page description diagrams, illustrating state changes.

It might help to get an idea of how I do iterations on a single sketch board, so we've made one of our internal myBalsamiq projects for redesigning the Mockups heads-up-displays available for you to look at here. In particular you might want to check out the history page for my sketchboard to see how I stepped through iterations on that sketch.

Finally, you can look at how we started to work at the right resolution once we selected a concept from the sketchboard that represented the direction we wanted to go in. The wireframes for the HUD are worked on at 1:1 scale or something close to it when we're ready to start considering more than just abstract gray boxes.

What do you think?

Mockups gets faster for me when I focus on doing the right thing at the right time, and this idea is working for me for making quick sketching, or sketch-like activity more collaborative. I'm going to keep experimenting with this technique and updating the sketch library as I continue to evolve it.

Here's a bonus. If you haven't seen Dave Gray's Forms Fields and Flows video, you should check it out. In it, he writes about how sketching is just combining forms and lines, and all you really need to be able to come up with pictures is to see and use these basic shapes. This is what I'm doing most of the time when I'm designing outside of the intended use of Mockups' UI library.

Have fun!

Overhauling Balsamiq.com

This week we quietly relaunched balsamiq.com, overhauling and re-tuning the site to align with our new priorities as a growing company. On the surface it may not seem like a huge effort, but it was challenging.

I'll run down the goals of this project, and talk through some of the steps we took to make it happen, in the interest of sharing what we learned.

Defining the Project Goals

When I came on board, Peldi expressed the need to look at the web site and learn how we can help make it easier for our customers to accomplish a few key tasks. Peldi's blog talks a bit about how we're slowly growing the company, and over the last two years as the site has grown both deep and wide, finding things has become harder.

Our high-level goals were to focus on information architecture and findability, with a little effort to smooth out rough edges. From the top, here were the priorities we thought the new site needed to focus on:

For Current Customers
  • Make the update process simpler and the badge/button easier to find
  • Provide clear paths to support materials, e.g. documentation, updates
  • Simplify the site navigation and reduce verbose copy on very long pages
  • Make the documentation navigable
For Prospective Customers
  • Introduce customers to the company and reassure them of our mission--we compete on usability and customer service
  • Provide clear, no hassle path to try the product right now
  • Cut redundant content, get to the point about what our products are
  • Provide clear call to action--aka make the button bigger and redder ;)
  • Simplify the buy process
For Us
  • Tell the story of our growing family
  • Make it easier to maintain content
  • Centralize frequently used elements
  • Emphasize the voice established by Peldi and bring in the entire family

Planning Our Design

Overhauling is the right word to describe what we did here. If you've ever had a car or bicycle overhauled you know that it's a process of systematically taking something apart to examine it, look for things that need repair, and putting it back together so that it runs as good as new or better. That's what I had in mind for us to do.

I started, as many of us do, doing both top down and bottom up activities to define the problems. The top down was defining the goals and planning the navigation to suit. The bottom up was the nitty gritty of taking inventory of the original site. The goal was to get an idea of what content and services we were providing and see what entry points we provide.

The screen below shows my initial content inventory and a flow chart Peldi did for the new single Buy page.

Before the content inventory, I also started observing the points of pain by talking to customers. I started doing customer support with Balsamiq on day 1. This was and continues to be the biggest factor in helping me understand what we need to improve with the Balsamiq user experience. I learned about what blocked people at the point of purchase, getting software updated, and getting help or requesting features using the product daily.

In the first few months, we handled some of the quick fixes. We had issues with people finding out how to update the software, so we provided a simple link in the app, and a download link in the site header. We did that immediately. The next phase was tackling the bigger usability issues, e.g. providing an information architecture that suited customer needs better, and providing a cleaner purchase experience. We built an outline of a new IA and started mocking up.

Finding Our Story

The next step, and the hardest for me, is finding the right design. Being a design director is perhaps similar to being director of a film. Given a premise and story, you set out to develop the vision for how the story will be portrayed, you gather the actors and crew and creative team, and you provide the schematics for execution. That's a simplified analogy, of course.

All the practical work of serving needs being hashed out, we had to find a way to respect the history and personality of the original site and make it represent the new us, now that we were company of 6 (+2). On our small scale, it meant meeting with the entire company on our retreat and learning what our story was, talking with everyone to develop a concept that depicted that story, and then telling it with this site.

There were things I didn't want to change about the original site because they represented a key element about why I wanted to be a part of this small company. The thing that I found to be pretty awesome about Peldi's design of Balsamiq.com was the voice. You can still see it in the informal screencasts Peldi does. It's like he's actually sitting next to you showing you the software. Some may find the quality of the recording rough, but I like it because it's natural and friendly, and keeping that informal delivery means we can be ourselves and do screencasts more frequently and directly. That's the way we do support--we engage people directly and try to be as approachable as possible. That voice carries through the site, and wanted to be sure that we retained it.

I wanted to focus on this idea of the company as a corner bistro--like a small family restaurant. I was introduced to this idea of the "little Italian restaurant on the web" after reading an interview with Peldi on 37signals. The idea came from David Heinemeier Hansson, who refers to this idea of being the little business you returned to because you know the owners, and you prefer the quality of what they produce. That's what kind of set the tone for how to write the copy to reflect the new us that was still part of the voice that Peldi brought to the site originally.

If I were a journalist, this would be like researching a story and finding and writing the lede. The lede sets the tone for the rest of the article.

I focussed on 2 stories that I wanted to set the tone for the site:

1. The first story is about the company.

Peldi emphasized that we should communicate as much about who we were and what we stood for as it did about the product. I didn't get that immediately, but I see the value in making that a priority. There were a few messages about the company that I wanted to communicate and they're sprinkled throughout. The first bit is sort of a mission. We compete on usability and customer service. We're essentially a small company that cares about what we do, and who we serve.

This lead to the message on the front page, "Balsamiq is a small group of passionate individuals who believe work should be fun and that life is too short for bad software." On the company page we tell the story a little more deeply.

This story also lead to us using customer quotes and testimonials liberally throughout the site. We exist because of our customers--people who want to use our software and work with us to improve it--and we want to acknowledge that the continued success depends on that relationship, and we'll do everything we can to nurture it.

2. The second story is about the product.

The story about Mockups is very simple actually. It's made for frictionless ideation and iteration that everyone can participate in, and the low-fidelity sketch-style wireframes they produce keep you focussed on functionality. There's a secondary story that will be told with myBalsamiq, but the first two points are the main ones to communicate, and we wanted to do that with a few sketch-note style graphics, and to continue to use our simple screencast and web demo. I think this is communicated efficiently on the home page, and slightly more in depth on the product pages, where we preview screenshots and sample deliverables.

Mocking up Screens

The biggest factor in helping us get our ideas out, and selecting and refining them, is that we used myBalsamiq, our web version of Mockups that's in beta, to iterate on wireframes. We created mockups, commented on each version, and Peldi and I iterated in the app.

The screen below shows the Balsamiq.com project in myBalsamiq, with all the versioned artifacts of our planning and design process.

We do iterations fast, we keep the wireframes simple, and get far enough to find the right solution that we agree on. From there I could start working on building the real thing. We only modeled a few pages before going on to design.

One cool thing about using myBalsamiq is that we are also able to figure out which features we need in the app and can work designing those to help our process. One of those ideas, for example is creating mockup revisions based on what came out of comments and finding way to develop a feature around that.

Visual Design

With wireframes in place, it was time to start on visual design. With our IA and priorities in mind, I started sketching some concepts. Those are the sketches you see on the bottom left. Then I reflected on the company retreat we had, I started to get a pretty good idea of what I wanted to convey visually.

The stories above are really what helped me find a concept for the visual design. I don't consider myself a visual designer as much as I do an interface designer, but I think I represented this idea of who we were as a company.

From these sketches I began to explore some visual concepts in Photoshop and created visual design comprehensives. I needed a way to share the visual design comps I was working on so that we could critique and review those and I could continue to refine them with feedback. I used the image component in Mockups to post comps that we reviewed in myBalsamiq.

Below are comps for the home page and company page at different points in our design review.

View full size: Home Page Comp or Company Page Comp

Several iterations later and we had agreement on the visual design concept. I got to work developing the site.

WordPress as a CMS

We decided to use WordPress to settle on a single system to publish both our static content on the main site and our blogs. We really didn't have too much content to migrate on the main site, but what we did have, were a lot of Drupal nodes that needed some cleaner HTML and layout and typography stylesheets that we could evolve over time. We chose to host our own WordPress for the main site, and run our blogs on WP Engine.

For the main site we're creating pages with parent-child relationships to create the navigation. We have some custom PHP in our templates to handle the global and local navigation. We're relying on SuperCache to serve cached content and WP Minify to compress scripts and stylesheets. There aren't major modifications that we made to WordPress, besides using custom fields to handle discrete modules of content and output them into different areas of our templates.

We also use the BluePrint CSS Framework for layout, and TypeKit for rendering headings in Myriad Pro, our house font. We discovered, as many people seem to have, that a bug in pre-iOS 4 Safari (e.g. iPads) crashes that browser when serving multiple font weights and styles. That's one issue I am still looking for a resolution for. TypeKit is awesome, otherwise.

We did need to tune our server a little. We had a nice spike in traffic when Hacker News picked up our relaunch. Luis, with the usual quick response from Slicehost (thanks, guys!) helped get us get configured perfectly for our needs.

WP Engine for WordPress Blogs

Migrating WordPress blogs to WP Engine was a simple decision for us. The guys at WP Engine are awesome, and they had a solution for multi-site WordPress hosting that took the hassle out of us having to keep WP up to date. Takes the worry out of handling traffic and performance issues on our main server, they can serve all of our images from a CDN, and provide support for keeping the blogs up and running, so we can focus on just communicating and working on our product. They even helped us figure out some of the issues we caused with our 301 redirects that were interfering with image rendering. Good stuff.

Testing and Checking Copy

I took most of the existing copy on the old site, and copyedited it to fit with the new combined founder and company voice. I then created some copy in other parts that were consistent with this. Peldi did several rounds of copyediting from there and we iterated on some pages to fit and for voice.

The rest of the company then joined in and started testing the site and began recording issues and providing feedback in PivotalTracker, the agile project management tool we use. Our reviews uncovered parts of pages where the calls to action could be clearer and more visible, so we did a few more iterations on those pages that could be improved. With the pieces in place, we launched.

What's Next?

The last bit of the process has been fixing the problems that inevitably crop up post-launch. There are only small issues to deal with now. The continued reports from our users are helping us find the issues. Thanks, as always, to our awesome customers for helping us out!

That's the somewhat long story of Balsamiq.com's new face. I hope you like this aspect of our site's evolution, and most importantly that you find things easier, and that the user experience is better. There are more improvements on my list that can come later. I'm working on how to improve our onboarding experience with each category of product purchase, and as always, will continue to look for things that we can improve by listening for feedback in the forums. I look forward to hearing how we can make Balsamiq better for you!

Install and Update Usability

One of the nice things about working in a small, flat organization is that you have to do support. With no levels of hierarchy and everyone monitoring support, communication is easy and fixes are fast. My experience today in trying to short circuit what appeared to be a small issue that is causing some pain to customers is a good example of how small can mean nimble and responsive.

The past few days of my first week I've been monitoring support and answering a few Get Satisfaction questions where I could. That's a part of everyone's job here. But it also helped with one of my primary goals this week, which was to get get a handle on the priorities and begin working on a few of these small projects. I've been getting up to speed on the apps, filing bugs, and looking at the UX priorities. I've also been thinking about how to attack the low hanging fruit. What I saw while doing some of this work in parallel, is that I might be able to do some triage and kill a few birds with one stone here and there.

The Upgrade Problem

I saw a few posts about issues people have with upgrading, knowing I had the same discomfort with the upgrade process myself. But I got back to work, and filed the issue in the back of my mind. I've also been doing a content inventory of the small Balsamiq.com site, and trying to get a handle on the IA there. I was looking at the really long and verbose pages we have, and in the process was going through scenarios like finding the upgrade link. I knew it would be hard for some people to figure out. It was too much work.

Then I came to the AIR upgrade badge and wondered how much of an issue that was. If you can think back to the first time you installed an AIR app, you might recall how seemingly quick the process was, when compared to downloading a package and executing it on your machine (running setup.exe on Windows or dragging a .app from a disk image on Mac). It's almost scary how seamless AIR installs are after that. Almost.

The issue for some with AIR installations, especially upgrades, is that they introduce different way of upgrading than what we're familiar with. You won't know what it feels like until you do it once. Hell, it can feel unfamiliar for a few times until it you've done it enough that it feels natural. I thought the only way to really know if this was pissing people off was to test it.

Doing Ninja-Usability Testing

There are various gradations of usability testing, but the ones I'm interested in are those that are cost effective while being easy enough for me to do quickly and remotely. Discount usability testing is about low cost methods for testing using only a handful of people that run through scenarios. The outcome is often that the most obvious problems are uncovered with the least investment in time and resources. Jakob Nielsen originated this idea. A radical version of this is the 5 second test, which I became aware of after reading an article describing the process at UIE.

For my needs, I wanted to just figure out this one problem. What do people experience when they try to upgrade Mockups for the Desktop? So I turned to remote usability testing tools. OpenHallway is one I've been testing out--they're a sponsor of Konigi and I'm writing a more in-depth of review of the service soon. What I wanted to do was to give people this simple scenario.

You've been using Balsamiq Mockups, and you want to upgrade to the latest version. Can you find the upgrade installer in the site?

Get to the point where you think you've found it and tell us where you think it is. Tell us what you would do at that point to upgrade.

So I put a call out on Twitter and stopped at 6 respondents. I wanted to test 1 problem with a few people. I don't know much about ninjas, but that seems pretty ninja-like to me.

The Feedback

This the feedback I got. My notes are quick and dirty. There are no task markers because there's only one task. There's no quantitative data to analyze. Just observation and common sense.

Tester 1
Wrote: You click on the "Install now" button

Notes: Started by scrolling through home page. Cliked Support > FAQ. Succeeded after searching the FAQ. Succeded in under 1 minute.

Tester 2
Wrote: After navigating through several pages, I found out that to upgrade the software, you simply download the latest copy off of the site.

Notes: Used the Support link after skimming the home page. Scrolled through the Support page and didn't find it and returned to Home/Products link. Clicked Desktop link in hero. Then appeared to read the page until scrolling down to Upgrade instructions. Found it, didn't sound confident at first. about 1'30" to complete task.

Tester 3
Wrote: Final thoughts:
1/ difficult to find download area
2/ difficult to see if by downloading the latest version it will be installed without deleting anything
3/ looks a bit like apple website without the blingbling effects

Notes: Skimmed the home page. Clicked the Products page, found home/products confusing. Went to desktop mockups product page. Then support. After filing with browsing, saying "not very useful stuff," went to search for "download" and tried the Examples page. Found the Desktop link and guessed that it was an install process.

Tester 4
Wrote: it wasn't there or at least i couldn't find it i was looking for upgrade or something similar

Notes: Failed or gave up task.

Tester 5
Notes: Scanned the home page for an upgrade link. Clicked Desktop product link and found the Upgrade heading below the fold. Then wondered "Would download the demo is the same as just downloading? I certainly don't want to buy it again." Successfully started the download, but wondered if she was doing the right thing.

Tester 6
NOTE: She took the test AFTER I had already made changes by creating a download page and adding the download link to the Header.

Wrote: The first thing I was looking for was a download link. It was on the top right of the first screen in the main navigation. I would have expected that if a new version is recently out that the home page would promote it more obviously though (so I looked in the main area before I looked at the navigation, which is where I expect to find it in a permanent fashion).

On the download page I had to interact with the Flash widget in order to get the download started. That was not expected, I was expecting to see some obvious "Download Version X for Y Platform" button - don't really understand the benefit of that little widget.

All in all it was straightforward to do it, but things just did not look like how I expected. The site could really use a visual refresh so that core content, navigation and important call to actions (like "Download the latest X") are visually differentiated.

Thanks!

Notes: She was successful in finding the Install badge quickly, but again the default AIR install badge is not familiar enough.

Taking the Low Hanging Fruit

Did you notice the funny note on the last one? She took the test after I had already made the changes after seeing what needed fixing in the first 5 tests. You could argue that those fixes were common sense anyway, but the audio from the users thinking out loud provided even more feedback about specific things with the AIR badge and what they expected. I didn't transcribe those notes here. Below is the plan I wrote up.

Immediate Plan
1. Create a download page with very little copy. Be sure to put in right keywords in title for search.
2. Add Download link in header.
3. Add a more prominent Download call to action in support page.
4. Think about interim ways to make call to action clear in home page without a major redesign.

Upcoming Plan
1. Vet the design of the updated download button (AIR badge) we already mocked up.
2. Add a link in Balsamiq or Help menus of desktop that goes to our new download page.

I've already done 1 and 2 from the first list. Download is now in the header and links to the new Download page.

Lessons Learned

It's been a fun first test and it was good to try using a service that's simple enough for my needs. I started by putting a session together at around 7am. I recruited via Twitter, got 6 respondents and waited while they ran their tests. By 10 I was watching their videos and wrote up notes and a plan for changes. I had lunch, and was making the changes by 1pm. That's how I want to do things around here.

UX Design in the Open

· Posted by Mike in design, process · 1 Comment

Today marks a new chapter in the ongoing evolution of Balsamiq. In the spirit of openness and transparency that you've come to know from the crew at Balsamiq, I'm going to be writing the UX blog to talk about how we do user experience design.

What can you expect?

You can expect to read about topics ranging from specific feature design, to discussing our design philosophy. You can also expect to see me asking you about your experience using the products.

I want to know how you're using Mockups and myBalsamiq. Are we successful at providing an experience that maps to your mental models? Is our purchase, installation or upgrade process not working for you? Maybe part of that discussion is also discovering and introducing each other to new ideas for using Mockups more efficiently or in ways that are unfamiliar, but potentially useful? Any question related to your experience with Balsamiq is fair game.

Sharing our process

I think a big part of this blog will also be about sharing our process with you, being open about how we do design, what we're researching, and discussing the process of vetting and designing features. We're committed to sharing as much as we can, and what I intend to do is put my thoughts and most of my research out here so that you can understand how we're approaching problem solving.

One of the first things I will be working on, for instance, is a new component skin. While some people love our current interface component style, we also hear people asking for elements with slightly cleaner lines that still retain a low fidelity sketch appearance. As I work on this, I'll post my references here so you'll see where I think the design of those components should be headed.

Peldi recently started a discussion on the design of shared component feature, which will let you share grouped masters like page headers, or reusable components like forms. We're essentially asking you as users what you think of the model, and what works and doesn't work for you before it gets released. That's designing in the open, and I think we may see more of that happening.

Communicating the path

Lastly, as I dive into the support queue on Get Satisfaction, I'll try to distill the feature request discussion into a dialogue that relates back to the bigger picture for Balsamiq. It will be helpful for me to get my head around how the product evolves to match the mental models we have for interface design as a varied audience that ranges from developers and ux designers to business analysts.

So that's the plan and enough talk for now. Time to get started.