Principles to keep in mind when designing software.

by Jack Seay

Feb. 28, 2005

1. Cause and effect. People have motives, needs, desires; these affect and are affected by people, things, businesses, government, entertainment, education, news media, scarcities, overproduction, distribution chains, advertizing. How does overcomplexity in programs and languages make them unusable by generalists? Sometimes, lack of consistency and logical relationship is the problem, not overcomplexity.

2. Flow of work and money. Work produces goods and services, which are bought with money, which is used to buy other goods and services produced by work.

3. Values: truth, love, and beauty. A whole book could be written on this.

4. What people want: security (not losing what you value), enjoyment, useful information.

5. What people don't want: frustration, unnecessary complication, instability.

6. As simple as possible to do the intended jobs. Can all peripherals be connected with only one type connector? (with daisy-chaining and powered) Can all be hot-pluggable with no drivers needed? This includes keyboard, mouse, camera, microphone, hard drive, printer, monitors, network, optical drives, flash RAM, extra CPU's, gloves, goggles.

7. Can all legacy OS's be run emulated as needed, when needed (Mac, Windows, Amiga, Atari, etc.)?

8. If you make a clean start, how secure can the OS, software, and network be made?

9. Can all user interaction be customized?

10. What useful organizing constructs can be devised? (Lifestreams, Xanadu, zigzag, VR) Can these be combined, or operated in parallel?

11. Can all documents be reformatted easily for different types of uses? (printing, various monitors, VR, PDA's, phones, kiosks) This should cover all changing content so all formats show the change automatically.

12. Can the software bring focus to what needs attention automatically, and hide everything extraneous?

13. Can past activity be easily retrieved and searched? Do a search on these words in everthing I have looked at in the past week, for example.