A small matter of programming - Perspectives on End User Computing, Bonnie A. Nardi, MIT Press, MA, USA, 1993, ISBN 0-262-14053-5, pp. 162, $30.00.
I don't think there could be two books more similar and at the same time more different than these two books. Both were published in 1993 by MIT Press; both Cypher and Nardi are currently scientists at Apple's Advanced Technologies Group; the topic of both books is End-User Programming (EUP).
On the other hand: Nardi actually wrote the complete text while Cypher is the editor and has several co-editors; Nardi's book has 162 pages, Cypher's 652; Nardi gives a personal view on EUP, Cypher's book gives a complete overview on Programming by Demonstration (PbD).
Let me start with my conclusion: both books will be attractive for everyone who is interested in customizable or extendable systems. The books provide very different views on EUP, so it is interesting to read them both.
Both books agree on the main premise, that EUP is necessary, because programs cannot fit, first, the different needs of the broad variety of their users, and, second, the changing needs of users whose experience increases over time. But both books emphasize a different way to achieve the requested flexibility. In his introduction, Allen Cypher presents a classification of EUP systems. First, users can change a program or it's behavior by setting preferences. Second, users can extend or change their generic program via scripting languages. Third, macro recorders allow users to define their private macro collection. Finally, PbD creates generalized programs from recorded actions.
Both authors agree that changing preferences is not general enough to satisfy the users' needs for flexibility. While Allen Cypher thinks end-users can't and don't want to learn programming languages, Bonnie Nardi makes very strong points why this is not the case. Macro recording is again not accepted as a sufficient means to EUP. While Allen Cypher thinks PbD is the only way to enable EUP, Nardi sees PbD as one interaction technique for EUP among others.
Let me now look at both books individually, starting with Bonnie Nardi's. In her introduction, Nardi sets the stage by making clear who she thinks end-users are and what EUP is. Furthermore, she explains the empirical studies that she uses later in the book to support her argumentation.
In the second chapter, Nardi makes clear in an intriguing way that human-human communication is not the ideal model for human-computer communication - not only because computers are not humans, but because conversational communication is "characterized by ambiguity, lack of precision, and, sometimes, complete failure."
Based on this, Chapter 3 delivers the main arguments why end-users are able to use programming languages. First, people use formal languages and systems, e.g. numbers or the alphabet, but also much more complex formal notations like the baseball scoresheet. Second, successful examples of EUP exist. Spreadsheets and CAD programs are presented as examples and the main results of earlier ethnographic studies are repeated to support the line of argumentation. This chapter is the core of the book and it explains in a straightforward way why EUP is possible -if the appropriate programming language is provided. The key to the solution are task-specific programming languages, as used in the example systems.
Chapter 4 compares different interaction techniques that can be used for EUP: visual programming; forms-based systems; programming by example modification; programming by example; and automatic programming by informal program specification. The essence of the comparison of these techniques is that there is no right way for every possible situation, and programming is not only a question of interaction techniques. With this classification of PbD as an interaction technique for EUP the relationship between both books becomes even clearer - and some remarks in Cypher's book indicate that he might agree with Nardi's points.
In Chapter 5, examples of hybrid visual programming environments are explained and results of earlier studies are cited to emphasize their usefulness. Chapter 6 explains collaborative work practices, based on interviews and experiences with spreadsheet and CAD users, and with software development teams. These examples demonstrate that among groups of users different levels of programming sophistication exist or develop. While most users can program simple extensions or customizations, there are always users with higher skills or more interest, who can develop more complicated programs. These "lay designers" (who might be called "gardeners" when their function becomes official) can at the same time guarantee some level of compatibility between the different individualized systems. Finally, scenarios of EUP with a hybrid visual programming environment are presented.
For me, the main points of Nardi's book are: EUP is necessary; human-human communication is not a good model for human-computer communication; people can use formal languages if they are task-specific; hybrid visual formalisms were successful in EUP systems for different domains; due to the emergence of "lay designers", collaborative work practices make EUP even more reasonable. Based on results of several empirical studies, Bonnie Nardi explains why and how EUP can be successful. She makes her points in a very fascinating way, which makes reading this book fun.
Allen Cypher's approach to convince the reader that PbD is the only reasonable way to EUP is totally different from Nardi's one-piece, good-to-read argumentation line. Cypher's book is a collection of different papers by different authors - although it is a very good collection.
The book starts with an introduction by Allen Cypher, in which he sets the goals for the collection. Here he distinguishes between the different types of EUP systems mentioned above. Furthermore, the main weakness of the PbD approach, namely how to make the correct generalization, is explained. There are three main parts of the book. In the first section, 18 systems are described in 18 chapters. In the second section, entitled "Components", single aspects of PbD systems are discussed in 6 chapters. Section 3 is called "Perspectives", and this is exactly what these 3 chapters are about.
The mere number of 27 chapters makes it impossible to comment on all of them. Even listing them seems to be unreasonable. So let me start by saying something about the first impression that this book gives by its appearance, before I comment on the sections: the structure of this volume is excellent. The papers are ordered in a reasonable way, and each section begins with a short description of all of it's chapters. Furthermore, keywords are listed on the border of the page, making the search for a paragraph much easier. Each system description (chapter in Section I ) starts with a characterizing picture and ends with a summarizing page that classifies the system according to a taxonomy.
The system descriptions in Section 1 cover a broad variety of systems. The starting point is Pygmalion, a system initially developed in 1975 by D.C. Smith, described from today's point of view by the developer of the system - a rather interesting perspective. This section of the book furthermore covers descriptions of well-known (and well-published) systems like GARNET, Chimera, Mondrian, and Eager, and less broadly known approaches. The selection of system descriptions gives a perfect overview of what is there and what is still missing, what can and what cannot be expected from PbD. In this section it becomes clear that today's research in PbD aims more and more in the direction that Nardi argued for: a hybrid system, with PbD in its place, accompanied by other interaction techniques where they are appropriate. Especially, the system descriptions that present solutions to the generalization problem show that some type of programming is necessary to make the system perform in the intended way. So it seems that both books have the same underlying philosophy - it is just that this is the main point for Nardi while it is a passing comment by Cypher.
Each of the six chapters of Section 2 describes a single approach to a specific problem in PbD and therefore delivers more detailed technical information. They complement the system descriptions in a reasonable way.
The chapters in Section 3 take a perspective that is more general then in all the chapters before. The first of the chapters explains the taxonomy that is used to classify the systems described in the first section. The next chapter introduces the term "demonstrational interfaces" as an extension of direct manipulation interfaces. This is an interesting side-path as this does include systems that are not necessarily programmable but focuses on the "demonstrational" approach. The last chapter presents a problem that can be seen as one major motivation for PbD systems, "just-in-time" programming. The author argues that this problem might be overcome by programming "during task-time".
While the sequence of the sections might sound arbitrary in this summary, it is reasonable when you read the complete book. But the three sections are not all that is in this book - there are 125 more pages to come.
Section 4 holds the 3 appendices: a chronology that recapitulates the development of the field from 1970 until 1993; a test suite that contains 32 example tasks that can help developers of PbD systems to test their systems; and finally a glossary with the important terms used in this field. The book closes with a bibliography, the list of contributors, and the index.
Let me summarize: Cypher's book gives a comprehensive overview of the current status of research in the Programming by Demonstration field. It is interesting to read the complete book, and it can additionally serve as a reference work.
As I said earlier, from my point of view it is worthwhile to read both books, Bonnie Nardi's "A Small Matter of Programming" and Allen Cypher's "Watch What I Do". I suggest starting with the shorter and easy to read book by Nardi. This gives you the right mind set to classify and interpret the papers in the heavy volume by Cypher. The books should be of interest for everyone - researchers, students, and professionals - interested in the future of the development of interactive systems.
back to ... Watch What I Do