The Same User Interface Mistakes Over and Over
prog21.dadgum.com
prog21.dadgum.com
I would argue this is working as intended. The advantage of background notification rather than modal is that the user gets a choice. The user could very well decide that your EXTRA SUPER URGENT notification is, in fact, unimportant, and this right here is a perfect example.
No, I don't care if your bullshit app that I've opened a grand total of twice needs a 200 MB update. If anything, there should be an option to force old notification circles to go away after two weeks or so except for legitimately important apps like email and messaging.
I emphasized the word "implementation" above because it was not necessary for Apple to disable iTunes from syncing apps on to a computer with the thinned apps. Technically, there are many ways to store device specific copies of an app with the same name on the computer, which for some reason Apple has not even considered. [Apple never allowed downgrading of apps without resorting to iTunes, but that's a different and larger topic]
Overall, the push to use the latest version of any app is really frustrating and will result in more backlash as people realize how much freedom they're losing.
But I don't begrudge the developer of a client-server app, that wants to change their server's API and then push an update to the client that speaks to the new API. Or, more to the point, I don't begrudge them if six months later they shut the old API down and the app stops working until I update. It's a client-server app in an ecosystem where updates are supposed to be automatic; of course it needs to be up-to-date to work. Would you expect to play e.g. an MMO without installing the updates before connecting to the server?
Let's apply this metaphor to programmers working on UIs: a huge chunk of practitioners right now get by via simply having learned a bit of CAD (i.e. HTML/CSS/JS). And also, yeah, they have walked over a bridge once/seen a panoramic postcard, so there's that. Very ad-hoc, very disorganized, full of gaps.
Of course the impact of mistakes is magnitudes different between designing bridges and building UIs. Except for when that UI drives medical automation. Or finance (one of my faves is an anecdote about how a bad input form field cost a fund management company literally in the 8 digits of money).
Our industry is of course very young, and so I think this education gap is simply a temporary issue. I am looking forward to (and am personally investing into) a day when there will be a more systematic and comprehensive education on how what a good UI looks, behaves and feels like, not just how to code buttons and boxes on a screen.
A good example is packaging: "The Consumer Product Safety Commission estimated that attempts to open packaging caused about 6,500 emergency room visits in the U.S. in 2004."
E.g. clamshell/tamper-proof packaging is awful (I like calling it "customer-proof"), but the goal to reduce theft is a much higher priority than making it easier to open.
I believe that until there is some effective, easy, and universally-accepted metric of UI quality, there will be little to differentiate good designers from poor. ("Our UI meets UIQC Class 1 Standards", or in a specification, "All user screens must score level 96 or better on the UIQC test", or some such thing.)
Bear in mind that the UI itself is just a part of the equation, alongside the user and the usage context. Two identical UIs (evaluated at about the same score with the hypothetical UIQC) can perform radically different in the hands of the end-user, because the users and their contexts are different.
That's not the building bridges level engineering that the parent talked about.
In fact, any designer/CAD hack in some factory can get his hands in building packages or other physical items, so the situation is mostly the same as the one the parent criticizes. In most countries you don't need to have an engineering degree to design a package container, kitchenware or a toy car -- at best an "industrial designer" degree will do.
As a consumer, I don't like these because the lock portion often obscures an important piece of information on the box. They also don't work for packaging that's designed to be manipulated on the shelf, e.g. boxes with a magnetically attached book-style cover that let you examine the product or read more information by opening it [1].
They're not ideal for retailers, either. They detract from the the aesthetic appeal of the packaging - reducing sales - and increase labor costs by adding extra steps (and, thus, time) for employees stocking shelves and working at the POS.
EAS systems (the little RF tags that are deactivated by placing them on a pad at the POS) are probably the best things going right now for passive deterrence, but they have their own set of problems (e.g. false positives).
1. https://www.americantheftprevention.com/uploads/2Alarm_Mini_... 2. http://www.pcgameware.co.uk/images/CM-Storm-Pitch-Pro-Gaming...
That said, the state of blisters has improved, precisely because people complained about how easy it is to get injured with the older, plastic on plastic blisters that require either heavy duty scissors or a box cutter, and leave behind very sharp edges.
If you get an "emergency room visit" for trying to open a package, there's also some sort of idiocy involved.
I wonder if the level of E.R visits would for perfectly designed packages wouldn't be close or similar, because of idiocy.
Well, I've cut myself too. That's not the problem.
It's the E.R level injury though that I say implies some incompetence.
And if they have "blood disorders that could prevent blood from clotting", they shouldn't mindlessly be using knives and other sharp objects to open packaging.
But outside of life support products, I would guess that the majority of product development is only as disciplined as it needs to be, for what's being made. A lot of stuff is designed by seat-of-pants, by people sitting at CAD stations who mostly have engineering degrees but don't engage in engineering and have forgotten all of their math and theory.
The level of organization and discipline needed to do things like design airplanes is done by the segment of engineers who enjoy that discipline and gravitate towards those industries. People who prefer to do seat-of-pants design find their own niche as well. At my workplace, I can't count the number of times I've heard: "But we don't design airplanes here." Our stuff works when it gets to the customer, but if you scrutinize our designs the way we've all been trained to scrutinize UI's, you'd be horrified.
https://en.wikipedia.org/wiki/Air_France_Flight_447#Human_fa...
A UI that is "easy to use", "intuitive", "has the things you use most front & center", etc, are all soft subjective terms. Even when you run stats over a population to try to find generic mediums, those overall expectations will change over time as well.
This annoyance has been widely extant for ten years or more - I think I first experienced it with google maps as I believe they were the first to zoom with scroll ...
Seems easy to fix - sub window elements in the browser cannot zoom until clicked on ?
It's amazing that behavior made it through one browser version iteration.
I first saw it at netflix - instead of a search box in the upper right, there is a picture of the word search and if you click on that picture of the word search it becomes a textbox[1] that you can type into.
As if that's not bad enough, the word "search" can turn into a textbox faster than it takes to fully load the control, which means you get the textbox but cannot type into it for another few moments.
How much of an unimaginable asshole do you have to be to pervert a basic web UI component like this ?
[1] No, of course not a real textbox - some 50 kilobyte control from some web-authoring toolkit that masquerades as a textbox.
...for using Reactjs badly. IFTFW.
First, they could have had the item as a search box from the start, no need to make a label that when clicked turns into a search box.
>* If you have to refresh 90% of the search results page anyway, why use React? Building and diffing a VirtualDOM isn't cheap*
Actually it can be as cheap as directly changing the DOM with JS. And diffing can be just a single op e.g. when using an immutable data structure for their always changing part of the data.
It's just a change done crudely, not even non-optimized, because it doesn't need that much optimization anyway.
The fact I was using a mobile device didn't stop my provider's site from asking three times if I wanted to take part in a survey, or from displaying a floating "Would you like to chat?" dialog that was so big it literally covered a quarter of the mobile screen - and which moved to the same position whenever I try to scroll it out of the way.
It also didn't help my provider provide the right links to the right content.
Eventually I gave up. My gf already had data working, so we used her phone for everything.
The experience was impressively terrible.
Unfortunately if you don't have UI clue, mobile is just another way to get stuff wrong.
Except for cryptic icons, those seem on the rise again.
As a scripting language, TCL is terribly designed (but beautifully implemented). But all that mattered at the time was that there was a scripting language that was present at the time the GUI tooklit, Tk, was designed (so they did not overlap and squabble about what they were trying to do) -- not that the scripting language itself was any good. (Personally, I'd MUCH rather be programming GUIs in PostScript than TCL, which is what I did before, for the previous port of SimCity to NeWS.)
The fact that TCL was an integral part of the design of Tk from day 1 made it possible to use the scripting language for what it was good for, instead of Tk trying to do that in a half-assed non-turing-complete way: to glue everything together and do all the dynamic symbolic stuff, binding events to handlers, creating objects, naming them, plugging them together. All with wonderfully flexible simplicity and generality. Instead of trying to wrap the X Toolkit Intrinsic's and Motif's lame overlapping and incoherent attempts at object oriented programming, configuration, skinning and event handling in C and .XDefaults files.
Here's a typical TCL file that creates an instance of a SimCity editor window (it's more complex than a typical less dynamic TCL gui, since it's capable of creating any number of independent editor window instances, which is why it uses a $win prefix for everything it creates):
https://github.com/SimHacker/micropolis/blob/master/micropol...
No matter how much you love Lisp, WINTERP was still just using it to wrap Motif, even though Motif was suffering from a terminal case of Greenspun's tenth rule, and contained its own ad hoc, informally-specified, bug-ridden, slow implementation of half of Common Lisp.
Here's WINTERP:
With a tool like Interface Builder (which I'm not saying is good), at least it gives you guides for the standard places that elements should line up with each other. Sometimes you want the baseline of the text of various elements to align. Sometimes you want to ensure the same padding around elements. All of that typically goes out the window when interfaces are designed via code, in my experience.
Furthermore, the author seems to advocate that UIs should be disconnected from events. I can't think of a useful UI element that isn't tied to some event. I'd love to learn more about what they mean, but right now, it's not ringing true to me.
The lines are blurred in Rebol because code is data and data is code.
>> the author seems to advocate that UIs should be disconnected from events
I don't think the author is advocating this because both TCL/TK & Rebol View rely on events.
However I can provide you with some HN comments that contain Rebol GUI code that I've posted here in the past:
* https://news.ycombinator.com/item?id=7069311
* https://news.ycombinator.com/item?id=8624722
* https://news.ycombinator.com/item?id=9570049
NB. If you follow the thread up in the first link you'll find GUI comparisons with TCL & other languages.
You may find more insight into the authors mind from snippets found in previous posts:
http://prog21.dadgum.com/159.html - "The best attempt I've seen is the UI description sub-language of REBOL. Creating a basic window with labeled buttons is a one-liner. Clearly all wasn't perfect in REBOL-ville, as a burst of excitement in the late 1990s was tempered with a long period of inactivity, and some features of the language never quite lived up to their initial promises.
These days HTML is the most reasonable approach to anything involving fonts and images and interaction. It's not as beautifully direct as REBOL, and being trapped in a browser is somewhere between limiting and annoying, but the visual toolkit is there, and it's ubiquitous. (For the record, I would have solved the "list all the filenames..." problem by generating HTML, but firing up a browser to display the result is a heavy-handed solution.)"
http://prog21.dadgum.com/66.html - "A handful of language designers have tried to make GUI programming as easy as traditional programming. The Tk library for TCL, which is still the foundation for Python's out-of-the-box IDE, allows basic UI creation with simple, declarative statements. REBOL is a more recent incarnation of the same idea, that sample code involving windows and user input and graphics should be a handful of lines, not multiple pages of wxWindows fussing. I wish more people were working on such things."
Check out Material Design by google - its been a lifesaver to me who is from a very technical background. Best part is with very little work you can really impress your bosses !
Good Luck
But I do not have the time to go back and do another degree on design. Try convincing people with money to shell out extra for someone with good design experience.
I guess once we have millions of customers we might have to think about it - but small companies without much resources its hard to justify spending a lot of resources on good design.
Yet I am primarily responsible for the UI on the product on which I'm writing code. I started out with a bland and crappy interface expecting the client to look at that and provide their branding and suggestions for how it should work. Most UI elements are their default colors. Style? Please, I'm an engineer! I thought at some point they would provide a detailed list of requirements to provide a decent UI. I thought wrong.
I have done what I could to provide an easy to use intuitive interface. Unfortunately what is intuitive for me is not going to be intuitive to others.
Eventually I did receive some usability suggestions. I'm not sure they were carefully thought out. One point I would have suggested aligned with a marketing video on their web site but did not match their requirement.
Until producers of products of products care about the appearance and usability of their products, these things are not likely to get better.
As for my own feelings about UI, there are a few beliefs I hold deeply.
If a UI can model some sort of physical reality, it is going to be easier to use. If not a physical reality, at the least a consistent model.
I hate UIs that change depending on state. Disappearing menu items or screen elements drive me nuts. Think of shifting sands.
Discoverability is something that concerns me. Much of the S/W I work with has options or key shortcuts that I never know about because I'm too lazy to read through the manual. I do not know the solution to this, but I do know the problem.
A well respected interaction designer was so kind to give me her 1st edition many years ago and I still find myself coming back to it regularly.
New and updated 4th edition:
https://en.wikipedia.org/wiki/Special:BookSources/9781118766...
It's a great book, but also a very long read. As a developer who is interested in developing usable apps, but not in being a full-time UX designer, I've found that I've been able to pick and choose the bits of the book that are relevant to the tasks I'm working on. It helps if you've read the introductory bits, but later on it has sections about web, desktop, mobile, etc. that are useful on their own. It's almost like having several books in one.
Like this (for a horizontal scroll bar):
<||> =============================
instead of this:
<|==============================|>
Cool. Later I heard from someone that some OS/GUI platform actually has his improved version - I forget which.
https://developer.apple.com/library/mac/documentation/UserEx...
Please explain the OS X iTunes UI to me. It's beyond awful, and it seems to get worse with every update.
If there were a death penalty for bad UI designers, and I were in charge of implementing it, I'd have the iTunes designers first against the wall.
My guess is that iTunes doesn't follow Apple's guidelines?
Now cycle through app-windows with command-` and see how that works .. completely differently.[1]
So yes, even the wizards can get it wrong[2].
[1] command-tab has a proper "memory" allowing you to command-tab back and forth quickly between the two most recent apps. command-` is just ... weird. It sort of preserves sequence ... until you let go ? and then reverses sequence ... or something ? 8 years into OSX and I still am not sure what the algorithm is.
[2] Not saying either is the right one - but they are both different, so one of them (as far as apple is concerned) is wrong.
Or maybe each of them is appropriate for the (different) tasks it has to do?
At this point, my hopes are low.
E.g. drop down menus are a fail.
If you read Raskin's "The Humane Interface" you can see a whole host more.
Raskin, Jef 2000.The Humane Interface, Addison-Wesley ISBN 0-201-37937-6
Well, Raskin also has some bizarro ideas about what a good UI should be, and his later attempts of realizing one is not anything most people would want to use.
or
not everyone can drive a Ferrari