February 2, 2005

Notes on "A Small Matter of Programming" (Bonnie Nardi)

Bonnie Nardi
A Small Matter of Programming
MIT Press, 1993
ISBN 0262140535 (Amazon info | bibtex)

Chapter 1 - Introduction

The motivation for this book: end users should be able to program their own computers - we should give them control over the computational resources on their desks. That control should not be restricted to a small elite caste of professional programmers (page 2). "Our technical choices advance social goals." [Dunlop and Kling 1991] (3) - my interpretation: end user programming (EUP) is democratic. Who are end users? They are not casual, novice or naive - rather, they are serious domain specialists who rely on computers for daily work but who do not want to become professional programmers or learn general purpose programming languages (5). Nardi mentions two successful end-user computing systems she studied through a number of ethnographies: spreadsheets and CAD packages. These two examples recur throughout the rest of the text. Nardi's focus is on "complete end user application development" - not isolated development stages such as UI design or prototyping.

Chapter 2 - Conversation and Computers

Why do we need EUP systems at all? Casual human-human conversation is a particularly bad model for HCI - we rely heavily on context in our interpretation of speech. Context is hard to impossible to grasp for a computer system. So we need a different model: the critical observation is that conversation is fundamentally practical and goal-directed - we adapt it to the particular setting and function. The purpose of a language act is of vital importance. Court proceedings use formal language. Formal languages are good for making unambiguous precise statements. End users have problems with specific programming languages such as C or Lisp, but not with the concept of a formal language itself.

Chapter 3 - Task-specific Programming Languages

We should focus on accomplishing tasks and formal communications systems that best support that set of tasks (29). Examples of formal languages used by non-programmers are baseball notation and knitting notation. "Ordinary people unproblematically learn and use formal languages and notations in everyday life." (37) Formal languages are readily learned if their users have a particular interest in something and the formal language expresses elements and relations of that domain of interest. Gardner 1985: "The soundness, the speed, and the complexity of the reasoning that individuals exhibit seem primarily a function of the degree of familiarity and organization of the materials being processed, rather than a function of any special or general ability of the person doing the reasoning." (38) EUP languages should be task-specific. General purpose languages are too far removed from tasks faced by users (39). Nardi devotes a long section to the spreadsheet programming model. Important characteristics of the spreadsheet language are: "high-level task-specific programming primitives, accessibility, and simple but useful control constructs"(41) as well as the textual nature of the programming language (49). Problems of task-specific languages are that they are expensive to build; that users have to learn many different interfaces; and, most importantly to Nardi, that it is difficult to pinpoint right level of task-specificity (50). Languiages should address the problem of extensibility. And don't forget about ease of use (52). To develop right task-specific language, it is imperative to study the tasks - Nardi advocates Activity Theory by Leont'ev and Distributed Cognition (p54 ff).

Chapter 4 - Interaction Techniques for End User Application Development

There is no silver bullet for EUP, but various strategies and programming models may be effective for sub-systems. Models discussed include visual programming, form-based systems, programming by example-modification (my note: look at php.net site with user-contributed code snippets), programming by example (with a lengthy discussion of its shortcomings *SHOULD BE SUMMARIZED HERE*), and automatic programming by informal program specification

Chapter 5 - Application Frameworks

Successful EUP systems will be hybrid systems that employ some combination of graphical and textual elements. Examples of hybrid approaches in spreadsheets, Logo, and CAD software are discussed. Spreadsheets are very hard to debug. Visual Formalisms are advocated as application frameworks - their most important characteristics are: exploitation of human visual skills, manipulability, specializability, broad applicability, and familiarity. Existing visual formalisms are graphs, plots, panels, maps, outlines, and tables. Powerful programming capabilities are derived from coupling a visual formalism with a textual formal language.

Chapter 6 - Collaborative Work Practices

There exists a continuum of programming skill from end users via local developers (or tinkerers) to professional programmers. (Can we expect all designers to be at least tinkerers?) How much of the work is done collaboratively (synchronously or asynchronously)? Nardi reports that customization files are often shared. My own experience shows that user communities are a crucial component for making programming by example modification work. Look at the PHP documentation at php.net - more often that not I just have to go to a particular function's help page to find user contributed sample code that solves my problem. Supporting local developers (at another point called "gardeners" when their support responsibilities become more formalized) to develop new macros (or input types in our TUI settings) is desirable. It is a good idea to enable more complex expert customization by allowing macro languages or linking-in of add-on objects created in a general programming language (layering) (110). PBE assumes end users do not gain expertise over time and always work in isolation (115).

Chapter 7 - Scenarios of End User Programming

Summary: "[D]esigners should start with a clear sense of and respect for the tasks that end users will be doing, and then design a system that best supports thse tasks." (125) Further ingredients to success are task specific programming languages, visual application frameworks, and support for collaborative programming practices.

Bibtex entry:

@book{160165,
 author = {Bonnie A. Nardi},
 title = {A small matter of programming: perspectives on end user computing},
 year = {1993},
 isbn = {0-262-1405305},
 publisher = {MIT Press},
 }
Posted by Bjoern Hartmann at February 2, 2005 12:51 AM