Programmers are from Mars, users are from Venus


Users ask "What hardware/software can do what I want?" Programmers ask "What can I do with the hardware/software available?"

Code is the programmer's domain. The user interface is, like the name suggests, the user's domain.

This is one reason why user interfaces should be independant of applications. Make the interface data driven, and it can be combined with user preferences to synthesize the actual interface. It's more than just a skin. The data describes what the user wants, while the app describes what it can deliver. Meta-object protocols determine what can be realised on the user's screen.

Alan Kay said, "The best way to predict the future is to invent it.". Douglas Engelbart did it, and he did it 30 years before we bought it.