Modern software design is bad and becomes more user unfriendly with every iteration we allow it to become more “innovative”. We should be more conscious about the present false innovation and stop using products that don’t honor predictable user interfaces. They make our lives more difficult, one user interface update at the time …
Dynamic stuff is unpredictable and sucks
For me, peak productivity user experience (UX) was probably Windows 2000. Most applications looked and behaved similar, and user controls were focused to be functional and slim. To me, those controls looked not beautiful, but also not ugly. They were ok. More importantly, people could do the things they needed to do without worrying to much ever changing user interfaces (UI). We learned the programs that we needed at that time, but in the end the desktop was a fine machine and it did what it should do most of the time.
Things were fast back then! That’s like 22 years ago. Oh boy, I wish most modern software was as snappy as most stuff was on Windows 2000. We were fast at doing things. And I mean really fast! We were able to memorize workflows and rely so much on muscle memory. This was good, because as a teenager with too much energy basically everything was always too slow. However the UI was keeping up with this energy and despite we didn’t had a SSD back then, everything just felt much faster (unless you run out of RAM and the system started trashing, at which point your desktop computer just kept shooting itself into oblivion and you could only help them on their struggle by choking them with the power button). Thing were good back then (TM).
Over are the days today where muscle memory is something you could achieve, that is valued or even respected. The new hot stuff are dynamic widgets, “last used” items and UI that reload themselves half a second after they first show their stuff. I deeply dislike those features and design principles because I think they lie to the user. I am someone who wants a predictable UI that doesn’t lie to me. I want to work with software and slowly get muscle memory. Modern software design patterns however just does not honor users like me at all, at least not for most of the web and or mobile applications.
Things would be somehow acceptable, if those horrible design patterns would be limited to dumb mobile devices. However we see more of those design principles finding their way into normal computers as well.
Let’s take the Windows 10 settings as an example: Whenever I want to install Windows updates, I go to
Settings. Once it shows up I have less than a second to click on “Updates” before the view gets refreshed and a new item shows up, thereby rearranging the grid view and with it the position of the
Update item. More than once I was just a moment too slow and then misclicked on the re-arranged (wrong) item. This is annoying and is exactly what I meant earlier with the feeling of the UI lying to its users. It appears more snappy because it hides the latency to load all items but in the end pretends to be loaded when it isn’t. At best I got a “preview” of the actual UI, while the actual end result still takes a second or two to actually show up. In the meantime my muscle memory already wants to click on the
Update item because it is already there.
So, because the UI pretends to be ready so that it can appear faster, there is a race between my muscle memory and the UI. Typically I win this race, and get angry if I don’t. Those misclicks are an annoyance, especially because I have the feeling that I did everything right (the UI changed just before I clicked!) and I’m hardly the only one to find them unnecessary and a bad practice.
If a user interfaces changes a second after it shows up, it is lying to you. It hides latency, and as someone who prefers predictable UIs I often misclick. This makes me angry and I immediately hate your fancy interface.
As stated before, mobile devices are even worse here. Android has a horrible user experience - and Apple is not better here either. In the holy mission of creating a snappy and fancy feeling, the user interface constantly lies to us by pretending to be fully loaded and then re-shuffles the buttons just one moment before I want to click on them. The reason is that most apps reloads the UI contents with information from the cloud or god-know-where-else-from. While this might be a legitimate case for some instances, I say that for 90% of the use cases this is unnecessary and just done “because everyone does it”. This is a bad justification for creating a high latency UI that ultimately doesn’t serve the user but the aim to create something fancy with cloud synchronization so the “experience” is improved.
I however deeply reject this framing. I prefer a UI that doesn’t lie to me over a synchronized history of playlists across all of my devices, which I don’t need in the first place. You are destroying the user experience with this.
The tendency of cloud synchronizing and making services device agnostic per se it horrible as well. Most of the time, I do want devices to have their own character and configuration. I do want to have the a device configuration possibility that is not synchronized. Let’s take Spotify as a random example, but you could replace it with basically every other modern app with cloud-user profiles nowadays. They all suck the same.
The playlists that I use to play are device context sensitive. On my work laptop I mostly play work music, while on my mobile phone I mostly play my running and home playlists. On my desktop I play a mixture of concentration and relaxation music (plus some very weird playlists that I hope nobody ever sees). Why on Earth should I want the last played playlist to be the first item to show up in the home screen of the app?!? For me, it does not make any sense to sync my play history from one device to the next one. “jump back where I was before” - No, I just left work and don’t want to jump back where I was before - why would you even suggest that? I have my phone in my hand and want to go for a run. The playlists that I previously played on my laptop have no relevance in this context. Why do you even sync those things? I want a configurable home screen with my most 3 played playlists that I can choose and nobody asked for this stupid playlist history sync in the first place and it just makes your app slower than it needs to be.
Why do I need to wait for 2 seconds for the list to be synced from the cloud when I start the app up? Not only I don’t want to have this feature it also makes me angry every time I start the app, because it makes it on average 1.9 seconds slower than a stupid music player should take to load the home screen.
To give you a counter example: Nextcloud Notes is simple and fast. Even when on the go the app loads and syncs in 90% of the times in under one second. It’s fast, slim, non intrusive because it does not more then being a simple note taking app. I switched from Evernote 2 years ago and am not looking back to half a minute sync time before I could add “Milk” to my shopping list just to avoid sync conflicts. C’mon that’s just ridiculous.
To summarize, my main issue with modern UX is that it tries to predict what the user wants while oversimplifying things and eliminating many places for customization. Atop of that it constantly lies about it’s own state by presenting a incomplete “preview” of the UI while it loads cloud-content that is very often unnecessary.
The consequence is that we completely loose a “predictable workflow”. This is a necessary requirement for establishing muscle memory and get fast at doing things. It annoys me to the bone that this is something that we have apparently given up, probably because it requires stability and patience to get to it.
UIs change constantly nowadays and we all are super annoyed by it. I am puzzled why we swallow it, probably because someone decided to label it as “innovation” and nobody is against innovation, right? But real innovation is not about shifting buttons around and praising yourself about how this increased user responsiveness by 20% (while the main underlying design already decreased it by an order of magnitude). Somehow we have learned to take it for granted that UI designers constantly shuffle our buttons around, tell us how we should use things from now onwards and that is normal to have to constantly re-learn how we are going to upload a stupid photo or where we find our music.
This is bad for us all. I petition for more predictable, fast and less over-engineered UIs that respects my established workflow instead of interrupting it every two months. Changes are still necessary and they are always an interruption. We should acknowledge that design changes are an interruption and only do them, if we have good reasons to do so. In addition we should be aware that muscle memory and user workflows are precious and should not interrupt them unless there are good reasons for doing so. And not often. I say this twice here, because I believe this is important.
Technology is there to empower user. It is a tool that allows people to do things. Nobody wants to use a hammer that behaves differently every two months. If I have to re-learn your UI when I have established muscle memory then I get annoyed. I might simply decide to not use your amazing tool that can do everything just because you are so innovative but fail at being useful. I did this a couple of times and stopped using services as a customer because of this.
Simple designed user interfaces, that don’t oversimplify things and don’t lie to the user might not be as shiny as the crappy modern UI things we are used to. But they are definitely better for our workflow and our sanity. I want a bit more of the good old Windows 2000 behaviour back, and a little bit less of the fanciness that drives us all crazy, one tiny bit at a time.