Matthew Bush is a software designer and engineer at Trunk Club, and a popular instructor in our Chicago web design course. Matthew's work with Startup Institute students focuses on how to develop remarkable digital products that are optimized for both context and performance. I’m catching up on the Worldwide Developer's Conference live stream at a cafe in Russian Hill, awaiting the start of the inaugural Layers Conference. Maybe the jet lag is finally wearing off, but it’s suddenly dawning on me—I really didn’t have to *think* about anything to get here. It was as if every roadblock I might run into had been predicted and solved by great user experience design. Take this scenario, for example:
I stumble out of San Francisco International Airport and open up the Uber app. For those not familiar with this experience, it can be a cumbersome act to try and coordinate getting picked up in the midst of this type of surrounding. The Uber app opens and I’m immediately located at the airport (cool, they know where I'm at!). I go to request a ride and my mind starts racing, trying to pick up on details that could tip-off my driver to my precise whereabouts when, all of a sudden, I’m presented with some options that do that for me. I turn around and the indications on the door behind me mirror the options in my hand. It was as if someone had stood in my shoes, in that very spot, and felt the rush of overwhelming urgency that I felt. The rest of the process was completely seamless and pain-free.
Now, you could argue that only a company of the magnitude and with the wallet of Uber has the resources necessary to carry-out the appropriate research, design, and execution of something like this at scale, but there are great (albeit, many smaller) ways we can embed ourselves as individuals in the roots of the contexts that products are used in to achieve similarly seamless user experiences.[bctt tweet="Empathy and #designincontext can achieve great #userexperience - @MTTHWBSH"]
Observe users in context:
This might seem like an obvious user-centered design approach, but it’s often overlooked. There’s simply no replacement for observing users out in the field. If you’re anything like me, you’re working on top-of-the line hardware with all software up-to-date, and on blazing-fast internet. You’re also probably sitting in an office, coffee shop, or some other environment that doesn’t reflect the context in which people are using your product. In an increasingly distributed digital landscape where products and services are used synchronously across several devices/ environments, etc., this simply doesn’t cut it. As designers, we need to strive to align the purpose of what we create with the user’s specific requirements at any given time and in any given place.[bctt tweet="As #designers, we need to strive to align #purpose with user needs - @MTTHWBSH"]
Create performance budgets:
This one might feel a bit out of left field, but it directly relates to the issue brought up in the previous section: we don’t often design or develop under the same performance and environmental constraints our users are experiencing. Now, it would be nearly impossible to optimize for every possible situation from a performance perspective, but the important thing to remember is to consider performance in all decisions and ingrain it in your process from the get-go. An easy catch-all way to do this is to create a performance budget for what you think is the minimum acceptable criteria for the many contexts your product is used in.
This isn't a monetary budget: what you actually budget is a bit arbitrary—it could be load times, data usage, size, etc. From there, continually benchmark gains and losses as a part of your project cycle. This way, not every single decision is driven by the most performant solution, which can sacrifice other design elements. There’s opportunity to favor more complex graphics or load more assets if you can find equivalent performance gains elsewhere that allow you to stay within your budget. The ideal design outcome creates a healthy balancing act between experience, polish, and utility. [bctt tweet="Ideal #design outcomes = a healthy balancing act b/w experience, polish, and utility -@MTTHWBSH"].
Analyze and respond to data sets:
A great way to surface contextual pain points is by properly logging key success and failure events. This is increasingly important for goal-oriented products in which the purpose of use is to complete some sort of task. When event tracking is properly set-up to perform analysis on these important metrics, it can tell a meaningful story and surface patterns that may have gone unnoticed on the user-by-user basis.
For example, there may be one lengthy network call being made in the midst of an important user step, resulting in a higher than normal drop-off rate (perhaps this is an area that could benefit from poking and prodding at performance benchmarks). Or, a more abstract pattern could emerge, such as many users working toward the same step or goal while maintaining the same session over several time periods and devices. Does your experience help or hinder this process? Again, pulling a narrative out of large metric sets can be more telling and meaningful than trying to draw similar intel out of a one-off user session.[bctt tweet="Event tracking data tells meaningful stories to optimize #design - @MTTHWBSH"]
To recap, the biggest thing I want to get across is that, as designers and developers, we have to work together to be more thoughtful about responding to when, where, and how people are using our products. We can figure out the cases that we need to solve for by conducting research and pouring over analytics, but nothing can replace earnestly listening to and observing users. One way we can be certain that the majority of contexts are less painful is by creating performance budgets and sticking to them. There could certainly be dedicated blog posts to each of these areas of discipline, and several others on the actual execution, but keeping these focal points in mind could be the difference between a user feeling helpless at the airport, and a user feeling like, somewhere, a designer knows exactly how they feel.[bctt tweet="Keep context as your focal point in developing #userexperiences, says @MTTHWBSH"]