I am a design chauvinist. I believe that good design is magical and not to be lightly tinkered with. The difference between a great design and a lousy one is in the meshing of the thousand details that either fit or don't, and the spirit of the passionate intellect that has tied them together, or tried. That's why programming-- or buying software-- on the basis of "lists of features" is a doomed and misguided effort. The features can be thrown together, as in a garbage can, or carefully laid together and interwoven in elegant unification, as in APL, or the Forth language, or the game of chess.
Learning to program has no more to do with designing interactive software than learning to touch type has to do with writing poetry.
Well-designed interactive software gradually unfolds itself, as in the game of Pac-Man, which has many features you don't know about at first. The best term I've heard for this is self-revealing (term coined by Klavs Landberg).
Bell Labs created Microsoft by charging $25,000 for Unix. If they'd charged $50, Unix would be the world standard.
Why are video games so much better designed than office software? Because people who design video games love to play video games. People who design office software look forward to doing something else on the weekend.
Almost nobody, looking at a computer system for the first time, has the slightest idea what it will do or how it should work. What people call an "intuitive interface" is generally one which becomes obvious as soon as it is demonstrated. But before the demo there was no intuition of what it would be like. Therefore the real first sense of "intuitive" is retroactively obvious.
The problem is not software "friendliness." It is conceptual clarity. A globe does not say "good morning." It is simple and clear, not friendly.
HTML is precisely what we were trying to PREVENT-- ever-breaking links, links going outward only, quotes you can't follow to their origins, no version management, no rights management.
Because everything you want to program seems so simple in principle, you think you could (in principle) program it all. Ah, youth.
Regarding the acronym WYSIWYG, What You See Is What You Get... what it really means is What You Get When You Print It Out. In other words, we are using the computer as a paper simulator, which is like tearing the wings off a 747 and driving it as a bus on the highway.
[The Macintosh gave us] the abominable Hidey-Hole - called 'The Clipboard' - except that you can't see it, it holds only one item, and each item destroys the previous, in all other respects like a regular clipboard, except that there aren't any other respects. This is called a 'metaphor', meaning a stupid scrap of semblance on which bad software is built.
Computing has always been personal. By this I mean that if you weren't intensely involved in it, sometimes with every fiber in your body, you weren't doing computers, you were just a user. If you get involved, it involves all of you: your heart and mind and way of doing things and your image of yourself. A whole way of life.
In 1974, computers were oppressive devices in far-off air conditioned places. Now you can be oppressed by computers in your own living room.
The activity of programming can help make you more calm and confident. For some people it is excellent therapy, providing a series of small rewards and triumphs as the machine is tamed, step by step, to your intent. Unfortunately programming can also make you very neurotic: imaginative people tend to attempt extremely difficult programming tasks that go on and on.
A real computer freak, if you ask him for a program that prints calendars, will write a program that gives you your choice of Gregorian, Julian, Old Russian and French Revolutionary, in either small reference printouts or big ones so you can write in.