The Growing User and the Perennial Beginner
ignorethecode.net
ignorethecode.net
So you basically have two modes and the problem is you can't really flip a switch to move between them (i.e. "expert" mode is always a UI fail) or meld them (UI that changes on you is unpredictable and thus annoying). Beginners turn into pros. But it doesn't happen at an instant, it's gradual, and people become more versed in certain aspects of a program and not others, so there can't just be this global switch. And pros turn into beginners, given enough time since last use or a change of focus. So the way I see it you can either target one, or the other, or find a compromise in the middle - but realize it's not going to be a win-win. I really can't think of a good win-win UI example in the real world.
So does Ruby.
puts "hello world"
# and later
homing_missile.target_pos = some_monster.public_method(:pos)Using it for simple lists of numbers – maybe even with a bit of arithmetic – is indeed easy to pick up. I have, however, seen a lot of casual users of Excel struggle with getting their finished lists look a certain way and with printing them out. I think there is potential for optimization in that area. Still, apps that cover the whole triangle will probably always be somewhat intimidating for beginners.
I, for example, like InDesign (Adobe’s layout tool) a lot but it is completely inaccessible to beginners. You basically need to read up on it before you can even start putting the first word on a page, even if you are, say, versed in using word processing software. I think that’s perfectly alright, InDesign is an incredibly powerful tool that doesn’t need to be accessible to beginners.
That is, they're fairly easy to pick up for a beginner, as there are tons of "hello world" tutorials and with all of the libraries and frameworks available can be used to make large production applications but moving from one to the other requires incredible amounts of work.
That being said, I don't think many of the typical user interface guidelines apply to programming languages anyway, so the point is probably moot.
The author is talking about a user interface, not how-to books, so it's hard to apply the principle to programming. (How a PL implementation is documented is a a little similar but not the same.)
The example of Acorn and Pixelmator is strange. Acorn is not much easier to pick up, it has almost all the buttons. Personally found it harder to use and understand what it's for. If you don't understand it's particular use case and want to do a common task that it doesn't have, it suddenly becomes very hard to use.
In the current app ecosystem pro and consumer apps are indeed divided but there's no reason for this except tradition. You can present a full featured app as a simple consumer app by changing its UI. Then slowly reveal buttons and features if you detect it gets used everyday for example.
You could use a feature search UI, letting people use keywords to find the features they need. Basically a modern skin on the old command line.
Just because apps are done a certain way now doesn't mean you should copy this trend.
Programming languages are a good comparison. A full featured programming language can be easy enough for beginners if it has good tutorials and obviously serve serious users. A limited programming language will become hard in many beginner cases. DSLs usually make it clear what they are, a GUI like Acorn doesn't.
It's possible to make full featured programming languages look easy to beginners. LISP does it in a way, although its syntax looks unpleasant the fundamentals are easy to pick up. The same can be done for GUIs by introducing fundamentals that repeat. That might seem hard because today we have a mishmash of menus and buttons, where the only way to simplify is to have fewer buttons and menus and make them bigger.
Similarly, searching doesn't work well for beginners, because they don't know what to search for. If you only know what you want the result to be, and not how to get there, or what features you need to achieve the desired result, it's easier if you can just click on things you see, and undo changes if they're going in the wrong direction.
Microsoft tried pretty much everything they could think of in Word, attempting to do exactly what you're suggesting: make an app that works for professionals, but is discoverable for beginners. This is where things like Clippy came from. It's really, really hard to get this right.
What I'm talking about is more akin to Google and Wolfram, when they give you an answer to a math problem. When you ask "how much water is in the oceans" it would try to figure out if you meant volume, show you related formulas, etc. Similarly for a photo editor you'd say "make the head bigger" and it would list the features one would need, like the selection and resize tools.
So if you only know what the result should be, use keywords to find features, then click to see if they're the right features. It's perfectly doable, just hasn't been attempted.
If you can hide complex functionality behind a simple user interface, it's not really a complex user interface, right?
Maybe Lion could be an example because of Launchpad, but not Snow Leopard.