On Kindness and Beauty
There are many factors people use to determine good design of a program. Factors such as correctness of output, usability, and stableness are commonly used. I would assert that all these factors can really be condensed into only two factors. The factors are Kindness and Beauty. If this is true I then assert that design of programs is essentially a moral or ethical question. This leads to the the surprising conclusion that we as programmers have a moral requirement for all programs we create.
First I would like to define the words kindness and beauty in this context and how they effect a program. We will define kindness as doing good towards all users. We will be using a more general meaning of user then is normally used and that is a user is anyone effected by a program. We use this broader definition so that we make take into account indirect users who are effected by the program through direct users or other indirect users. For example if a person’s friend uses Wikipedia to learn something and then that person’s friend tells the person that information then it is reasonable to say that the person is an indirect user of wikipedia and they should be taken into account because Wikipedia is effecting their lives in some way. We should also define good as good means different things to different people. Good in this case is something which causes benefit without causing harm.
People may argue that because of our definition of good no program can be truly kind. This is true and could be solved by adding something like good being doing more benefit then harm, but this is extremely subjective so I propose that we leave good as it is and accept that as humans we cannot write a perfectly kind program but should strive to write the kindest programs possible and in some cases refuse to create programs on the grounds of unkindness.
The other factor is beauty. Beauty is a little harder to define as the word is even more subjective. We will define beauty as a program which is simple, extensible. This may seem strange to non-programmers as a definition of beauty but in the eyes of many programmers I meet would say one or more of those things make a program beautiful from a technical point of view. Simplicity means that a program accomplishes it’s task as minimally as possible. This makes the source code for the programs simple and therefore makes it easier write easily understandable code. Also the less there is in a program the less there is to go wrong. Extensible means that a program can be combined with other programs, plugins or other pieces of code in order to add more functionality or solve problems that the minimal program cannot solve itself.
Having defined these two terms we can now notice something interesting and that kindness/unkindness is actually a moral value. This has a few interesting side effects. The first is that programmers must think about their programs in the light of morality something that is ignored far too often. For example a website designer may be asked to store information on users of a website for later use. Under the model I have outlined the programmer not only has to worry about the legality of the storage of the information but what the effects of storing that information will be on the users. If it’s find out how many times each page is visited so the site may be optimize then the programmer might decide that saving the information is kind and therefore the program is “moral”. On the other hand if it is to hit the users with targeted advertisement that the user has only consented to in the small print of a EULA then one may argue that while the law says it’s fine to add that to the program it would be unkind to do so and would therefore be a bad design choice as well as immoral.
Another hypothetical example of this would be a program that would monitor what websites employees at a company are visiting and when. This is a legal right of the company, but is it really kind to the employees or even the company itself to create that program? One argument is that if an employee is surfing the internet when they are supposed to work that the company needs to know to discipline the employee. The company needs to discipline the employee because he’s not doing his job, but if he wasn’t doing his job the company would notice without monitoring so clearly it doesn’t help in the case when the employee is not doing their job. So where is the benefit to the company? Well it’s when the employee is both completing their job and surfing the net. In this case is discipline really necessary? I would argue that is not as discipline tends to lower the moral of the employee thereby lowering their efficiency so in the end the company will lose productivity of the employee. The employee clearly also loses due to the effects of the discipline. So in this situation the legal program is unkind even though most people would not think so at first look. So if the programmer made this program the company would be harmed although the company would actually think it had benefited and that harm would be morally the programmer’s responsibility. This is why it is so important that we as programmers think about what we are doing and how our design choices effect the world.
About this entry
You’re currently reading “On Kindness and Beauty,” an entry on Technica Discordia
- Published:
- 04.08.08 / 7pm
- Category:
- Program Design

1 Comment
Jump to comment form | comments rss [?] | trackback uri [?]