Helping People Hack: Tools for Opportunistic Programming

Workshop in the Exploratorium museum, where all exhibits are created in-house

Project Abstract

Opportunistic Programming is a method of software development that emphasizes speed and ease of development over code robustness and maintainability. Coding in this way allows individuals to explore many ideas quickly, which has an important place in the overall sofware engineering process. Steps like prototyping, ideation and discovery are often best accomplished by building a functional piece of software quickly and easily without the typical concerns of a broader-scale software engineering project. Through fieldwork and a laboratory study, we are focusing on five characteristics of opportunistic programming: building software from scratch using high-level tools, adding new functionality through copy-and-paste, atypically rapid iteration, considering code to be impermanent, and facing a unique set of debugging challenges. Using results from these two projects, we plan on developing tools aimed at opportunistic programming that focus on debugging, code foraging and reuse, and documentation.

Publications

Joel Brandt, Philip Guo, Joel Lewenstein and Scott R. Klemmer. Opportunistic Programming: How Rapid Ideation and Prototyping Occur in Practice. Fourth Workshop on End-User Software Engineering. May, 2008.

People

Joel Brandt
Philip Guo
Joel Lewenstein
Scott Klemmer

Contact

Joel Brandt (jbrandt at stanford dot edu)

Questions about the website? Contact: hci-webmaster at lists.stanford.edu