A basic principle of system design

October 3, 2007

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.

Written on 03 October 2007.
« A gotcha with 'bidirectional' pipes to commands
The corollary to who actually benefits from bug reports »

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.