Gradual Enhancement

  • Adam Wiggins' story (paraphrasing) - friend wanted to have a clock on his website, Adam gave him a PHP snippet, and coming back a few weeks later that friend cobbled together an amazing interactive website, by piecing together various random PHP bits
  • gradual enhancement seems like important idea for End-User Programming - allowing users to change small pieces of functionality without feeling overwhelmed, and slowly "luring them in"

Consider the typical trajectory of Emacs power users. They start by downloading Emacs, and learning enough of it for their editing needs. At some point, they want to do some basic customization. Then some less basic customization, which is likely to be the first contact with Emacs Lisp, even if it's only a copy-paste of a small function found on the Emacs Stack Exchange. With the confidence gained from such minor tweaking, they move on to more ambitious tasks. Some end up developing and maintaining major Emacs Lisp packages, but most don't, and that's perfectly fine.

A particularly useful design pattern that exemplifies commensurate effort is progressive disclosure. In progressive disclosure, advanced or less frequently used controls are hidden in an expanding pane, which offers a small expand/hide toggle control to give the user access. This type of design is a boon to expert users, because the toggle is usually “sticky”; that is, once left open, it stays that way. It also gives intermediates an easy window into more advanced features but allows them to be stowed away neatly when not in use.

About Face

  • while "progressive disclosure" is described here in terms of advanced UI controls appearing when the user wants them (is ready for them), I can see a clear parallel to how we could progressively show more of the "internals" of the system, or allow users to make more complex things, enhancing what they already know
Szymon Kaliski © 2021