Your program is not important to me. I don’t care about its user interface. I don’t care what its name is. I don’t care that you made it, or what version it is.
The only thing I care about is that your program helps me accomplish my purpose. That’s a truly remarkable feat, and if your program does it, you should be proud. There’s no need to make your program take up more of my attention just because you think it’s important.
Now of course, your program important to you! When you work on code for a long time, it’s easy to become attached to it. It was so hard to write. Your cleverness is unbounded, shadowing lesser mortals in the mountain of your intellect. You have overcome some of the greatest mental obstacles man has ever faced. Truly, you must shout this from the tops of every tower, through the streets of every city, and even unto the caves of the Earth.
But don’t. Because your users do not care. Your fellow developers might be interested, but your users are not.
When you’re truly clever, what will show up for users is that program is awesome. It’s so awesome, the user hardly notices it’s there. That is true brilliance.
The worst offenders against this ideal are programs that pop up a window every time my computer starts. I know your software is there. I installed it. You really don’t need to remind me. If my purpose is to start up my computer so I can use it, how is your pop up window helping me accomplish that? It’s not, so get rid of it.
There are smaller ways to cause problems, too, that all revolve around asking for too much time or attention from the user:
- “Users will definitely be okay with clicking through three screens of forms before they can use my product.”
- “I’m sure that users will want to learn all the icons I invented for this program, so taking away the text labels for those icons is fine!”
- “I’m sure it’s okay to stop the user from working by popping up these dialog boxes.”
- “Users will totally want to search through this huge page for a tiny little piece of text so they can click on it.”
- “Why should we make this simpler? That would be a lot of work, and it’s already pretty easy…for me.”
And so on.
The true humility required of a developer is the willingness to remove their identity from the user’s world. Stop telling the user the program is there. Don’t think that the user cares about your program, wants to spend time using its interface, or wants to learn about it. It’s not your program that they care about–it’s their purpose. Help them accomplish that perfectly, and you will have created the perfect program for them.
I’ll add something: Yes, your program should be transparent («go on unnoticed») and do, as much as is possible, what the user expects. But there are users with different preferences and different expectations. If ever one particular user finds that the program runs “contrary to expectations” (maybe because he has unusual expectations) the way to change configuration settings should be obvious (require little searching) and easy (need few user actions per changed setting).
That seems like a sensible and valid point. 🙂 I’m sure we all would agree that one must be careful with how many preferences one adds, though, but that is all caught up in making the preferences themselves simple.
Different users though want different things. While one (perhaps an occasional user) may appreciate text labels with icons to easily find functionality, another (heavy daily user) may resent the extra screen space they take up. What attracts attention by its absence for the one, does so with its presence for the other.
Mind you, I don’t think there are many users who actually want intrusive pop-ups advertising program’s presence at start-up. On the other hand, if they’re successful in increasing awareness of the producer’s brand, then they are serving a purpose to those who created them and will probably continue to exist.
I tend to think that most of this sort of stuff is do-able in a way that’s actually great for both power users and new users. I’ve actually been maintaining a product for many years that has to do exactly that all over its user interface, and I think we’ve lately been learning how to do it in a way that’s actually quite workable for both groups.
As far as the pop-ups: the purpose of the developer is not the purpose of the software. Also, history of computing shows that the winner is whoever serves the user the best while also executing well on the business side. Having an excellent product is a perfectly decent way to create brand awareness. I don’t see Chrome popping up its name or its logo all over my browser interface, and yet it’s gained market share faster than any other browser in history. I generally think that the “brand awareness” argument for harming the user is weak and short-sighted.
Max, are you alluding to one of the more widely used PC environments? 😉
Hahahaha! I hadn’t thought of it, but sometimes it is like that, sure! 😀
A large contributing factor here is creating brand awareness via notifications. It sucks but most users don’t get as far as realizing the notifications suck and associating that negatively with the brand. The hubris is probably ultimately the bigger factor.
Man, can you imagine if your doctor kept calling you up in self congratulatory fashion regarding the fact you haven’t contracted aids recently before offering you a health insurance upgrade to make extra sure. I’m sorry doctor Norton but I’m changing providers.
Hahahahaha! Yes, I love the doctor analogy! 😀
I think there is also a certain aesthetic when a program allows a user to achieve their purpose with as little “program” as possible. In other words, how do you occupy the fewest number of mental cycles for the user to accomplish their purpose?
Lots of fun UX discussions come out of this, but I think you nailed the main point here, Max. To a developer or designer, it’s tempting to get wrapped up in the mechanics while loosing sight of the big picture.