
In this post I will talk about one interesting point of view on software that will be useful for any programmer to learn. Essence in perception of the program developed by you as a butler.
When I say "butler", I mean a servant, waiter or any other attendants. Those. a person whose job is to help, maintain, do dirty work for you and the ability to disappear out of sight for a moment before you would like to.
The butler’s job is to serve his master. If the landlord is thirsty, the butler should already be standing nearby, holding a tray with a few drinks to choose from. The butler must look good. It is great if you are wearing a suit, but the butler should not feel himself in it as a businessman or a politician feels like a similar suit. The butler has no right to his own "ego": he did the work and disappeared into the air.
This is exactly how a software product (or device) should interact with its users.
')
To explain this idea in more detail, I will give an example of a program with butler behavior. This example would be Google Chrome. Let's look at the behavior of Chrome when working with tabs, namely, how the tab close button is positioned and the tab width is changed. This behavior is well described by Basil Safwat:
"... Chrome will now change the size of the tabs to fill the remaining space, but only after the mouse cursor leaves the functional area in the upper part of the window; that is, this happens only when the user has finished interacting with tabs and shifted the focus of his attention to where somewhere else ... "
If you want to understand the behavior of Chrome in more detail - install it and try it yourself. But if in brief, Chrome after closing the tab keeps the width of all other tabs unchanged and the user can continue to close the next tabs without moving the mouse cursor. If the user moves the mouse, Chrome will understand that the tabs will not be closed anymore until they are increased and will increase the width of the tabs to ensure better readability of their names.
This is a good example of when the program behaves like a good butler - it anticipates the behavior of the owner and makes his life convenient and comfortable.
And now an example of a bad butler:
99% of all software.

Sadly, in the current state of the software world, you don’t have to go far for an example of a program that doesn’t behave properly. Almost every program I use every day, from my operating system to a text editor and an air conditioner remote control - they all, as for evil, let me know that I am the servant, and they are my masters.
Of course, the world is not black and white, and the program can have both positive and negative features, but the general situation is just that - programs don't care about users.
A couple of examples of disregard:
- Programs that show a splash screen on half of the screen and remain in this state for 10+ seconds, not allowing to work with other programs
- Java icon in the tray, which constantly shows some messages when I run any Java application. I just want to work with the application, I'm not interested in these Java messages.
- My air conditioner, which lowers the air guide blades down every time I switch it from “Fan” mode to “Cold” or vice versa, while I clearly set them in the upper position in both modes. Why do they go down?
My mental strength is not enough to continue the list of bullying programs and devices on people - I think each of us could add something to this list. Instead, let's talk about why this happens. Here is my theory.
A software developer is a well-paid, prestigious and intelligent job. And as a result - the majority of software developers have such a bad "ego". And this, in principle, is not bad: “ego” is a great motivator for conquering new heights, creating ingenious things and doing outstanding work. But after all, what is the matter - one who wants to be a good butler can have no “ego”! Honesty, humility and awareness of their secondary role are not compatible with pride.
Here you have a contradiction: programmers have pride, but the butlers should not have it.
When a software developer creates a program, he should always remember that despite all his genius as a programmer, despite a great design, effective programming language, super-architecture and other important things, his work is just the work of a butler who needs at any cost satisfy the master and get out of the way.
I think that if we understand this "ego" problem, we will be able to notice it in our projects when it arises and still create software that will be a good and obedient servant of the user, and not his bad host.
Note translator : the author implicitly goes from the “program-butler” analogy to the “programmer-butler” analogy (apparently, does not want to offend readers-programmers), but it seems to me that this article’s thought is the key one. A programmer is a service worker and I do not see why this thought can be offensive. I am a programmer myself and am well aware that my job is to serve the needs of other people in the field of information processing. This is a beautiful, creative, responsible and important, but all the same, only a minor task. And the main tasks with the help of my software will be solved by its users. It is their time and nerves saved, it is the results of their work on my software that overwhelm me with pride. And it is behind them that the last word in the choice of interfaces, requirements for functionality, etc. The one who pays is the one who orders the music. This article is a good complement to my
previous article in the sense that you don’t need to consider yourself smarter than everyone else.