"In the grand scheme of the universe, your individual preferences don't matter."
In a culture where the amount of choices, preferences and options you can latch onto a square inch of pixel screen is heralded as the symbol of power and "eliteness", the preceding paragraph will certainly be perceived as arrogant, presumptuous and down right offensive by many Free Software users and developers.
The argument, as it goes, is what right do I have to take away "choice" and "freedom" from users. Users have the right to work however they see fit and it is my job, as a software developer, to bend to their whims. It is my job to make sure that users are "happy" by catering to all their preferences, all 10 million of them.
The argument goes that software should adapt and bend to users preferences and not the other way round. As such, "good" and "powerful" software should be configurable and littered with plentiful options to accommodate all known and unforeseen needs of users.
Sadly enough, too many developers cave into this demand. After all, nobody wants to be seen as that jerk who takes away users' "choice" and "freedom." The argument is powerful, emotional and effective, but it's flawed.
How come these standards don't apply to other design and engineering endeavours? I mean, when was the last time you went to your town's civil engineer and said, "You know what, that bridge over there is not configurable enough for my taste. First of all, I'm scared of heights and the bridge is 30ft high. It'll be nice if we can add an option to adjust the bridge's height so that when I'm walking over it I can reduce the height to, say, 5 ft. Bonus points if it automatically detects me a mile ahead and proceeds to lower itself. The brigde should adapt and bend to my needs, not the other way round."
My attempt at humor may be lousy, yet this is what we routinely do with software. My point is, for many of the devices, appliances, infrastructures and machines we use, we are ultimately stuck with the solutions their designers and engineers come up with. Most of these devices have very limited configuration options. Shockingly almost nobody whines about the lack of choice and freedom when using them. Instead, they do what all humans have evolved to do exceedingly well, adapt!
I'm going to get controversial so brace yourself. Software designers and engineers have been battered into believing their job is to cater to individual preferences of users. It is not! Software is not a digital butler, despite what your favorite Sci-Fi television series says.
Their job is an engineering problem not an emotional one. Their job has absolutely nothing to do with your preferences, choices, feelings or freedom. Their job is to study, research and design the most efficient and effective workflows to accomplish a given task in software regardless of how you feel about it.
Whether or not you like the workflow designed is irrelevant. That's an emotional question not an engineering one. Whether it's to your taste and preferences is again irrelevant.
The only relevant questions are, does the software work? Does it allow me to accomplish tasks efficiently and effectively? Are there kinks in the workflow that prevent me from accomplishing tasks? Are there better, simpler, easier ways of accomplishing these tasks? These are the relevant questions. And these questions are centered on the tasks and workflows, not on preferences.
Human preferences are affected by too many variables most of which are subjective, cultural and emotional. In contrast, the most efficient and effective way to accomplish a task is a purely engineering feat. It is measurable, quantifiable and observable. Somehow, many people have missed this important point.
For example, I've had a user tell me this. "Yes, I know your way is 1000 times better. It's faster. It's more efficient. It makes a lot of sense. But I've been doing it my way for so long now and I'm used to it. So please provide an option to do it my way. You shouldn't force me to do things your way. I just like my way better! Linux is all about choice and freedom..."
Why? Why should I or anyone in their right mind waste time creating a workflow that inefficiently accomplishes a task? The answer is almost always ridden with emotional and guilt trips about pleasing users. When GNOME 3 landed I had too many deja vu moments due to responses from users similar to the one above. Many of whom, by the way, hadn't even used GNOME 3 yet.
Anyway, I digress. Of course, there are valid reasons to provide options and preferences. However, these reasons should hive around usability and accessibility and again not individual preferences.
This is why I subconsciously tune out users who start talking about preferences and options. Don't take it personally. I'm just not concerned about your preferences, or mine for that matter. My goal is to design efficient workflows that everyone benefits from. If you want to capture my interest start talking about creative, well-designed efficient workflows that demand no configuration, twiddling or tweaking. Allow me to yawn when you start talking about how you "prefer" to work and bore me to death about how there should be a configuration option just to cater to your uniqueness.
Providing configuration options to make "everyone happy" is emotional engineering not software engineering. And when we do that we've failed as users and developers. In particular, we've failed to do 2 things:
- to properly identify and analyse the problem space in a critical manner; and
- to correctly identify and analyse workflows thoroughly.
Wait, let me put on my asbestos flame repellent suit. Okay, I'm ready. I welcome feedback.
P.S. This is required reading before you file a bug report to add yet another configuration option.
0 comments:
Post a Comment