Debugging and the experience of immediacy

D Ungar, H Lieberman, C Fry - Communications of the ACM, 1997 - dl.acm.org
Communications of the ACM, 1997dl.acm.org
mimic the real visual world in order to exploit a user's preexisting perceptual abilities. That is
why, for example, the Self user interface [1] renders each object as a slab with stereotypical
stage lighting, from above and left. Careful attention to perceptual legibility can ease the
burden on the programmer, so more attention can go to finding bugs and less attention to
finding objects on the screen. The user interface must allow programmers to manipulate
programs as well as see them. Here again, immediacy can be achieved by employing …
mimic the real visual world in order to exploit a user’s preexisting perceptual abilities. That is why, for example, the Self user interface [1] renders each object as a slab with stereotypical stage lighting, from above and left. Careful attention to perceptual legibility can ease the burden on the programmer, so more attention can go to finding bugs and less attention to finding objects on the screen. The user interface must allow programmers to manipulate programs as well as see them. Here again, immediacy can be achieved by employing affordances that match the user’s prior experiences or that reduce the need for the user to change focus. A bad user interface draws so much attention to itself it distracts from debugging, and a good one lets a tired programmer debug much later into the night (if need be). But the user interface is only the lowest level of the system. The programming environment provides the lenses and levers that let the programmer inspect, manipulate, and debug the program. But if the lenses and levers feel like lenses and levers, the programmer is distanced from the program, has to mentally work harder to keep track of it, and is encumbered in attempts to fix it.
The principle of immediacy leads designers of programming environments to understand that the environment should make it effortless to examine a program—with all of its connections. If the programming environment you use cannot rapidly and effortlessly show you all the callers of a function, all
ACM Digital Library