Our brains are kinda magic. We hold in them virtual representations of the world around us and go about our daily lives without thinking about them very much. Your brain is spending tremendous amounts of energy just to get you to square one functionality and you don’t even notice.
Those virtual representations take many forms. Some of it is narrative: “If I change this, who will be angry?” or “Why is my friend avoiding me?” are things you guess at internally by projecting from a narrative you’ve built. Some of it is spatial: “Where did I park?” or “Where are the Christmas decorations?” are answered by either rote (“go forward, turn left”) or spatial memory (picturing it).
We’ve had software available to the masses now for all of 40 years or so. If mom can’t edit a photo, it’s not because she is incapable, it’s that she has no mental model for approaching it, and that sucks for anyone. Building mental models is a bunch of work and can be very frustrating. If the cost : benefit isn’t there, we shrug and give up. That’s perhaps the most human reaction possible: resource conservation.
We initially bridged this gap by naming things after physical ideas to help crossover our mental models. This is why we have a Desktop with a wallpaper (background) and send mail electronically. We also used skeuomorphism, or making virtual things look like physical objects. This is why the first version of the iPhone had a leather-bound notepad and a literal bookshelf for your reading. Over time, the bevels and shadows simulating physical objects dropped away as everyone figured it out and no longer needed those crutches.
The holy grail of great software design, in my mind, is to cross the mental model chasm without sacrificing the depth of experience possible. In other words, you need an on-ramp that makes your software immediately understandable, but the experience needs to grow in complexity as the person’s understanding grows.
Dave starts a new job and has to use a program to order supplies for his company. He sat thru a week of extremely boring training and took notes, but he still triggers errors and makes mistakes. He curses under his breath a lot. Sometimes his boss notices when it costs the company money (beyond Dave’s lost productivity) and “has a talk” with him about it, but it takes months until he finally learns all the “tricks” and can smoothly navigate it.
I’ve seen people in this situation in a hundred different ways: a college enrollment center reviewing applicants, a print shop taking orders, a family member setting up a home printer, a server taking orders, anything. And I’ll tell you, very few people ever blame the software. They think they’re stupid and get embarrassed, because this is the software they were given and why can’t they make it work like they’re told it’s supposed to work?
It’s because the people designing it didn’t care, didn’t have time, or never even thought about it. You don’t need a license to build this shit, we just crank it out as fast as we can to print more money. If it checks all the boxes for what it can technically do and the sale happens, who cares how many people it hurts or frustrates?
Designing software that doesn’t account for human mental models is unethical. You’re gaslighting people into thinking they’re incapable, and the domino effects of that are incalculable. You don’t have to be perfect, but you do need to care and improve. Being kind to the humans tending their mental model is a huge investment, but it pays off.