Designing software can be an exhilarating and satisfying experience. But, it can also be a horrifyingly chaotic and frustrating endeavor. There will be many challenges as we work toward simplifying all the complexities of our product. There will be many opinions to consider and compare. Though unfortunate, some of our co-workers may attempt to bully us into accepting their point of view over another. There will also be times when there is a complete lack of opinion. Sometimes no one can see what he or she considers to be the obviously correct solution. And, occasionally, the vision of the product can be so ambiguous that it leaves us without a clue as to what it is we're supposed to be designing.
The best defense against all these situations is a well-defined and evangelized design process. This process will allow us to contain some of the bedlam and confusion that naturally occurs when creating software. The only sure way to succeed is by working together to solve a defined set of problems in a logically directed order.
The first key to employing and maintaining a healthy design process is to possess an understanding of what steps are needed for the project we are working on. We will need to figure out what techniques will help us get the information we are looking for. We will also need to know how to gauge when the time is right to move from one step to the next. It will be important to remain flexible as we assess each new project. To be successful, we will need to tailor the design process for each new product. Documenting and distributing the design process we intend to use will help set expectations. It will also aid our attempt to generate accurate delivery date estimates that project managers and clients will be expecting us to deliver.
This chapter will cover the following topics:
The importance of research in the design process
How to map out the structure and task flow of a site or application
The process of wireframing page-specific content, layout, and navigation required to support tasks a user wishes to complete
General visual design guidelines about converting wireframes to pixel-perfect mockups
What software developers will need once designs are complete and ready for development
The stages of a typical design process and the level of effort generally experienced in each step is illustrated in the following graph. Other designers may break these up a bit differently or may apply different titles to the stages. Regardless of those slight differences, there is a general consensus regarding the common flow and methodology of the UX design process.
Of course, the actual level of effort will depend on each specific project and the team we are working with. However, this should give us a general idea of the effort required to produce the deliverables listed out after each stage in this chapter.
Let's begin by getting into some of the details and examining each step of the design process. I will explain the goal of each phase, give some helpful tips, bring to your attention some commonly used techniques, and describe how to determine when it's time to move to the next stage in the process.
The pressure to start designing as soon as possible is almost always in effect. Mature software designers, developers, and management staff know that research time is a necessary part of the process. In fact, it is the way to kick off the process. However, there are situations when even seasoned professionals forget the importance of this first step. They get caught up in the fervor to get the product out the door and succumb to the pressure of cutting corners by skimping on research that is required to establish a solid informational foundation to start building our software. It is essential to start off by getting answers to several key questions.
These questions are as follows:
Who is going to use this software or site?
What tasks does the user wish to accomplish?
What does the maker of the software or site wish to accomplish? (Not always the same as the preceding question)
What technology will be used? (Are there any limitations to consider?)
Why would the public use your software or site over another?
What is the content needed to support the user in accomplishing their goals?
If we are redesigning an existing site or application, we will likely find it valuable to seek answers to these additional questions:
What existing features or complexities are hampering or otherwise negatively affecting the user experience?
What additional features would the user or publisher find helpful in the next version of the product?
Finding the answers to this list of questions may require the application of several research techniques. Our research efforts can take the form of competitive analysis to ensure our product has the right features or of simply interviewing those who know who the expected end users will be.
Some of the most commonly used and effective research techniques are mentioned as follows (see Chapter 4, Research Techniques for more details):
Personas and user profiles
The quality and quantity of research we complete will have a significant impact on how successfully we give the user what they need. It will also influence the amount of time it takes to complete our designs.
To illustrate how constant an issue this is, I have included the following two graphics, which I created about 12 or 13 years ago. Though they were aimed at addressing the issues I was facing with a specific team, it's still relevant and worth explaining to any team or client you will work with:
This first chart shows how the process should work. Most, if not all of the research, has been completed up front, that is, before the design work begins. It means a fairly predictable design cycle. The designer knows all of the problems he or she needs to solve. The review of the 1st DESIGN ROUND usually yields some needed refinements, but not more than that. Time estimates are met, and everyone is happy.
This second graphic shows how things can go wrong and how due dates slip. It's been my experience that some clients or stakeholders just cannot bring themselves to think through all of the requirements and features needed to start a project. We ask them all the necessary questions and they will give some of the details. However, they are just unable to formulate answers to the questions we are asking without seeing our initial round of designs first. Once they see our attempt to wrangle the ambiguity into submission with some sketches or wireframes, they become a veritable fount of information.
When our research attempts yield very little, we are likely to involve the decision maker in the creation of some sketching sessions. So, make these sketches quick, make them messy, but make sure the client is involved in the process. If we attempt to complete a formal round of designs with incomplete information, we are likely to realize that we've just wasted our time.
There is so much that needs to be considered when designing software. When someone is late to introduce new requirements or features in the process, it can feel like the whole thing needs to be thrown out and started over. We can spare ourselves some of the agony by ensuring that the research has been thoroughly pursued and documented. Then, we present the results to the client and team to get their approval and buy in. Ensuring everyone is on the same page from the start will hopefully limit the number of surprises and changes that come in later. And, when they do, it will be with the understanding that these requests are altering the existing expectations. This way, scheduling changes can be discussed as a natural consequence.
Some designers may find agile development methodologies to be difficult to work with while designing larger comprehensive solutions. Agile is an iterative development methodology that attempts to get a development team to produce faster by reducing the amount of documentation and other overhead, historically gathered before development could begin. It is a reaction to the old waterfall methodology, which traditionally had the product mostly or entirely designed and thought out before going into production. This method required a lot of discussion and documentation that slowed production down significantly. Though the waterfall methodology is still in use, it has lost favor due to its slower pace of delivery.
With smaller projects, there shouldn't be too much of a problem getting our research figured out at the start. However, larger and more complex projects can be a challenge. Designing in an agile environment generally requires getting a good head start to get our research and design deliverables completed before the development team needs it. The farther ahead we are, the more time we will have to vet and optimize our work before delivering it to the development team.
To summarize, the quality and quantity of our research will have a direct and relational impact on the quality of the solution we create. Rushing to design a solution without key details, such as who our audience is or what features they might need, will mean a lot of guesswork that may or may not succeed. I always like to think of it as if you want it bad, you get it bad.
Though I have these steps broken down into distinct stages, it's natural for our research to continue for a while as we begin to change focus. There doesn't necessarily have to be a clean break from one step into the next. Depending on the scope and complexity of the project, we can expect to have different portions of the project in different phases of the design process at any single point in time. The exception to this is the first point in the following list. Our initial research should be aimed at getting enough information to map out a comprehensive diagram of the tasks users wish to accomplish while visiting the site or using the application.
Create a high-level map of the site or application.
Map out the tasks found on each page or screen.
Define the content required to support each task.
Vet and test our designs.
Refine our design solutions.
Document the UX patterns.
This phase is dedicated to the effort of getting the structure of our site or application mapped out. The more complex our project is, the more important it will be to spend the time required to map out the page structure and task flow before we move onto other steps. If we are creating a simple brochure-style website or small application, it lessens the need for a thorough investigation and task flow documentation. Nevertheless, it is a good habit to get into and it helps communicate our plan to the client and/or team. If we are working on a complex website, web app, or other applications, it is absolutely critical that we first map out the task flow and interactions the user will face when attempting to complete a task.
We should consider the creation of a holistic task flow diagram or site map of the product, one of our first primary concerns. If need be, we can shut our office door and produce this map alone based on research we have completed to date. There are situations wherein it is better to shut out the noise of opinion so that we can process everything to come up with a recommended solution. However, I would recommend calling the stakeholders and important team members in for a brainstorming session. I have found it expedites the mapping process immensely when we have everyone in the same room talking over possible solutions.
It can be difficult to give proper credit to the originators of certain commonly used UX techniques. However, we know the flow process chart was originally developed by Frank Gilbreth Sr. and presented to the American Society of Mechanical Engineers in 1921 (http://en.wikipedia.org/wiki/Frank_Bunker_Gilbreth,_Sr.).
Mr. Gilbreth has a particularly fascinating history. He worked at refining the physical world as UX designers do in the virtual world. His charting methodology has since been adopted and modified for use in many different industries. The first standardized flowchart methodology specific to UX design was invented by Jesse James Garrett in 2000. More details can be found online at the website of Mr. Garrett (http://jjg.net/ia/visvocab/).
If we were to search the Internet for the meaning of flowchart shapes, we would find thousands of examples and possibly a few different interpretations for what each shape and line quality mean. Adopting and applying a deeper visual vernacular can greatly expand the amount of information we can pack into our interaction maps. That being said, we shouldn't consider it a requirement to adopt these charting languages in their entirety. It is good to be familiar with the industry standards for creating flowcharts, and whether we adopt or modify is perfectly acceptable, as long as the flow of information is clearly mapped out and easy to comprehend at a glance. Understanding the basic principles of task flow creation should be enough to get us started.
This flowchart example documents the experience expected when installing a piece of software. The primary task here is to determine if the end user has an existing account or if they need to create a new account.
As we can see from the preceding diagram, each rectangle represents a page or task. It starts at the uppermost part of the diagram with Download & Install of the application. The reader of the document simply has to follow the arrows to view the options available to the user and the subsequent steps they encounter as they make decisions and enter data.
Here, we can see the experience branch out when the user is asked if they have an existing account. If they do, they are asked to sign in and are taken to their dashboard. If they do not have an existing account, they will be asked to create one. They are then taken to a tutorial to learn how to use the application. It appears that the tutorial consists of multiple pages, and the user will be given a chance to skip and go directly to their dashboard. By using a dashed line, the chart appears to hint that skipping the tutorial is not the preferred path they wish the user to take, but it is available.
Though just a small snippet of a larger experience, we can begin to see how much information can be conveyed at a glance. This is particularly significant when it comes to the branching of decisions. The more options we offer, the more complicated our map becomes. The experience starts to complicate exponentially if each answer to a question leads to more questions. Add a few of these branching questions in a sequence and our experience would be extremely difficult to convey with a text-based explanation.
Let's examine the mundane experience of entering a home in the following flowchart:
We start by entering the house. Once in, we immediately have many choices to make. They all hinge on which direction we choose to move in. Once we have made our decision, we have another set of unique choices awaiting us. Take a moment to think about how we would describe the same experience using only text. Certainly, it can be done, but it would take far more time and mental processing for the reader to understand. The preceding figure offers a visual solution that can be understood at a glance.
I recently received a functional specification document from a co-worker who was managing a project that my design team was expected to work on. He explained, in moderate detail, how the product would function using only text. Though not a particularly long document, it took us half a day to read through it in an attempt to understand the process he was describing. In the end, none of us had fully grasped the process he was attempting to express. We ended up giving up on the experience and decided to meet with him to talk it through. After some discussion with him to get a clear picture of the task flow he intended, we charted out the same experience on a single page. We cut out about 80 percent of the text, and ended up with an easily understandable document weighing in at a fraction of the size it initially was.
Once the project stakeholders have seen our task flow diagram and agree that it is the model they wish to proceed with, it is time to move on to the wireframe stage.
A wireframe is the basic blueprint that illustrates the core form and function found on a single screen of your web page or application. The fidelity of these wireframes will increase in detail as we refine them. However, our first version is likely to just utilize basic black and white outlines and shapes to hint at where navigational elements, text, and graphics will be placed on the screen. The collection of these wireframes should give a comprehensive skeletal view of our entire product.
Here's an example of a first draft wireframe of a website home page:
As we can see by examining the preceding wireframe, the content of the page supports one primary task: to direct the user to find the product they would like to learn more about.
To support this task, we have created what we will call "access points" to the different products, shown here as images, headers, and links. However, we don't know what the text will say, what the navigation bar will contain, or what the graphics will look like. All of this requires more discussion and exploration, so we will just block out a space for it and move on.
This process can be much easier if we are redesigning an existing site or application because much of the content can usually be reused. However, if this is the first version of our product, we should not bother ourselves with too much detail to start with. Just imagine the type of content that will be required to support the tasks that need to appear on the page.
As we start to iterate progressive versions of these wireframes by defining and entering page content, the fidelity and detail of our wireframes will increase. As the wireframes progress, we will begin to see where we need to request or create content. We will also need to define and include the optimal navigation model and content taxonomies in our wireframe refinements.
Now would be the time to meet with the development team to explain the current project plan details and any special technical considerations or unusual features. At this point, we will need to figure out if we plan on having our site optimize it's layout for the specific device it is being viewed upon (desktop, tablet, phone, or other mobile devices). This is known as responsive design. It has become the standard method for creating websites. It means we are likely to define how our page content and layout will shift to display for each screen type.
The example website I have included in the following chapter is designed with the traditional desktop computer in mind. However, the rise of mobile device usage has many focusing their design efforts on a "mobile first" methodology. This means they start by creating a design optimized for a mobile device and then expand their designs for desktop optimization second. This method will only become more relevant as mobile device usage increases. Regardless of your choice of which to pursue first, you are likely to consider responsive design when designing your wireframes.
There has been much written on the topic of responsive design and a similar technique called adaptive design in the past few years. There are many online walkthroughs and video tutorials on the subject that can help you better understand the topic. A search for "responsive design techniques" should get you started on learning more.
Though often saved till after mockups have been generated, now is the time to start testing the usability of our designs. Whether we decide to test our efforts with paper prototypes (see Chapter 5, Information Architecture and Visual Design Techniques for more details) or something a bit more formal, it's important to vet our ideas while there is enough time to change them. If we wait to test our designs until after they have been fully fleshed out in mockup form or fully developed, there is often very little we can do to change core functionality.
Some commonly used, effective wireframing techniques are mentioned here (see Chapter 5, Information Architecture and Visual Design Techniques for more details):
Depending on how you have decided to get to this point, now is generally the time to transition out of your wireframing application (Axure, Omnigraffle, Visio, or others) and open up Photoshop to create your mockups.
The mockups created at this point should be an attempt to portray a pixel-perfect representation of the final product. All content and graphics should be defined and put in place. I should note here that the concept of pixel-perfect is beginning to change with the adoption of responsive design and increased website interactivity. When websites were a bit more static and less interactive, it was far easier to create mockups that translated perfectly from Photoshop to a website. Though this is still something to strive for, it should be understood that animations, transitions, and interactive features will create a moving target that will be increasingly more difficult to capture in any design application that produces static images.
As mentioned before, UX design is a multidisciplinary career. Some companies find it easier to divide the design process by hiring information architects who get the details in place. They then pass their files over to graphic designers who skin the designs by designing the visual layer.
When the same designer applies the wireframes and visual design, it can be easier to refine the wireframes to a higher level of fidelity. When our wireframes start to take on some of the final mockup qualities, the transition to the visual design phase can be much easier. The generation of mockups is then just a natural extension of what has already been defined. However, if the work is to be divided, I would recommend leaving some room for the graphic designer to explore visual solutions that stray a bit from the wireframes. A good way to do this is to flag the items whose placement or properties should not be altered and let the graphic designer have full sway over the rest.
Content changes at this stage are common. Text and graphics will be explored and updated as the mockups are refined. However, I would offer a word of advice regarding additional features and functionality changes that come in during the visual design phase. It can be very difficult to step back to the wireframe stage once we have started producing mockups. It's tempting to continue making our pixel-perfect designs and roll these changes in at the same time. This can be done, and might be the wisest thing to do if the changes are minor. However, once we start making significant changes to the information architecture, it would be faster and easier to pause our mockup efforts and examine these changes in another set of wireframes. The reason is mostly the speed of execution. The graphic design phase is all about dialing in the visual details, which can take significant effort and time. To examine the feature changes at the same time can slow the process down significantly.
This stage basically breaks down into three tasks:
Optimizing the graphics for use on the website or application
Creating specification documents that help the developers build what we have designed
Reviewing the development work completed to verify that it matches the designs
This last step is by far the most difficult of the three. There is likely to be some significant visual differences between the designs and what has been developed. Even when we have supplied specification documents calling out the margins, kerning, leading, and other attributes, things will be slightly different. The fact of the matter is that the level of control you have over such things in Photoshop is far greater than you have in a web browser. HTML5 and CSS3 have been offered a great deal more control, but often still fall short of what you need.
This issue has actually led to a new career path in the software industry called a UX developer. It is for that rare person who has both the ability to code the frontend as well as an eye for design. If we find that our team has significant issues with the translation of mockups to the final design, we may consider hiring someone to help in this capacity.
With this being a rather common problem, we might expect all eyes to be on the end result. We could argue that it is everyone's responsibility to ensure that the product developed matches the mockups as close as possible. After all, there were many eyes on the designs as they were produced. Many opinions were expressed during their creation, and a final agreement made on content, navigation, and it's overall look and feel. Yet, it more often than not falls on the designer to oversee the efforts of the development team's attempt to recreate what is represented in the mockups. At this point, many people hold strong opinions about the details and nuance of the product; however, these seem to fade from the minds of those who held them once the product enters the development phase.
The trick to resolving some of this before it starts is to include the developers earlier on in the design process. It tends to be natural for a wall to build up between the development and design teams. They speak entirely different languages after all, and get called in at different stages of the software development process. It will be of great benefit to all those concerned if we include them early and often.
Furthermore, we will want to ensure they are involved in the earliest discussions so they can weigh in on the technology or technologies that should be used. A discussion about the desired features and our initial ideas about how we think we will attempt to create the user experience should give them enough information to decide which technology to use. Their decision should give us a better idea from the start as to what limitations we may have as well as what options we might have at our disposal.
Beyond this, we should include the development team in subsequent design reviews. This will help them understand why certain decisions were made and point out the significance of certain parts of the interface that should not be altered. Assigning a primary point of contact from the development team who is included in the brainstorming sessions and designer reviews can help our teams stay on the same page without disrupting the entire development team's schedule.
All of this can help prevent the more serious issue of designs and features being significantly altered or cut without notice. The common excuse is, "I know you are very busy" and "I didn't want to bother you." Set the expectation from the start with the entire team that you would like to be involved with any changes that are made to the function, flow, look and feel, and so on. You may have been documenting the product decisions until this point, but there were many eyes on the work, and approval is given by all. If there is a change in what had been approved, it will need to be discussed with the stakeholders.
Though each new project will require slight variations on the level of effort expended on each of these phases, this design process is for the most part universal. You should expect to follow this process with every project you take on.
Begin researching with the intent to define the users who are going to use the product. Ask the questions required to understand the goals of both the end user and the software creator. Brainstorm to define features that let them complete their desired tasks in an efficient, intuitive, and creative manner.
Once we have those answers, we will start to iterate the information architecture of these features. Begin the process by mapping out the overarching task flow that users will follow through the site or application to complete their objectives. Next, we will define the page-level content and layout required to support the user's efforts in completing their tasks on each page or screen. Then, we test our design solutions to ensure they are intuitive and usable.
With our vision of the overall task flow of the product and page contents documented and vetted, it is time for us to apply the visual design. We will need to create the necessary graphics, fonts, photos, and other visual elements that will replace all of our wireframed elements. Once complete, the designs and their associated graphics and photos will need to be handed off to the development team for production.
Following this process will help dispel ambiguity and will replace it with information and order. It will remove the guesswork and will offer a clear direction in which to take our product.
Now that we have a general understanding of the design process, let's see it in action. The next chapter will walk us through a sample project building an e-commerce website.