Most interesting take-away from me is the idea that failure is important to the process. As long as that failure comes with great feedback (in a game, the 'character' doing something other than what you want) a user can learn.
This would seem to extend beyond turning your interface into a 'game'... maybe it means that we should be much more focused on providing meaningful feedback. When a user does something wrong, translate that into an action, comment, or something that clearly provides an opportunity for learning. Makes sense...
Interestingly, I've experimented with something like that in one of our products. Instead of trying to provide the shortest path to complete an action, I designed the interface to take the user through the same steps they'll use when actually managing the stuff they create (with lots of helpful prompting). This isn't necessarily new, but it was new for me. The early returns have been pretty good with this approach.
One thing I might take a stab at changing: Instead of providing immediate prompts for the user, let them click around and only display the prompts after enough (failure) time has elapsed....
I seem to remember having user experiences where the first couple of times I did something wrong, I got a short warning sound or flashing menu bar, and after a couple of more of them, a dialog box popped up with a more elaborate description. I didn't think about it at the time, but I do believe that encourages clicking around more than getting the dialog box every time.
Nice point. I guess learning means experimenting, in which failure is information. I have not failed 1000 times. I have succeeded in proving that those 1000 ways do not work. The buzz comes from the transition from not knowing to knowing. A sensation of progress.
Maybe it's similar to users having more satisfaction from bugs fixed in a later version than there never being bugs in the first place.
The very clear error messages in Java made it more game-like, and were unusual at the time (compared with eg. C memory management problems). The Java development team apparently played nintendo games to study what made them fun to use. Though out of fashion these days, it wasn't always the case. The popular scripting languages of today often have a REPL, which is more game-like. Do they have other game-like qualities?
This would seem to extend beyond turning your interface into a 'game'... maybe it means that we should be much more focused on providing meaningful feedback. When a user does something wrong, translate that into an action, comment, or something that clearly provides an opportunity for learning. Makes sense...
Interestingly, I've experimented with something like that in one of our products. Instead of trying to provide the shortest path to complete an action, I designed the interface to take the user through the same steps they'll use when actually managing the stuff they create (with lots of helpful prompting). This isn't necessarily new, but it was new for me. The early returns have been pretty good with this approach.
One thing I might take a stab at changing: Instead of providing immediate prompts for the user, let them click around and only display the prompts after enough (failure) time has elapsed....