A modern personal computer today consists of layer upon layer of constructed systems of abstraction, from assembler languages, through programming languages and user interface environments, up to the visible levels of the applications in use. The structure and content of these layers is the result of thousands of design decisions made by numerous programmers and systems architects over a long period of time. It is by no means determined by the hardware at hand as a lot of different systems of abstractions are possible. In constructing these abstractions the systems developers were constantly confronted with the trade-off between simplicity and expressive power. The necessary result is that for every new layer that was added to the software system, some part of the design space was lost.
From the point of view of a computer user with little or no skill in programming who wants to create interactive software, the current technological development has created the following situation:
Having been the messenger of these bad news, she continues by showing a way out. Drawing from examples like knitting recipes and baseball charts, she shows that end-users can indeed work with complex formalisms as long as they are domain-specific. Her message is that in the design of tools for end users we should not be afraid of formalisms, given that we are very careful in hiding the underlying computer.
Does this mean we should just give up on the idea of providing end users with general computational tools? Our experience from observing kids learning to master the EUP-environment Cocoa makes us believe that Nardi might be a little too pessimistic.
In the version of Cocoa (former KidSim) that we used, the kids see two main windows on the screen. A Cocoa "world" consists of a set of icons on a grid. The behavior is specified visually as graphical transition rules. The lower window shows the kind of icons in a sample world, while a large window above shows instances of these icons in their positions on the grid. To create a new instance of an existing icon class, one simply drags an icon from the lower window onto the grid.
Underlying Cocoa’s split in two windows is the computer science concept of the class-instance relationship. On several occasions we found that the kids had a different interpretation of the relationship between these two windows.
On one occasion a kid saw a class icon as a finite pile of icons to be placed on the grid. This came through in the quote "Let’s put all of them out there". This mental model is fundamentally different from the intended conceptual model, but it is functionally almost identical for single-instance instantiations. The only difference being that the pile is not infinitely large.
On another occasion the kids started an interesting discussion about the class-instance relationship and about object identity. In Cocoa one can name both classes and their individual instances. The children made a wolf class, and placed some wolves on the grid. Having done this they wanted to give one of the wolves a name. They named it "Hank". A discussion evolved around what new wolves would be called. If all new wolves became "Hanks", how could one distinguish one wolf from another? They ended up trying it out. Through this discussion they learned about Cocoa’s "world view".
From these and similar observations we concluded that the class-instance conceptual model used in Cocoa was not obvious to the users. Spjelkavik found as many as 6 different alternative understandings in use.
Going through the tapes afterwards, we did a detailed analysis of the problem and found that with Cocoa’s computational model the rabbits would always escape the wolves before they got eaten. To understand the problem in detail we had to learn about Cocoa’s strategies for rule triggering. This analysis could not have been done by anybody without a background in computer science.
The interesting lesson learned was that with a relatively simple design, the system did not behave as expected due to Cocoa’s hidden computational model.
We believe that if care is taken in creating well structured magical worlds with well chosen metaphors, it is possible to build general end-user programming environments with more expressive power that the domain-specific systems proposed by Nardi. The full power of a programming language like Java might never be reached, but hopefully it is possible to build on the experience from systems like Cocoa and AgentSheets [Reppening] in making systems with enough expressive power to allow end-users to be creative also concerning systems behavior.
The lesson to learn is that the end-users are willing to pay a high price concerning aesthetics to be given the power of constructing the structure themselves. Would there be a potential for a similar software tool, where a high price had to be paid concerning visual appearance and structural freedom to allow for the construction of behavior?
Is it possible to create a computational world with the simplicity of LEGO, and with enough expressive power to make it worth while for end users to learn? Would it then be possible to re-create large portions of today’s popular software on this platform, to open up for creative modifications and re-use of systems?
The holy grail of end-user programming research might never be achieved, but that should not stop us from trying to push the limit as far as possible towards systems that satisfy Kay’s vision of true computer literacy.
Nardi B., A Small Matter of Programming, MIT Press, Cambridge, Ma, 1993
Spjelkavik E., Klasse og Instans
i slutt-bruker programmering, Masters Thesis,
Department of Computer Science, NTNU, Trondheim, Norway (forthcoming)