Good UI is Worth the Investment

Good UI is Worth the Investment

As software designers and developers, how often do we think about — or even put ourselves in the position of — the users whom we’re creating software for? How often have we had to use a poorly designed software (regardless of whether it was a native or web-based app or API)?

I admit that, in my formative years of writing software, I gave users scant regard. I wrote what I was told to, or what I thought I needed to.


What’s more, I also fell prey to the “more is better” mentality; a mentality that still pervades the software industry (and so many others). It was hardly ever – if at all – about the end user or about simplicity.

At least by my observation, it was quite common to feel that we, the software developers, knew what was best. After all, we are the super-smart technical people. Right?!

And, if you thought it was only software developers who did this, I’ve known more than enough systems administrators that, if only half-seriously, joked about their servers being perfect. “Oh, if not for users” they would opine. Then, everything would be fine.

Over the years, though, my perspective has changed!

Perhaps it’s the time of life that I find myself in now. Perhaps it’s enough years of using bad software, websites, and APIs, and becoming every bit as frustrated as anyone else. Perhaps it’s reading others’ code, or looking back at what I’ve written in the past.

Sorry. Again.

Regardless, these days, good design is very important to me. Why? Consider for a moment if you’ve used software that was:

  • Convoluted
  • Had options that were hard to find, were poorly organised, or were poorly named
  • Required numerous steps where fewer would have sufficed

Then, there are the more insidious examples. At first glance, they do largely do what they need to, without any sense of over-complication. But, on closer inspection, key features are missing or hard to figure out.

Let’s consider some real life examples

Apple Trailers

Take trailers on Apple Trailers, an example of which you can see in the screenshot above. If this is your first time wanting to watch the trailer, at first glance, how do you watch it?

Yes, there are two links to trailers underneath the main image. And, if you clicked either of them the respective trailer would appear and start playing.

But, would you know that, if you waited a little while, the main image would switch to be a video of the main trailer which would then autoplay? Doubtful.

Secondly, do you want to wait to start the video? Or, do you want to start it straight away?

Messenger and WhatsApp

What about deleting apps in Messenger and WhatsApp? In the screenshots above, though in German, you can see that a previously sent attachment was deleted and is no longer available.

The message reads:

The attachment is not available (Anhang nicht verfügbar)

The attachment was either deleted or the person that shared it didn’t have the permission to share it with you. (Dieser Anhang wurde entfernt oder die Person, die ihn geteilt hat, hat nicht die Berechtigung, ihn mit dir zu teilen).

Question. If the attachment was deleted, why is there a message saying that? You didn’t choose “Delete message and let others know”. You chose “Delete”.

That said, leaving a note behind may help others in the chat know, if they had seen the item and were wondering where it had gone, or if they actually had seen it at all. So, this functionality could be quite helpful.

However, it could also lead others to wonder why the message was deleted. Did someone have something to hide? Were they not confident standing by something they said or shared?

Either way, the wording of the option has to be updated to reflect the actual functionality, or the functionality needs to properly reflect the command.

There are worse examples, though…

While these examples are quite simplistic and, basically, harmless. I’m sure you can think of countless others that are far worse.

For example, Microsoft Windows Software Update.

Or, having to click the “Start” button to shut down Windows in Windows 95, 98, etc. I never had an answer to why you’d have to do that, when my mum, as a new computer user, asked me, years ago.

And what about these examples?

Together, let’s do better!

I’m tired of using software that looks and feels like no one really thought about:

  1. What the user needs it for
  2. If the user experience is accessible, logical, intuitive, and appropriate

I hope you are too!

Sure, this is more of a statement of intent on my part. I know that there will likely be plenty of times where I’ll need to use software that is poorly designed, and (if only in my mind) could have been designed better.

However, I’m writing this in the hopes of encouraging you, if you don’t already, to put more thought, time, and effort into the interface of the software you write.

I’m realistic enough to know that, as software developers, we’re not always given time to do this. There’s a never-ending list of tickets to work through and meetings/stand-ups to attend.

What’s more, we’ve all experienced managers, project managers, and clients who, even for the best of reasons, may not appreciate the importance of proper UI design.

But, I want to encourage you to do what you can, when you can, all the same; to write software with well thought out user interfaces that lead to good user experiences.

You might also be interested in these tutorials too...

Dockerfile build arguments go out of scope
Fri, Jun 14, 2024

Dockerfile build arguments go out of scope

When you’re writing Dockerfiles using build arguments (which you should) it’s important to keep their scope in mind. Otherwise, you’ll get very frustrated (more than likely).

Fri, Apr 26, 2024

Remove Package Manager Caches for Smaller Image Sizes

Keeping images small is a key Docker best practices. But how do you do that when you need to install packages for your application to work? One way is to clean out package manager caches. In this short tutorial, I’m going to show you how to do that with Debian and Alpine Linux base images.

Live Reload Go Projects with wgo
Fri, Apr 19, 2024

Live Reload Go Projects with wgo

Building web apps in Go is extremely rewarding. However, as Go’s a compiled language, to see changes, you need to restart the app. Needless to say that’s quite tedious! With live reloading, it doesn’t need to be.

Restrict HTTP Request Methods in Go 1.22
Thu, Apr 11, 2024

Restrict HTTP Request Methods in Go 1.22

Restricting HTTP request methods, when working with net/http prior to Go 1.22 was a little complicated. However, that’s all changed. Now, it’s pretty trivial. In this short tutorial, I’ll show you the new approach.

Want more tutorials like this?

If so, enter your email address in the field below and click subscribe.

You can unsubscribe at any time by clicking the link in the footer of the emails you'll receive. Here's my privacy policy, if you'd like to know more. I use Mailchimp to send emails. You can learn more about their privacy practices here.

Join the discussion

comments powered by Disqus