Personal Mastery: If a system is to serve the creative spirit, it must be entirely comprehensible to a single individual.A enormous amount of time is spent learning a new upgrade, learning the user interface (which can vary between different apps and systems), agonising about whether to use Windows or Linux (is it worth the time to learn a new OS when you are locked in at work), should I use proprietary or standard data formats? (send a *.doc attachment or an *.odt attachment?)
The point here is that the human potential manifests itself in individuals. To realize this potential, we must provide a medium that can be mastered by a single individual. Any barrier that exists between the user and some part of the system will eventually be a barrier to creative expression. Any part of the system that cannot be changed or that is not sufficiently general is a likely source of impediment. If one part of the system works differently from all the rest, that part will require additional effort to control. Such an added burden may detract from the final result and will inhibit future endeavors in that area. We can thus infer a general principle of design:
Good Design: A system should be built with a minimum set of unchangeable parts; those parts should be as general as possible; and all parts of the system should be held in a uniform framework.
- Design Principles Behind Smalltalk by Daniel Ingalls
Smalltalk seems to be an attempt to do everything within the one program, for example, in the discussion about user interface:
Operating System: An operating system is a collection of things that don't fit into a language. There shouldn't be one.Is this a good idea or grandiose? Or both? It would be nice to have less mess.