Every application developer or UI designer should be forced to sit next to a non-technical person for a couple of hours who uses a slow machine (partly because it's infested by programs and services that they absolutely don't need), while browsing the web or using common applications.
It breaks my heart how much precious time and nerves of these users we're wasting.
They use outdated devices, that still should work perfectly fine, but are grinded down by extremely slow programs.
They don't understand many of the fancy UI patterns _at all_. UI elements without text are the worst offender. Animations and hover effects routinely and reliably get in their way.
They get confused all the time because their UI changes: "I could always click the frobniz here, but now it's gone and everything looks different."
Their system is basically stuck in "dark patterns".
Their internet connections are often relatively slow and unreliable, but common software assume that it's always available going full blast.
To do even basic tasks, they are nudged into registering to this or that, when often a simpler, less invasive solution exists.
They spend ungodly amounts of time navigating stuff, while getting distracted by notifications, misleading information and so on. Often giving up in complete frustration.
that's because UIs are about the most uninteresting, unfun thing to program. If you have to do it, you sure don't want to do it for more than one platform.
No one wants to learn how to develop a proper UI either. For all the heatmap and eye-tracking and logging tools available, no one seems to be doing anything useful with the data they get.
Do you know it takes 3 or more states for Google Maps to load and start navigation from within it's own app? Try it. Count how many times you have to interact with the screen just to use the actual main feature of the app.
Here's another one: In Outlook, I want you to count the number of interactions required to attach a file to an email. You're free to use the drag-and-drop features, but you have to count every single individual action required to complete the task, including clicking Start, opening Explorer, navigating to a folder, etc.
These are critical tasks and features. And they require more work than using tertiary features. So, not only are these interfaces getting less and less responsive, accessing critical functions for routine/repetitive tasks are more convoluted than features no one uses, like the go offline feature in Outlook.
UI is the perfect storm of annoying mess for the type of coder that lives solving difficult problems. It's tedious work, takes a lot of effort and iteration but isn't truly challenging, documentation is usually spotty, etc. it tends to feel like a chore if you're not the type who cares deeply about user presentation. Plus, almost every social and mobile game needs lots of it. The supply of people who enjoy the work does not match the demand for the amount of UI work on a typical game project.
Awesome UI/UX is where everything falls apart. Everyone wants something different and just about everything beyond a rectangle with a few handy buttons on it actually slows productivity. Nothing's worse than waiting for an animation to complete so you can click a button you have to click 100 more times today. On top of that, people get bored really fast and then everything has to be overhauled for absolutely 0 gain.
I question the priorities of a developer who spends (wastes?) their time trying to dazzle me with bespoke UI. They should be focusing on dazzling me with the speed, efficiency, and reliability of the intended use of their program.
This could perhaps come off as excessively brutal, but it really is just my true experience in the industry - the worst UIs I have seen (both in terms of UX quality and internal code quality) have been made by that particular kind of developer has has never bothered to go a single inch outside of their little Java/C# box that they were given by their CS undergraduate course, and then, due to some reason like the company doesn't want to hire or move devs around, becomes the senior lead on some big UI piece.
The things I have seen...
Personally, I think that creating great UIs is not something that can be taught overnight. There is a certain kind of "feel for it" that I think that I have gained through my years of making them; something that I feel like cannot be taught, at least not in some "bootcamp"/"crash-course" way.
You hold UI Development in too high esteem. It is not a graceful and delicate art, narrated by a smooth voice as the hints of a beautiful interface coming together are seen as reflections on a developer’s glasses, contemplating the placement of pixels quietly and softly in a dimly lit room on well calibrated monitors, thinking of the people who will consume the content.
It is loud boiler room sweatshop where a low wage Javascript assemblyman slumped in his chair looks away from his laptop to eye the clock while his manager stands over his shoulder with arms crossed nodding his head and suggesting to give the page some more pizazz.
The fact that you have to know a dozen major technologies just to make basic UI that breaks half of the time should make you feel awful as an engineer.
I feel this way about UIs that are never stable enough and not configurable enough for us rubes to be trusted laying it out how we want.
Software is so flexible, yet we can't make UIs the way we want and are constantly subjected to the whims of designers and the buffets of fads. No way anyone becomes a master of using software because software apparently doesn't want that.
Most of us have probably violated all sorts of good UI principles out of either haste or ignorance, but our crimes are mitigated by the fact that for the overwhelming majority of software the number of users, and hence the number cursing the idiot who designed this crappy interface, is extremely low and/or constrained by the bespoke nature of the application; hence the investment in time and money to perform this level of rigour is not justified.
The only time I've seen UI work carried out with this level of care was for an air traffic control system, where of course the consequences of a poor design can have significant and fatal consequences.
Absolutely, I agree that it sucks. And that's why UI developers are building all sorts of DIY components, too many of which fail. But that's exactly my point.
reply