A basic principle of system design

I've mentioned this in passing before, but I should be explicit at least once. Here is a very basic principle of designing systems that real people will use:

The people that benefit should be doing the work.

Okay, there is one exception: the people getting the benefit can pay for the work instead of doing it directly.

You design systems that violate this principle at your peril, because generally it doesn't work in the long run. You'd think that this principle would be obvious, except that it is routinely violated.

I think that there tend to be three forms that these violations take: underestimating how much work is really involved, overestimating the benefit that people get from it, and deliberately deciding that it doesn't matter. I can't say anything about the last one, but the first two are often caused by not taking a step back and trying to look at your system with the eyes of an outsider, not an enthusiastic developer. (Unfortunately, this is very easy to do.)

Every time you design a system (whether it is software or procedures), you should step back and ask yourself who benefits and who does how much work, and how rewarding it really is. Be painfully honest, because it is much better than spending all the effort only to have your system quietly fail.

These are my WanderingThoughts
(About the blog)

GettingAround
Full index of entries
Recent comments

This is part of CSpace, and is written by ChrisSiebenmann.

* * *

Atom feeds are available; see the bottom of most pages.

This is a DWiki.
(Help)

Categories: links, linux, programming, python, snark, solaris, spam, sysadmin, tech, unix, web

Search:
Written on 03 October 2007.
(Previous | Next)

Page tools: View Source, Add Comment.
Search:
Login: Password:
Atom Syndication: Recent Comments.

Last modified: Wed Oct 3 22:27:52 2007
This dinky wiki is brought to you by the Insane Hackers Guild, Python sub-branch.