We need UX, not UI!
My experience of most products and apps is very poor
Have you ever gone to a web application, maybe to register or buy something and it is just really, really, slick? You come away surprised how easy it was. You press only as many keys as you expect and get the response. For example, lots of Cable Companies have a page “are you in my area” where you enter a postcode and press [enter] and bang: “Congratulations, we do provide services in your area, click here to check pricing” or whatever. You know that you need to enter a postcode and then bang.
Unfortunately, most sites are NOT like this, not even close. You end up pressing way more keys than you need to. The seemingly now defunct site webpagesthatsuck.com very famously in the mid-1990s showed various mistakes that were common in poor web sites like:
- The home page is too long
- “mystery meat” navigation
- It doesn’t work in all major browsers
There are also things that are less of an issue today like not using Flash but the point being that it was laughable that people made so many basic mistakes except…“when it is your own website”.
Examples of poor design patterns in 2025
- Use of a front-end framework that is not optimized and therefore makes 10s or 100s of API requests when it could have been done with a single back-end request. This leads not only to slow-loading but worse, it causes inexplicable errors if some of those backend calls don’t work but others do. Very rarely do those individual errors propagate in any meaningful way to the front-end. A page load error and the only option is to Refresh and do the whole thing again. Likewise, a broken API endpoint is missed for a long time because its effects are not important enough to be noticed leading to pollution of the console when trying to debug other errors.
- Unhelpful input/validation messages that could have been avoided. e.g. “Please enter your vehicle registration with no spaces”. Why? Let them type spaces and you remove them in the back-end. Honestly, it would be quicker than typing out that hint. If you cannot do this, shame on your lack of skill/knowledge/choice of framework or Management. e.g. “Invalid code. The format should be two capital letters and 10 to 12 digits”. Again, people will often type in lower-case because that is easier. If lower-case is never valid, convert them on the back-end to upper case and then return the result!. Really. Do that. (This was on a VAT code lookup site for the EU. Which company writes these apps for the EU and doesn’t know how to do that?). e.g. “Invalid number, please check and re-enter” why? accidental space at the start or end. Answer? You guessed it: trim it on the backend before validating it.
- Validation messages that don’t tell you what is wrong. e.g. “There is a problem with the address. Please check and re-enter”. And the problem is? No idea. Did the system attempt a lookup into a database and couldn’t find the company? Did it find something similar but different? Does it expect the county to be the full word instead of an abbreviation? Who knows. Lazy, lazy, lazy.
- Putting too much on the summary page. It isn’t a summary if it has 25 snippets of various random facts. A/B test it. Move things to the top that are being clicked on a lot, move the other stuff down or even better, remove it completely. If I want to find my bill, I can find it under the billing menu, I don’t need a random fact on the summary page like “Last bill was £25”, what are the chances that this is what I was looking for and can logout now? Just because you have data, doesn’t mean it needs exposing in all its glory. This is also partnered with having far too many top-level menus. You probably shouldn’t have more than 5 top-level menus. At that point, if you click into billing, then you might have Payments, Bills, Payment Method etc. where you would expect to find them. Not having these at the top level doesn’t violate the rule of “fewer clicks is better” because it helps with cognitive load to not have to read through 30 menu options to make sureyou go to the right place.
- Inventing your own esoteric security mechanism. Passwords and 2-factor possibly offering SMS (I know!), authenticator app and passkeys is widely used, well-known and acceptably secure. Why am I seeing businesses doing things like “2-factor by sending a code to an email address that is NOT your registered email address”. “Type in a code that we will ask for random characters from” - how long does that take to work out? What are you protecting against?
- Basics like not supporting the [Enter] key on, say, the page where you ask for the 2-factor code to be entered. Poor use of hover which makes it unworkable on a mobile and unecessarily picky on desktop. Move the mouse 2 pixels and bang, the menu has gone! Most people don’t give a toss about your “fresh design”. It’s fine to look nice but give it a rest, people want to find what they need, not watch pointless animation of elements that look “really cool”.
- Asking, “how did we do?” every single time someone interacts with your business. You know what? You should know how you did without asking. If someone called to change their address, you answered the phone quickly and changed their address, what exactly are you expecting the person to say? If they have called up for the 5th time to change their adress because it hasn’t worked? Guess what? They think you suck. Amazon do it, “how was the delivery?”. My opinion is that I ordered something and it was delivered, what do you expect me to say? Again, you should already know. Of course, it’s fine to point people to a place they can make a complaints and to be honest, you should be unashamed about this because if you are running your business properly, you won’t expect too many complaints and should deal with them.
- Using dark practices to trick people into doing things you want them to do. Like when you offer them the new “AI Assistant” and the options are “Yes” and “Maybe later”. No, the other option is, “I really don’t want to use this thing so don’t ask me again”. Or when people try and get cool by changing buttons like “Good” and “Bad” into “Amazing” and “Not so great”. OK, Good and Bad might not be quite right but really? “Amazing” is not the same as “Good” if you expect people like me to press “amazing” when something was just good, I won’t and you miss a data point, just get over yourself.
UX, the missing skill
I think the truth is that businesses often recruit UI positions before they employ UX and I would say that is the wrong way round. UI people, probably designers, obsess over things that your customers literally care nothing about. That slightly different shade of green, that lighter grey subtle text effect and the pinstripe button outlines with just a hint of shadow. As the saying goes, you are often missing the wood for the trees.
Some software looks horrible but people buy it because: It works consistently; it doesn’t get changed every 2 months because of the latest design fad; the interface is snappy and responsive; the controls and menus are all where you expect them to be (not the Material Design “Add” button by itself in the bottom-right where no-one can see it).
You should instead recruit a UX designer. They can use whatever Bootstrap type UI framework you want because: no-one except front-end devs cares. Bootstrap had scss from the beginning (well it was sass originally), so Bootstrap websites don’t need to look like it. However, the UX is crucial because that person is your customer. They try and ask random questions of your system like, how would I expect to find the latest bill? How easy is it to search for stuff? Do the search results return far too many or nowhere near enough results?
The UX Designer will then challenge the development team to remove those cringing friction points like validation errors that the system could easily fix or lazy error messages that don’t describe what the user did wrong. If you did that, you will get happy customers who won’t get angry when your automated phone system spends 30 seconds of you life saying, “did you know, you can do loads of stuff on our web site…..”!