Why User Experience Matters in Programming
If we cast our minds way back to the 90s (if you’re old enough 😅) we can remember that websites looked very different to how they look today.
Back then the internet was growing and becoming more widely used and popular as a place to get information.
Look and feel didn’t really have much to do with anything as long as we could find what we needed.
If we put aside the fact that technology wasn’t as good as it is today for one moment, it’s shocking to think about how anyone actually managed to use certain websites.
If we take a quick peek at Yahoo’s 90s website for example, one might now look at it and think, what’s that all about?
And over time that’s exactly the question that users needed answers to.
The more and more we used websites, the more we required from them.
And if the website was too slow or hard to navigate we simply just skip it and move on.
That’s when companies and web makers discovered one of the most important things - user experience.
User Experience and Why It Matters
Since the 90s, there are now literally billions of websites available on the Internet and millions of software applications.
And when websites and apps are as abundant as grains of sand on a beach, standing out in the crowd is no longer just about what your site or application can do.
It's about how it makes people feel.
And it's about creating something that's not just functional, but also intuitive, engaging, and yes, even a little bit fun.
If we look at Yahoo’s website now, we can see a big difference:
We can tell exactly what content is on offer. We can see eye-catching images and everything is laid out nicely into categories.
Now it may not be the best website in the world, but my point isn’t to take a deep dive into the pros and cons of Yahoo specifically, this is just a quick example of a website that has had to adapt itself over time to meet the needs of its users so that they don't lose them.
User experience (or UX) isn't about any single interaction or design element. Instead, it's the total of a user's interactions with a product, system, or service.
Now, if you’re thinking,
"That's all well and good, but I'm a programmer. Why should I care about UX?"
Well, then that's a bit like a chef asking why they should care about how their food tastes.
Just like a chef could make the most extravagant meal but if it tastes horrible then no one’s going to want to go back to the restaurant, you could write the most efficient, bug-free code, but if the end product doesn't resonate with the user, it's unlikely to be a winner.
A focus on UX is not just a nice-to-have, it's a must-have.
It's what separates the apps we can't live without from the ones we uninstall after a single use.
It's what makes a website a joy to browse rather than a chore.
It's what turns users into loyal customers, and it's what can set your software apart from the mediocre.
User Experience and Programming
If you’re new to coding or learning how to code you might be thinking,
I want to be a programmer, not a designer. Why should I worry about UX?
Now I love this question because I myself was a UI/UX designer for many years before I became a developer and I like to think of it like this:
Imagine you're a builder constructing a house. You wouldn't just focus on the bricks and mortar, would you?
You'd also think about how the rooms flow together, where the windows should go for the best light, and how to make the space comfortable and functional for the people who'll live there.
Otherwise, you might end up with doors on the roof because it looks cool so why the heck not?
Jokes aside, having more holistic thinking when you’re building a project is what UX brings to programming.
So, how can you, as a programmer, keep UX principles in mind as you code?
It starts with empathy. Try to put yourself in the user's shoes.
Think about the following:
Who will be using your software or website?
What will they be using it for?
What are their needs and goals?
What problems are they trying to solve?
How can your software make their lives easier or better?
Next, consider the user journey:
How will users navigate your software or website?
What steps will they take to complete their tasks?
How can you make that journey as smooth and intuitive as possible?
This might involve creating clear, easy-to-follow navigation, providing helpful error messages, or making sure your software responds quickly to user inputs.
Finally, remember that UX is an ongoing process.
It's not something you do once and then forget about. It involves continually testing your software or website with real users, gathering feedback, and making improvements.
This iterative process can lead to better end products that not only meet users' needs but also delight and engage them.
Adding UX to Your Development Process
Nice so now that we know the importance of UX in programming, let's look at how to actually add it into the software development process.
Here are some things to consider:
User Research
The first thing you could start with is user research.
This is your chance to play detective and get into the minds of your users.
As mentioned before you’ll want to find out, what are their needs, their pain points, and their goals.
User research can take many forms, from surveys and interviews to observation and user testing.
The goal is to gather as much information as possible to inform your design decisions.
If you can’t find any potential users, perhaps just try asking the opinions of your friends and family, or asking a question in a forum.
Any form of information you can gather beforehand can help set you up on a good path for creating the best experience for your users.
And if the user is just you, that’s perfectly fine, it’s still definitely worth answering your own questions before you get started.
Prototyping
Next, we have prototyping.
This is where you start to bring your ideas to life. A prototype is a preliminary model of your software or website that allows you to test your design concepts and get feedback from users.
It’s like a rough sketch, giving you a chance to tweak it before you start really fleshing it out.
Prototypes can come in many forms, I won’t go into all the details however this article on Geeks for Geeks explains it pretty well.
Depending on what you’re building will depend on far or big you want to go with your prototype.
However, the overall idea is to be able to consistently gain feedback from your users so that you can improve your solution over time.
Usability Testing
That brings us to usability testing.
This involves getting your prototype in front of real users and observing them as they use it.
It's like a taste test for your solution. You're looking for any issues that might affect the user experience, such as confusing navigation or unclear instructions.
The feedback you get from usability testing is invaluable for refining your design.
If you’re working on your own, as many of us do often, then we often find that we may not use our products in the way that users would do.
After all, we’re looking at it all the time, so we already know where everything is.
Allowing users to test and use it can have interesting and surprising results.
Suddenly, something we thought was quite obvious is easily missed by users.
Therefore we can never assume what works and what doesn’t.
Iterative Design
Finally, we have iterative design.
This is the process of continually testing and refining your software based on user feedback.
It's not enough to make your thing once and call it a day.
You need to keep tweaking it, testing it, and making improvements until you have a product that your users love.
Going back to Yahoo, there’s a reason why if you look across the decades from the 90s till now, you’ll see a variety of different designs and layouts they’ve had over the years.
This is because they would have consistently gathered feedback from their users, and run things like A/B tests to really understand what their users want.
It’s okay if version one isn’t the final version.
The only version that matters is the one that people actually want to use.
Tools and Resources for UX
Now I haven’t forgotten that we are developers and not designers, however, you may very well find it useful to gain some more in-depth knowledge into user experience overall.
And if interested there are plenty of resources out there to get started, as well as tools you could use for your projects:
Books:
- Don't Make Me Think - by Steve Krug
- The Design of Everyday Things - by Don Norman
- Lean UX - by Jeff Gothelf and Josh Seiden
Blogs
- Nielsen Norman Group
- UX Magazine
- Smashing Magazine's UX Design Category
Podcasts
- UX Podcast
- User Defenders
UX Design & Prototyping Tools
Online communities and Forums
Usability Testing Tools
Conclusion
To conclude, part of the journey of becoming a great developer is learning how to build things that people want to use.
But of course, this skill will come over time, so in that process, it’s never too early to at least start thinking about the user first.
Remember, at the heart of UX is empathy - understanding your users, their needs, their frustrations, and their goals will set you up on the right path.
As you code, try to keep your users in mind.
After all, as we grow, we're not just building things for the sake of building things.
We're building things to solve problems, to make tasks easier, and to bring a bit of joy into people's lives.
So let’s build things that people don't just have to use, but want to use!
From your fellow ever-growing dev,
Cherlock Code
💙 If you liked this article...
I publish a weekly newsletter to a community of ever-growing developers, seeking to improve programming skills and stay on a journey of continuous self-improvement. Focusing on tips for powering up your programming productivity 🚀.
Get more articles like this straight to your inbox.
And stay in touch on 🐦 @evergrowingdev
Top comments (2)
That’s actually a very good metaphor as it shows that as builders these days in fact don’t give a 💩 about anything more than brick and mortar, the same way most developers don’t give a 💩 about UX over the boundaries of just making things work and match acceptance criteria from a Jira ticket.
Thanks for this great writeup @evergrowingdev