Characteristics of good software

© January 2024 Paul Cooijmans


By way of kind advice to developers of operating systems and programs, here follow my views on what constitutes good software, based on my personal experience in computer use over the past quarter of a century.

Characteristics of good software

Good default settings

Any piece of software, either a program or operating system, should be usable without requiring heavy customization, without needing to go through all of the settings and personalizing them before taking the thing into use. And perhaps, customization of software should ideally not be possible at all, apart from obviously necessary settings like accounts in an e-mail client, and apart from the installation of programs by the user, which is a form of customization that is good, not bad.

The main problem with customization is that it needs to be transferred or even redone from scratch after a new installation of the system and/or program, thus causing extra work every time. Good software avoids this by being usable "out of the box" in a "one size fits all" approach. Another problem with customization is that it hinders communication with others about the use of the program or system, such as when giving technical support. The other person may have a differently looking and behaving instance of the software than the support-giver.

In fact, extensive customization or personalization of software is only attractive to people who are interested in the computer system itself, as opposed to users who see the computer system as a tool to produce work with. In the latter case, the hated, despised principle of "one size fits all" may be mostly true.

Options accessible in one way only

Ideally, options — tasks, actions, settings, "things to do" with the software — should be accessible in one way only, not in a multitude of alternative ways as is customary. The latter creates the impression of more options than there actually are, which is confusing and makes the software appear more complicated than needed. To further qualify "one way only", it is not objectionable if an option can be accessed alternatively via the mouse, the keyboard, or the terminal; those three ways of working do not cause confusion as the choice between them is generic and not made for every option separately. One person does everything with the mouse, a second person with the keyboard, and a third person uses a terminal. That is not the problem.

But if an option is present both in a menu and on a taskbar, that does create a false impression of complexity, because it doubles the number of apparent options so to speak. Menu options should not be repeated on taskbars, and vice versa. They may have keyboard shortcuts though; that form of alternative access is good, not bad.

One program for each task

A system should by default contain one well-chosen utility for each given task. Not six different file managers and seven text editors to choose from, but one good file manager and one good text editor. Of course, users should be able to install programs of their choice in addition, and remove programs if so desired, to preserve the state of having one program for each task.

Good use of screen surface area

Nowadays we have screens of 1920 × 1080 pixels or even greater. Then why oh why do some programs or utilities start up in tiny stamp-sized windows that require extensive scrolling to see their contents, leaving 90 % or more of the screen unused and necessitating one to maximize the window first before being able to work comfortably?! This a completely unnecessary annoyance. In general, programs should start in a maximized state by default, or remember the window size of their latest previous use. Utilities like file managers may open in a less than maximized state, but never so small that only a handful of files are visible without scrolling.

Frequent options should be easy to find

Common options that a typical user needs many times a day should not be hidden deep in a submenu without even a default key binding. They should be readily available in plain sight and always have a keyboard shortcut.

File managers need list view by default

File managers should not open in a large icon view as is now virtually always the case, rendering only a handful of files visible without scrolling. The default should always be a list view in columns, so that there are at least about 100 files visible without needing to scroll. Truly, with things like this I have been asking myself for years, "Why do I have to be the one to point this out?! Why do software developers not understand this by themselves? Why am I the only one who can think?"

Flat hierarchy is better than deep tree structure

When a large number of items, options or whatever need to be presented (such as in the control panel of an operating system) a flat hierarchy is preferable to a deep tree structure. While the latter may reflect reality better on the conceptual level, it is much harder to search manually. If one takes the wrong branch early on — that is, if one chooses the wrong category in one of the top levels — one will not find what one is looking for, and will have to start over. This happens because it is generally not obvious to a user in which category a particular item will be found. For instance, would "Disk manager" be in "System"? In "System management"? In "Storage"? Such is entirely arbitrary and non-intuitive to the user, though no doubt perfectly transparent to who designed the category structure. Much easier to navigate is a flat hierarchy, wherein there are many categories (even in the order of a hundred or so) at the top level, and all the items are no more than one level below those categories (perhaps in rare cases there may be an extra level needed).

It has to be admitted that a "Search" function makes this problem less pressing, but still a flat hierarchy makes sense to have.

No enforced security

Good software will never force you to use security measures such as password or passkey protection, encryption, secure boot, or the trusted platform module. Do realize that security is not safety; where security is required, it is not safe. Enforced security, without exception, serves not to protect you from harm but to limit your freedom in using the software and force or "nudge" you toward certain behaviours or modes of use. Typical behaviours that issuers of bad software desire from you are the use of cloud services, online accounts and being logged in there, encryption, and the use of smart telephone "apps" instead of real programs on real computers, including the wireless connectivity that goes with such.

Software should be owned for life after a one-time purchase or free

An exceptionally dangerous development is the trend toward subscription-based software, whereby you keep paying per month or year to be allowed to use a program or system. This is like a carpenter having to rent one's hammer and screwdriver for the duration of one's career. The software becomes a service then, similar to, say, having your hair cut, your car maintained, or your house cleaned. But software is a tool that you use daily, and such tools should be owned. Much software is actually free, but there is no objection to paid software, as long as it is a one-time payment and not a subscription. It is imperative that we boycott corporations that try to force subscription-based software on us.

Embedded software is better than firmware

Specialized devices like digital cameras, some wrist watches, televisions and the like have software in them too. In the past, this was so-called "embedded software", baked into the hardware such that it could never be changed or updated. This was ideal from the viewpoint of the user; the behaviour of the device would always stay the same, so once you had learnt to use the thing, this skill would remain useful for the lifetime of the apparatus.

Unfortunately, immutable embedded software was not deemed ideal by manufacturers, so nowadays most devices come with "firmware" that has to be updated from time to time. Not because you want it, but because the manufacturer wants it, because the manufacturer wants to control how you use the product. In fact, one is often encouraged to download the latest firmware even right after purchasing the device. And every update may alter its behaviour, sometimes rendering the thing unusable, stopping you in your tracks, forcing you to go through all of the settings to identify the offending setting that broke your work flow and recover the machine to a usable condition, if possible at all.

A typical example of controlling user behaviour through a firmware update is the introduction of a setting that, by default, disables universal serial bus connectivity, making it suddenly impossible to connect the device to your computer, thus kindly "nudging" you toward using wifi or bluetooth to connect to the manufacturer's "app" on a smart telephone. By going deep into the settings you may still be able to switch on universal serial bus connectivity again if you are smart, but with a next firmware update you may be less lucky and the feature removed altogether. Good software will never force wireless connectivity on you. With firmware updates, the device becomes a kind of remote control, and the object being controlled is you, the user.

Updates should be infrequent and not change user settings or interrupt ones' work

Frequent updates are the mark of inferior software. Especially malicious are updates that change one's settings, add new settings that, by default, are set opposite to what a typical user wants, or alter the behaviour of a program such that the user is interrupted in one's work and has to look around in the settings for minutes or even hours to bring the program back to a usable state. Good software receives updates only sparingly, and they are not invasive. Such programs allow one to acquire a high level of skill in using the program. If one's tools are changing under one's hands, one's existing skills are destroyed constantly and one will always stay at the beginner's level.

One may have heard of the mythical "ten thousand hours" of practice that be needed to become an expert in any field; when one's tools are computer programs, frequent invasive updates will prevent one from ever reaching that expert level in whatever one is doing. The latest cutting-edge software is only interesting for computer enthusiasts; where real work is to be done, one is often better served with somewhat outdated programs that always respond in the same way to the same input. It is not for nothing that government organizations and corporations are sometimes "exposed" for still using ancient unsupported operating systems on farms of old computers; that is how they maintain continuity in performing vital tasks. By way of analogy, one may consider the fact that the human brain is the only organ that is not constantly replacing its cells in place (yes, new brain cells are formed, but those are additional cells, not replacements of existing ones). Were the brain to always renew its cells in place like the rest of the body does, vital physical functions like heartbeat, respiration, and maintaining blood pressure would be interrupted, and one's memory would be erased and personality destroyed. In other words, if the brain received invasive updates like many computers do, one would be dead. The brain is like that farm of computers in the basement of a government building still running Windows XP while normal users are on Windows 10.