

"Text editors should take a lesson from video games." - silentbicycle
http://ozmm.org/posts/learning_your_editor.html

======
12ren
An editor is more like a "toy" than a "game"
(<http://news.ycombinator.com/item?id=407816>), because it lacks goals.

 _This “toy” should be the core mechanic of the game minus any goals or
decisions. There is no win or lose state, just a fun thing to play with._

I liked ken's comment about Mirror's Edge not unlocking abilities, but you
can't use them til you encounter the appropriate geometry in the environment
(or I think, maybe you could use them before, but you didn't need to, as there
were simpler more obvious ways to complete the task using abilities that you
already knew about).

For example: movement in an editor. The cursor keys will allow you to do
anything; but the word-movement keys can often do what you need more
efficiently. Then, in vim (using it as an example because I know it), you can
search to the right using "f<somechar>", and there's also F, t, T, ; and ,.

Interestingly, I've only really started to use the latter ones after years,
because I'm having a touch of RSI, and I have a need for fewer keystrokes.

One could convert vim (for example) from a toy into a game by adding goals.
These goals would have progressively greater difficulty such that they _need_
the more sophisticated controls to accomplish them.

Having a _need_ for something gives you a motivation for learning it; but it
also makes it cognitively easier to learn. When you have a gap or lack in your
mind crying out for a solution, acquiring the solution that fits that gap
makes you feel "ah, that's better!". This makes it more memorable; and creates
a strong link from the problem to the solution, making the solution accessible
to you the next time you need it - making it useful to you, in practice.

~~~
KevBurnsJr
Toy vs Game, an interesting distinction in this context.

------
russell
A couple of decades ago, a couple of us wrote a word processor. We thought a
lot about the issues of novices and usability and came to the conclusion that
users are novices for only a short time and spend most of their time as
intermediates. True power users are few. So basic operations should be
intuitive even if not strictly consistent. Everything else should be easily
discoverable. Really esoteric things could be left to the manual, but still
discoverable.

A novice friendly interface should not impede an experienced user, and there
should not be experience based modes. You don't see much of these days. MS
Word is an example of a crappy interface. Some non-esoteric functions are
hidden away in non-discoverable corners and it does magical things as a
default. Eclipse is another program with a crappy interface, because of
different modes and views. I have finally accommodated my self because it
eases the intense pain of Java programming, but on the whole I would rather
use UltraEdit.

Of course none of this applies to emacs users. They are are a secret society
unto, themselves, kind of like the Masons.

~~~
silentbicycle
> Of course none of this applies to emacs users. They are are a secret society
> unto, themselves, kind of like the Masons.

Dude. Using Emacs really isn't _that hard_ , and mystifying it doesn't do
anybody any favors. (I can understand if it's not your cup of tea, though.) It
just does a bad job of "creating the illusion of simplicity" (as Grady Booch
once put it).

~~~
arockwell
I love emacs, but it is anything but inuitive. None of its features are
discoverable and to learn how to use it you have to read a bunch of info
pages.

~~~
pivo
Um.. _most_ of Emacs' features are discoverable:

M-x describe-bindings - List of all keybindings for the current mode

M-x describe-mode - Information about the current major mode

M-x apropos - Search for info on subject

Emacs is _the_ self describing editor!

~~~
silentbicycle
The problem is, to read those, _you already have to know what "M-x" means._
Catch-22.

Emacs _is_ self-documenting, yes, but its help system (much like the rest of
it!) seems to be designed for experienced users who can't quite remember the
syntax for font-lock-keywords* , rather than new users who trying to figure
out how to switch buffers or what "font-lock" even is. It's awesome once you
_get_ it, but using a help system to answer questions about basics shouldn't
assume experience.

* <http://www.emacswiki.org/emacs/FontLockKeywords>

The tutorial does help, though.

~~~
mct
emacs tells you what "M-x" means on the introduction screen each time you
start it.

 _The only "intuitive" interface is the nipple. After that, it's all learned._

~~~
ars
>The only "intuitive" interface is the nipple. After that, it's all learned.

No, not really. Babies need to learn to latch properly or it hurts the mother.

------
foulmouthboy
Any complex system that is useful when only provided the most basic
functionality could "take a lesson from video games". It's essentially
building the learning curve of the system into the functionality. It's really
not unlike HN's system of disabling downvoting until certain karma is reached.

IT professionals I've worked with do this kind of stuff all the time to keep
employees from breaking stuff until it's shown that the employees can handle
the added functionality.

~~~
teej
Progressive learning for apps in general is definitely an improvement. That
being said, I don't agree that roping off functionaltiy is the best way for
advanced text editors to lower the learning curve. Contextual hints are a
better way to introduce shortcuts for those sort of apps.

I also disagree that HN's downvoting feature is an example of progressive
learning. It's more about controlling trolls and setting expectations in the
community. You have to earn your keep before you can negatively affect change.
It's a feature of the meritocracy, not of the usability.

~~~
foulmouthboy
I agree with you that the downvoting is a meritocracy, but that's my point. A
user has to earn the right to use that particular function. The difference in
learning how a piece of functionality is used and why or in when it should be
used is two sides of the same coin.

~~~
andreyf
_A user has to earn the right to use that particular function_

Not to detract from the discussion, but this isn't an actual feature on YC.
AFAIK, nobody can down-vote (although editors can [dead]).

~~~
arockwell
You have to reach a certain karma score to be able to downvote individual
comments. I can't remember what the score is, but its fairly low.

~~~
kragen
50 or so in my case. But the person who thinks the feature doesn't exist has a
karma of 2053. Maybe it's not conditioned just on karma?

~~~
allenbrunson
no, it's that you're talking about two different things.

you can downvote _comments_ once your karma goes over a certain score. but
_nobody_ can downvote submissions. no doubt that's what andreyf was talking
about.

also, the karma numbers keep changing, which is why nobody seems to know for
sure where the thresholds are. back when i got the right to downvote comments,
you only needed about 20 points.

~~~
kragen
Thanks for the clarification!

------
ken
Mirror's Edge (the only game in recent memory that looked interesting to me)
seems to brag that it doesn't have you "unlock" features as you go along --
your character can always do everything, but you seem to gain skills simply
because you come across geometry that allows it. They liken this to Prince of
Persia, which I have not played but apparently was similar.

Many other classic games (and most of my favorites) follow the same pattern. I
do not think Tetris or Pac-Man would be better if you "unlocked" features on
higher levels.

I do wish my text editor was better, but I want to make programming more like
other successful cooperative creative activities. Maybe a Brooks surgical
team, or an orchestra, would be more appropriate inspiration.

Part of me is sad that our craft seems to be losing its "take 10 years to
really learn your tools". Just because "Rock Band" is a hit doesn't mean the
Seattle Symphony is struggling to find musicians.

------
KevBurnsJr
Microsoft did this with the Paperclip in Microsoft Word.

Progressive disclosure works well in computer games, which are relatively
linear. Shortcuts in text editors are just that - shortcuts. Perhaps it might
be more appropriate to ambiently detect when someone is going the long way
about a task, and recommend a shorter route.

Ex sequence: End, Shift + Home, Del

Recommends: Ctrl + Shift + Del (Scintilla line delete shortcut)

------
silentbicycle
Emacs already does something like this, albeit to a much lesser extent: Some
useful commands, such as set-goal-column (C-x C-n) or narrow-to-region (C-x n
n) are disabled by default and will ask if you actually intended to use them -
otherwise, bumping C-x C-n would be really confusing, for example. (It makes
the cursor jump to a specific column whenever you move up/down a line.)

Of course, its interface could be better structured for gradual learning -
while the documentation is certainly there (info pages, C-h t), there's a lot
to learn upfront. Advanced features for difficult stuff shouldn't get in the
way of basic tasks.

~~~
mechanical_fish
I just don't think there's a market for yet another Simplified Emacs. Isn't
that what jove and joe and nano are for? Isn't that what every other editor on
the market is for?

The problem with learning emacs is that there are two phases. There's the
stuff that you _have_ to know or you can't do much of anything. Some of that
is inevitably complicated, because it's slightly different from anything that
a Mac or Windows user has seen before -- keyboard navigation, multiple
modifier keys that can be used consecutively, keymaps and keybindings, major
and minor modes, kill-and-yank instead of cut-and-paste, buffers, Emacs
"windows" versus OS "windows", panes, prefix arguments).

The idea of having a gradual reveal of these features is a good one. But isn't
that called the "emacs tutorial" and hasn't it been built into the editor for
twenty years? ("C-h t"). Other people have argued that some of these features
should be altered or compromised or disabled for new users -- it has been
tried many times. I'm of the camp that _hates_ this: You shouldn't screw up
the carefully-designed semantics of emacs by installing Mac-style copy-and-
paste. If you want to just _visit_ the emacs world but aren't yet prepared to
live there you should just go use TextMate or something in the meantime. It's
not as if there are no alternatives.

The other, much larger portion of the learning curve is all the nonessential
but incredibly powerful stuff that emacs can do: macros, customization, Dired-
mode, shell-mode, hippie-expand, dabbrev, yasnippet, magit, Lisp interactive
mode, gnus, org-mode, ido, Icicles, Zippy the Pinhead, Towers of Hanoi, blah
blah blah. But it would take freaking _forever_ to design a video-game-style
walkthrough of _all_ of that stuff, and the result would take forever to play
through, and it would bore a lot of people because everyone's favorite 10% of
the emacs universe is different.

I do think the emacs world would benefit from a lot more screencasts, but I'm
not sure that going beyond that to game design is worth the trouble.

~~~
mechanical_fish
Hm, on second thought, I will amend my previous skepticism slightly. I wonder
whether some emacs _minigames_ might be useful. It might be that the best way
to learn about, say, the rectangle commands is to play a little rectangle
minigame.

What I envision is not a single gigantic emacs game in which you start at
level 1 ("a four year old") and proceed to level 793 ("Yegge"), but a
directory full of games that you can choose to play in any order, depending on
your interests.

Clearly the next step is for someone to produce an emacs mode for writing
wizard-ish tutorials about other emacs modes. ;)

~~~
khafra
That's actually what I was expecting the first time I hit C-h t: Not just a
verbal description of each feature, but a demonstration of it, perhaps in a
sandboxed environment where only the features described so far were enabled,
along with some command to exit or reset everything. I still haven't learned
emacs, so I'd find that valuable.

~~~
d0mine
You could start with <http://video.google.com/videosearch?q=emacs>

------
jmtame
I think the next killer apps will consist of software that is gradually opened
up as the user becomes more familiar with it. You can take this approach with
anything, but I love the fact that the writer referenced to video games. Heck,
there is a LOT from video games we can learn like a point system. If you want
a great example, look at www.thesixtyone.com (I am not behind that, but I am
familiar with who created it, former guys who worked at Electronic Arts).

You can make the most complex software work for the simplest every day person
if you open it up gradually. Why do I have all of the crap that currently
exists in Microsoft Word if I don't even need it? Arguably, this is why there
is so much hype around products such as Basecamp that are a world simpler than
the current products that exist. We're trying to build 1 product to accomodate
100% of its users.

------
thwarted
Unfortunately, the goals of a video game are not similar to the goals of
learning to use and using an editor. The only thing you gain from not having
all tools immediately available at your disposal/discoverable is frustration
because you're still in the editor and not done editing. Game playing is a
task unto itself, editing is a means to an end.

------
GrandMasterBirt
When you get to the last boss of a video game you dont stop and think: "What
was that command that was used to whip out my stape gun so I can staple his
tentacles to the wall since I havent used that gun since level 1?" Then go
though 10 manuals, google, and a buch of other crap and find out the command
was: ^x+' obvious right? Just like copy-paste in vim.

