Web professionals talk a lot about the importance of writing great code. We should talk even more about providing great user experiences for websites and products we build.
Code quality is really important. We should have standards, and utilize them habitually. We should code with proper debug tools so we catch problems as they happen. We should document our work, embrace new technologies, and strive for excellent quality all the time.
But creating great websites doesn't stop there. Not even a little bit.
How useful is code that doesn't throw notices or warnings if what's painted on the screen isn't accessible across a broad array of devices, browsers, and user abilities?
What is a user experience anyway?
Wikipedia provides the International Organization for Standard's definition of user experience:
A person's perceptions and responses that result from the use or anticipated use of a product, system or service.
So user experience can be a positive, or a negative thing.
It made me a bit sad to see Google's use of user experience:
if a website degrades the user experience too much, people will simply stay away
The expectation, based on this usage, is that the website will degrade the user experience away from the web's intent no matter what; it's just a matter of how much. What a sad perception.
User experiences should be delightful
That's easy to say. No web designer or developer would tell you they intend to create a poor user experience in the things they build.
But just because we don't want something to be bad doesn't mean it won't be bad anyway.
User experience is design, and a process
We are creating a user experience from the time we begin a project. If we're not thinking about the user experience from the beginning, then we're still creating a user experience; it's just more likely to be a poor one.
Building the user experience is a process.
No, it's more than that.
It's a process, and a mindset.
We must continually design and build with the sole intent to delight those who utilize what we build, and then implement procedures to test our efforts.
Great user experiences embrace an imperfect web
To create a great user experience, we have to embrace the user, and the way they use the web.
Believe it or not, the average internet user is not on a 27″ Apple monitor with pixel perfect display. They may have an old monitor, a small monitor, or one that's off color, or one with no color at all (like a Kindle).
They may touch their monitor to use the web. Or they may use a mouse. Or a trackpad. Or just a keyboard. Or a screen reader. Or one of those awkward pointer things from their TV's remote control.
What's important is that we don't know what they might use to browse the web today, or in the future. Fortunately, with great analytics, we can at least know what they've used in the past. And when we start new projects, we should consider this past and attempt to estimate the future.
Not all users are the same
People are different. People are users. We all have different abilities — and disabilities.
We see differently. We hear differently. We touch differently. And we use all three of these senses using the modern web.
When we build web experiences, it isn't good for us to assume everyone's senses are the same. Our considerations for enabling excellent web experiences for as many users as possible are many.
The Accessibility Project is a great place to begin your journey building better experiences for everyone, and not just a good one for you.
User experiences get better with tests
Fortunately, building better user experiences don't stop at launch. Once the product or website is in a workable state, we can put it in front of real people and test our designs and assumptions.
We can do user experience testing all sorts of ways.
We can do testing with real people, remotely. Or we can do in-person, live tests. Live in-person testing can be formal or informal. If nothing else, I like to get my wife, a friend, or someone that hasn't stared at the project for weeks to give it a spin.
The key to testing is to remember that your test is going two ways. You are testing the user to see what they do, and testing your intuition to see where you have room to improve. Over time, our intuitive ability to create create great user experiences can improve because we've put our assumptions to the test.
Code is fundamental to creating great user experience
I started this post by stating that we talk a lot about writing great code and not enough about creating great user experiences.
That should not be interpreted as me believing code is not important. In fact, great code is fundamental to creating a better user experience.
Markup matters. Performance matters. Code definitely matters.
Code quality and user experience are part of the same conversation, but we sometimes don't balance them very well.
Intentional user experience design is central to creating a better web
And creating great user experiences doesn't stop for website visitors. It's important on the front-end and the back-end.
I'm not calling anyone out with this post. It's meant to be encouragement, and hopefully offer a few resources to help you out. Others offer great resources consistently.
Sometimes I find myself getting lazy about crafting great user experiences for those that use the web differently than I do. That's not good. I write this just as much for me as for you.
Hopefully together, we can make better, more informed, more strategic decisions so that we can craft better web experiences for everyone.