An important requirement for creativity is to be able to try out many different
alternatives. Almost by definition, creative work means that the final design is not
necessarily known at the outset, so users must be encouraged to explore the space
[Fischer 1994]. This has a number of implications on the tools. Exploratory programming
has been promoted for a long time [Sheil 1983], but most tools still focus on projects
where the outcome is well-known in advance. In the terms of Green and Petre [Green
1996], we want systems with “low viscosity” – that make it easy to change all aspects of
the design.