Software Design in an Exploratory Culture III

Toward a Pattern Language to Discover, Learn, and Communicate Exploratory Programming Practices

PI: Professor Dr. Robert Hirschfeld


Understanding unfolds only gradually. Software developers thus strive for simple and malleable design models and code elements to react to insights and changes swiftly and concisely. While Design Thinking and agile development provide guidance mainly for user-centered and collaborative activities, complementary processes and supporting technologies suitable for exploring complex problem domains and solution spaces have been neglected. With programming-as-theory-building at the core of software development, we apply the idea of pattern languages to capture original and modern exploratory programming practices. Based on the concise representation of each pattern, such a pattern language for exploratory programming can support developers discover, learn, and communicate best practices to arrive at and maintain a high-quality code base.

We argue that software development will greatly benefit from such a synergy of insights from the Design Thinking and Design Patterns communities to provide means to explore interesting problem domains and propose meaningful software solutions more creatively and effectively.

In the first and second year, we established a basis for pattern mining, writing, and evaluation, resulting in 15 drafts and over 100 sketches. In the third year, we will continue those efforts and focus on developing an open platform for our catalog for its onward, peer-reviewed growth.


Marcel Taeumel, Patrick Rein, Jens Lincke, Richard Gabriel