My Design Process

I am constantly learning and improving and changing. So, don't take this as the one and only way I have ever or will ever design. But, it is a good overview.

Step 1
Understand
Before anything else, I seek to learn and understand a few things:
1. The user

Who is it that we’re serving with this design? What are their pain points?

Getting to know and understand an audience is only the first step in creating something remarkable for them. The objective is to serve that person well and to do that I have found I must know who they are. This is only the first step though.

Talking to them or talking to the people that interact with them regularly is where I would start. Another great place is reading their opinions and experiences on topics that matter to the application.

2. The jobs they need done

The next thing I seek to understand is what job the audience needs done. What are they hiring our software to do for them? Once I understand this perspective, their goals, their pains that are being solved, I am just about ready to get to work.

3. The business objectives

How do you determine success on this project?

Sometimes speed is most important. Or rate of use, especially if we can compare before and after. Sometimes it's upgrades, signups, or something else. Sometimes it's simply whether it improves the user experience.

Before beginning I like to know where we're trying to go from a business perspective.

Step 2
Design
Start with the core use case and get that right first.
1. Create something to talk about

My primary objective is to get some ideas on the page as quickly as possible. I'm not worried about it looking beautiful or perfect. I only need it to be good enough to communicate an idea.

Because this step is all about being creative. It's a time I allow myself to explore and think outside the box. I try to shake things up and get as many different design directions and solutions together as possible.

I limit the time I allow myself for this step. Typically I give myself one or two 90 minute deep work cycles.

Then I evaluate the designs. If I'm working on a team I like to explore the designs and talk through the strengths and limitations together. This is a quick conversation.

Some of the best ideas have come from these conversations. The outcomes is that I either have a clear winner and design direction or I'm still unsure.

If I'm not sure, I do another round of quick design ideas and re-evaluate.

Once I have a clear winner I move onto the next step.

2. Create the design

I wish I could say exactly what should happen here, but the truth is that it depends.

Each project is different. Sometimes the design is clear enough in my head that I jump directly into creating it with HTML, CSS, and Javascript.

Sometimes the design needs to be fleshed out some more. Before I'm ready to jump into the code I may need to design and experiment with some of the little details.

The objective though, is to get something on the screen as quickly as possible. I've found that this is the best way to truly evalute a design.

3. Iterate on the design

The design experience is a constant round of design and re-design. I iterate over designs a lot.

The objective is to take the design and polish it. I go through a lot of small cycles where I improve every little detail.

Knowing I'm going to take the time to get the details right at this stage, gives me freedom in earlier steps to explore and not worry or stress the details. This is the time where no detail is too small.

Step 3
Add Features
Add one feature at a time to a polished design.
1. Add functionality

Once the core functionality and design is in place I move on to making it better. Just like I did with the core use case, I create it and then iterate on it until I get it right.

I start with the most important feature that is currently missing. If, for example, I were working on creating an onboarding experience. At this point in the design process I would have worked through and created each of the onboarding steps - the core functionality.

Then in this stage of the design process I might add the ability to skip an onboarding step or go back to a previous onboarding step.

This is functionality that makes the onboarding experience better. It's an improvement and an augmentation to the design done in the last step.

Typically the design is clear enough that I can jump straight into creating these additional features in code. Sometimes though it's necessary to create a design. If I do need a design, I've found that they go very quickly.

2. Iterate

Just like before, I iterate on the design feature until I get it right. No detail is too small.

3. Move on to the next feature

Now it's time to create the next most important feature that improves the core functionality of the design.

Keep in mind, this not about adding a super feature rich interface. These additional features are important parts of making the core feature better. If I err on either side, I might err a little too much on the side of minimamlism and clean, easy to use interfaces.