September 11, 2001

User Friendly?

An essay on the concept of User Friendliness

The growth in the use of the Personal Computer has brought into prominence a very important concept of user-friendliness, a concept that was not very used in the eras preceding this period. In the succeeding period there has not been a term that has been more used and abused for various means and ends. Here we shall try to get a perspective of user-friendliness and ask some strange questions.

Also note that a major focus of this paper is the application of this term to the environments of Linux and Windows.

The early beginnings of the term user-friendly are shrouded in mystery. But what is known is that this word alone forms one of the biggest and the most successful mantra for the some of the biggest software companies around. So what is user-friendliness.

There's a lot of talk about making software more user friendly. Some pieces of software is user friendly, while others are not, right? Well, that seems to be the opinion that most people have. A common view seems to be that a program is user friendly if it has a graphical user interface, otherwise it is not. But this is a very simplistic and short sighted way of defining user-friendliness. All that graphical systems allows is friendliness and not user-friendliness.

What is the difference? The term "user-friendliness" also contains the word user that explicitly binds any definition of the term to another variable - the user. It means something friendly to the intended audience, and that is where the buck stops. User-friendly software is that software which does not get into the way of a user, not one that can be used without reading a single line from the manual. All user-friendliness requires is a fitness for purpose in the most unobtrusive manner possible.

It is not incumbent upon user friendly software to do the user's work for him. It is also not incumbent to provide animated paper clips that tear across your screen. User friendliness does not mean blandness of design, or lack of options.

One more additional point is to be taken care of before we accept this definition. That is the type of the audience. It is obvious that any user of the software is not one that comes into this world with all this information about that software built into him. He has a learning curve, for every piece of software he uses, just like any other thing he learned about. User friendliness of a software can be therefore further split into friendliness towards the newbie user and the seasoned user. We shall therefore define the user-friendliness aspect of the software with respect to the audience state as being "newbie friendly" "seasoned friendly".

We have in place a set of rules and guidelines, and of course a formal definition of the term user-friendliness. We shall use these tools to examine and understand some of the present concepts of user-friendliness that are prevalent in the community. We shall then proceed from that analysis to examine more important questions.

A few examples before we go on. Emacs is just another text editor. For a newbie. But any user of Emacs who has learnt the keystrokes will swear by Emacs till death. Therefore Emacs is user-friendly as it does indeed makes itself fit for the purpose and does it well, it also is more seasoned friendly. Take the MS-Paint program as another example. Almost every user has used it when he was taking his first faltering moves with the mouse. This program is very simple and intuitive to use. A simple straight forward application for a simple straight forward use. We may argue about the purpose of the program for which it is claiming fitness to, but the point is that this program is classic newbie friendly. I am aware of the bias in choosing examples but this was only for the purpose of illustration, and so no inferences are to be drawn right now.


The present concept of user-friendliness

There are a number of misconceptions about user-friendliness. I shall look at a few of the present attributes of software that are due to misapplication and ms-interpretation of the concept of user-friendliness.

User friendliness has come to denote the GUI, especially when it comes to comparisons between Windows and Linux. "Linux is less user-friendly" because it does not have a GUI like Windows. While the "fact" itself is arguable, that is not the intent here. The fact of the matter is that Linux, like its predecessors in Unix, has a rich set of small and powerful tools, that achieve a particular objective and do so the best way that they can. This tends to be a lot newbie unfriendly, because of the large number of tools available, and the variety of options that they provide. But again most of the tools that are needed to run on the commanline are those that actually do benefit from using the command line. Also these are tools that are not really meant to be used by a newbie, unless he is probably interested in the tool itself. Finally most of these tools do come in with a standard help on the commandline itself. Going by our earlier strict definition of fitness for purpose for the intended audience, all the commanline tools do indeed pass this criterion. They can be safely concluded to be user-friendly. If you find the use of some of these tools difficult or otherwise difficult, think a second they may not probably be for you. You might, have another option of doing the same thing that might be more friendly towards you.

Another common view of user-friendliness of user-friendliness has been "uniformity". Similarity of interface, and similar looking names so that users don't take time to adapt to the software. Although this concept is admirable per se, but an application of our rules makes us thing otherwise. A program is required to be fit for a particular purpose. Which means, so should the user interface. Any good interface should be intuitive for the purpose for which it has been built. And once this is done I see no reason for "uniform interfaces" and "ease of getting used to new interfaces". If you cannot make a spread sheet look like a word processor, the concept of uniformity does not exist and had not existed. In fact I will go so far as to say that all talk of uniformity of interfaces has never existed, was a product of the PR team rather than the developers, and was in fact a limitation of the GUI to be unable to provide ease of creation of new interfaces to the developers.

An aside here. The concept of similar interfaces has been abandoned by all the major software developers. The present term is "intuitive" interfaces. The reason is obvious. When a firm spend a lot of money actually developing software, it would like to make it distinctive and have top of the mind recall for its customers. The interface is the only way of doing it. Given the limitations of adhering to the user-friendliness, the companies obviously have opted out. So not only is the concept idiotic, it does not even exist, except in the PR department briefs.

User friendliness is come to mean the aggregation and integration of multiple functionalities into single monolithic all powerful programs. This is one of the great myths of personal computing. There have never been any programs that make things all powerful, and integrated at the same time, which have also been extremely powerful, safe and easy to use. Perceptions of user friendliness have always been at loggerheads for deciding which functionalities to include into a single program. Making a single huge program will also mean providing a lot of configuration options, which is considered not to be user-friendly. Hence given the functionality in a integrated program, there are inevitably a number of ways to do all of it better with smaller more focused programs. This has indeed spawned a new industry offering tweaks and hacks into known software to extend and increase functionality. Integration is newbie friendly and seasoned unfriendly.

A by-product of user friendliness coupled with the closed software model has stressed on hiding the internals of the software from the user. This is evidently to protect the user from the program, and make sure that he is not intimidated by the software in any way. In fact it is more to hide the shoddy work of the programmer, hide all flaws under the hood, keep the user uninformed and keep that poor idiot permanently dependant on the service department and new product updates.

One really absurd interpretation of user friendliness is perceived to be lack of information on what the programming =is doing at a time. It is considered to the program to apparently freeze up rather than give information on what it is trying to accomplish. On the contrary what user friendly software should do is to keep the user informed about what it is achieving. Normally the user would ignore all that information. But this becomes absolutely invaluable in times of errors. Any such information would be very useful in diagnosing faults, and for first aid. With the programs denying the user such knowledge he is bound to the support and service for salvation.

One final measure of user friendliness is the lack if information about how the program works. Modern OSes provide a number of ways of achieving the same objective. The absolute lack of technical information in the help, and limiting help files to "click here" information is hardly friendly. It may be argued that such information is not newbie friendly. Depends on the capabilities of the newbie really, and what is achieved by not including it at all. A real I-dont-care-a-damn newbie will never look into it anyway, even if it were included. But not including it actually makes the program unfriendly as it would take away crucial information about the fitness of purpose of the software.


Evaluation of the need

Ask any layman who uses computers about what he believes to be the most important requirement of a computer system. More often than not he will come up with the cliched user-friendliness. But should it? In other words why should computer systems be user friendly?

This may seem blasphemy to all but hear me out. The fashionable thing to do today is to make things user friendly, this has, on one hand, led to the development of the click and do interfaces. It has also, on the other hand, led to the excommunication of geek-speak from products of computer science. I need to dwell upon this for a little perspective on the path my reasoning is going to follow.

Through out man's history we have seen a number of sciences grow and develop. Without fail we have seen each science develop its own language. Practitioners say it allows easy and quick communication. Sceptics say this is to protect the practitioners of the science for the laymen. No matter what the reason, the fact remains that this particular stream of computer science is being denied of use of its own language from its own products.

The point is simple. Computer science is just another stream of science. Practicing it needs just the same amount of learning and preparation that any other stream of science needs. And just because it has the ability to reach the masses should not take away from the fact that it needs the respect that any other branch of engineering gets. Its ease of use should not be held against it.

To take complete advantage of this argument it is necessary, like in any other branch of engineering to identify the various components of the user populace. We shall split the user populace into two categories. The first we shall call the "dummies", after the famous set of user manuals that flooded the market. These are users who are primarily concerned with not the product, but only what it does for them. These users are the ones who should be given the whole "ease of use benefit". The titles that these users use are primarily the end user software like the word processor, spread sheets, multimedia applications, browsing and P2P applications. This will also include the large quantity of applications for other fields of study. All software that is used for data processing by members of other branches of science, engineering and even art come into this category. This therefore forms not only the biggest segment, it also is the most elastic and responsive to the user-friendliness of software.

Unlike common perceptions this will also be the toughest segment to program for. Instead of the sorry software of today that is sold to this segment, there should be more really user friendliness built in. There needs to be a lot of improvement in the software, which actually means not following the present norms. The following is a set of guidelines for the kind of software that is expected to meet the needs of the dummies.

  • Software must be focused, and accomplish more with little effort, especially when it comes to engineering applications
  • The software must make things transparent to the user, as far as the actual implementation of the various options in the program goes. It is not necessary or desirable for the software to prevent the user from being able to do things differently, in a way he desires. One such idea is preventing
  • The software must keep the user in the loop, communication to the user through visual and audio signals denoting the function performed. The signals should be subtle enough to ignore. For example the status bar is a great place to give a lot of information on what the program is performing.
  • While it may be required to keep the initial configuration of the program simple, no attempt must be made to reduce the option set available to the user. Advance configuration options are a must.
  • Rather than keep the interface standard, stress should be on keeping the interface simple, uncluttered and intuitive.
  • Documentation is important. Just like it is desirable to keep the configuration simple, without reducing the available options, advanced information and advanced implementation should be discussed. Any issues that may be faced by the users must be documented. If a known bug exists, it should be listed. Any warnings to the user must be explicit and easy to understand.
  • The user must forever be in control of his own machine. Rather than annoying OK pop ups, more desirable is to provide logs, keep track of changes performed and give the advanced user power to see and undo any changes made to the system.

Then we have the "power-users". These are the users who are either directly related to the branch of Computer Science, or those who are well versed with the usage of software. The kind of software this segment will be using will be the high end server level software, like web servers, SQL servers etc. This will also include those from the dummies who have gained an insight into the working of their own software and are willing to experiment and learn more. This is a set of guidelines for this kind of software.

  • These users are not newbies and should not be assumed to be the lowest rung of the use populace. The interfaces should be designed using common configuration themes
  • Administration should necessarily be centralized and be powerful and flexible.
  • Information should never be hidden from these users. Configuration options should never be limited to a few option sheets. It is strongly advised to follow the configuration file method of setting options. The Administration console may be a front end for a limited set of options. If the console can list all the options it is welcome, but none should be dropped because of lack of space.
  • Alternate methods for similar tasks may be optional but no attempt must be made to make it transparent. The user should have the power to choose.
  • Documentation should be complete, easily accessible and also include relevant technical and implementation information.
  • Log files are a necessity and so are front end analyzers for those log files
  • The administrator should for ever be in control of the machine, under all circumstances

Having defined what we expect from the software, we shall answer the first question, why should computer systems be user friendly?

The only reason computer systems should be user-friendly is to perform their intended function, for the intended audience. True programs are written by correctly identifying the intended audience, and the function is equal proportion. No user-friendly software can be called such if it chooses to ignore one of these two aspects. No concept of friendliness makes sense without both these variables defined, user-friendliness does not exist in vacuum.


Windows and Linux

Based on the discussion above, how do Linux and Windows measure up as Working environments. We shall look at the two environments, one supposedly user friendly and the other user unfriendly. We shall then dispel some myths and then evaluate their positions on the same.

Windows enjoys the position of power in the personal computer segment. This has been to a great extent due to its early mover advantage. Also the perception that Windows is user-friendly had a very important role in this. But how did Windows approach user-friendliness. And is this approach justified?

Windows assumed all of it users to be a bunch of morons. To give credit, it assumed that all it users are those that do not want to spend time at all to spend on trying to know the system that they were using. This may be true to an extent but it sure is a flawed. Although Microsoft has become the biggest player in the PC segment, it sure has lost out on the more advanced markets like say the server segment.

Microsoft through Windows has been highly user focused. All of its decisions have been end user focused. And this end user has been the common man, one who does not want to learn about the tools that he uses. This is brilliant when it comes to marketing strategy, but is bad strategy for building software. They say that the problem with Apple has been that it hired engineers to do marketing. The problem with Microsoft has been the fact that it hired marketing guys to do the development. That is in a few words it. That is the reason for a decent user interface, not no intuitive layout and pathetic functionality. In its desperation for user acceptance it forgot the part that a software is defined by its functionality as well. So we have software that is highly conforming to the standards that it had set about user-friendliness, the functionality has been sacrificed. It is possible to rant about it, but a quick look at the reasons for Microsoft bashing does suggest this thing.

Also Microsoft's focus has been on the simplicity of the interface, that all their products are known for. So what does Microsoft gain by this. By making a simple uniform interface, it prevents product differentiation. It prevents people from differentiating between competing products, giving the choice of these products back to the developers of the OS itself, that is Microsoft.

So is this software user-friendly. According to our definition it is not, it is flawed. The software may be newbie friendly but it sure is not complete user-friendly software. Because it does not give the function of the software enough say in deciding the design of the software itself.

What about Linux. This can be viewed as two things. First Linux with its Unix roots, as a server application. And then it its new avatar of a desktop alternative.

Unix, has been the most powerful and widely used OS in the past. It is incredibly stable and powerful. As many testimonies will prove. But it had absolutely nothing to show for user friendliness. To use Unix one had to undergo a vast learning curve. This obviously gave it absolutely low newbie friendliness. But on the other hand it did have a lot to show for the friendliness with the focus on functionality, and power of use.

But things are changing with the new focus. Linux is with a new focus now. Under the new focus of desktop users it has developed a number of things. Linux has the most powerful and easy to use Windows Managers. It had graphical front ends for all the products that a simple user wants. It also has easy to use products for all kinds of users. What are described as products which are notoriously difficult, are actually intuitive. And then come with a tremendous amount of documentation.

Linux is special in the fact that it has products for all the levels of users. And it has no barricades against getting more information yourself. Information is the most important thing in a Linux system. All the supposedly cryptic commands are not for the everyday users. And then how can one use that to dismiss Linux as a desktop alternative. Linux it more than a desktop alternative alone, it is a server which can be more friendly than a Desktop OS.

So is Linux user-friendly. Not really. It does lack in most of the easy to use interfaces. It sure is newbie unfriendly. But the point to note is the focus. It is just not on either the program or the user. It is on both. Hence in the long run it is Linux alone that can have any truly user-friendly programs. If I were a punter, I would put my money on the Linux horse. It may be slow now, but it will only get faster.

Document Changes
September 11, 2001: Initial publishing of the article.
April 02, 2009: Spell check and cosmetic changes.