Example: My grandmother has a smartphone for keeping in contact with the rest of the family. I recently got to embark on the adventure of trying to navigate the morass of software installed by other family in order to get the bloody thing to stop stressing her out.
The root cause, of course, was that other family members and friends had various games installed that they played to pass the time which would blast out request to other contacts on their phones or through push notifications.
So poor Gram, who still starts SMS texts with "Dear X" is getting stressed out because she is constantly being pinged by these requests to play this trivia game and nothing else, and Gram is, of course, not the type to want to raise a fuss over it, yet is clearly disturbed by it. Mom, and other folks who have Gram as a contact/friend on Facebook who partake of this game are either blissfully unaware of this aspect of the game, unable to figure out how to disable it (if indeed, one is lucky enough that the game actually supports it), or can't be bothered to after being notified of it.
So. Okay. Deep dive required. So in I go. That deep dive was one of the most infuriating computing experiences I have ever endured in someone's stead.
A)inevitable (App÷) app clones with subtly different interfaces/menu structures, inconsistent names of feature controls.
B) There was a lack of either accessible, accurate, or useful documentation.
C) Integration with other Apps were clunky/painful at best
D) In order to block all spam from this one app and to maintain message reception from the contact in general generally meant tweaking settings on the Contact, the App receiving notifications, and bloody Facebook.
E) not even going to go into the fact that it would most likely change somewhat between handsets/networks.
Now, I generally try not to be too judgemental of the users I shepherd, or what goes on their phone/device. I will generally bend over backwards to accomodate and facilitate a smooth workflow and experience for everyone involved.
After having sat down though and gone through that experience, however, I've opened my eyes to the struggles that these abominations of attention monopolization, and lord knows what else are exacting on us.
You can try to handwave it as failure to adapt to technology by a 90 year old, but do consider, I'd gotten Gram fluent in terms of finding her way through her desktop for most of her typical workflow before. Before the last 5 or so years, most interfaces were similar enough experience was somewhat portable between tools due to generally consistent UI conventions. Coordination of messaging is generally not a hassle for her and she does it for her community simply because she knows how and has a system, and doesn't have much else to do. What is a problem for her though, is having to try to create a new mental model that could accomodate the fact that some ingrate who she had never met implemented a bloody trivia game, that doubled as a DDoS on her through the unwitting accomplicery of her bored contacts/family who didn't know better; and every one of us just accept that as normal.
Hey, those offensive dark patterns (social integration of a game to drive engagement) gets better metrics! Who cares is some old bitty can't get with the program?
Good software empowers, informs, and guides the user in it's use.
Good software should not inflict undue suffering on the User, or other's due to the ignorance; especially not when said harm is only justified through additional convenience afforded the developer
These aren't hard concepts to grasp. Yet more and more particularly in Mobile software, but also in web apps, we throw these concepts right out the window.
It is repugnant, overwhelming, infuriating, and distressing to even me that of all the outcomes ubiquitous adoption of computing would facilitate, the landscape would be so drastically tilted against anyone but an informed developer.
Write your command-line app and distribute it to the user who's joy it is intended to evince. Document, and ensure it's flow can help them become better with it over time. No one cam judge you for that. However, when lines start getting crossed is where the entirety of a technological experience for a significant population of users actively degradez their quality of life through no fault of their own, and where that suffering can be directly traced to industry (mis)behavior that benefits the developer over the end user.
Anyway, apologies if I got ranty. It's a bit late, and your post triggered the memory of that that I really wish I could forget.
It's hard to watch someone you love suffer in silence to something like that, and to also understand all the different factors that added up to it, and yet to be relatively powerless in the grand-scheme of things because you can only be so many places at once. Even though a shell can cross a continent, it's amazing how much you miss when you can't physically share the same experience on a regular basis.