Recently I run into a man called Bret Victor on a friend’s blog, and I watched this guy’s presentation. In his presentation, he showed several pretty interesting demos, where programmers or artists can see the immediate effect of their programming. The demos consist of drawing pictures, designing games, building animations, writing algorithms, debugging electrical circuits, etc. The demos are quite eye-catching.
Bret also talked about his motivation for all his work. He said he lives a principle. He wants immediate feed-back when he is creating stuff. Well, I guess there are many ways of living a good life. Some people do stuff that they are really fond of, and some people live for a principle. In the talk, Bret spent some time on arguing that living a principle is a good life style, but he left it unanswered the question that how to find a good principle to live with, despite the fact that he took about 10 years for that process. There are other ways that lead to arguably equally good living style, and not everyone has a decade to risk with finding their principles. So, although he tried to justify his inner motivation, he didn’t really show me why I should care about it.
Nevertheless, the demos are pretty impressive. As it is illustrated in the presentation, programming, or say, fixed-width font text editor is a pretty good human interface for productive work. It provides a clean, gridded canvas for abstract symbols, which provides clean presentation (as long as the programming language is well-designed) and easy manipulation with clear and precise details. The output of the editor could be easily copied and replicated since it is usually only plain text.
The downside of this interface is that it is often too abstract, that we need visualized assistants on programming the texts and checking the results. Good visualization really makes iterating over designs faster, and it is really nice if the iteration speed would be pushed to the speed of human reaction and creates the illusion of “immediate responses”. I think this is the most valuable part of his work. Productive work often requires evolving the design over multiple iterations, and he makes the bottleneck the human reaction time on judging the design, rather than the labor time on creating the design output with the tools.
So, programming interface with immediate visual or audio feedback, with this idea in mind, maybe we can write programs for our daily lives, like for creating documents, presentations, and small musical pieces. That is, we can build programs that has the power of Word/LaTeX, Powerpoint, Lilypond, but has a better user interface. We hence need a powerful yet clean language for these specific work, and also a powerful yet clean IDE with immediate visual or audio feedback. Designing those requires time for iterating as well, and also requires a good understanding on the needs of those productive work.
The biggest take-away, enabling immediate feedback is a good principle for user interface designing, and it is a really important principle for designing the UIs for productive tools. When technology provides us the ability to provide immediate feedback to users, we should seriously think about it.