This Article 
 Bibliographic References 
 Add to: 
Writing Code to Prototype, Ideate, and Discover
September/October 2009 (vol. 26 no. 5)
pp. 18-24
People often write code to prototype, ideate, and discover. To do this, they work opportunistically, emphasizing speed and ease of development over code robustness and maintainability. Quickly hacking a program together can provide both practical and learning benefits for novices and experts: professional programmers and designers prototype to explore and communicate ideas, scientists program laboratory instruments, and entrepreneurs assemble complex spreadsheets to better understand their business. Their diverse activities share an emphasis on speed and ease of development over robustness and maintainability.

1. S. Clarke, "What Is an End-User Software Engineer?" End-User Software Eng., Internationales Begegnungs- and Forschungszentrum für Informatik, 2007; .
2. S. Houde and C. Hill, "What Do Prototypes Prototype?" Handbook of Human–Computer Interaction, M. Helander, T.Ê. Landauer, and P. Prabhu eds., Elsevier Science, 1997, pp. 367–382.
3. B. Hartmann, S. Doorley, and S.R. Klemmer, "Hacking, Mashing, Gluing: Understanding Opportunistic Design," IEEE Pervasive Computing, vol. 7, no. 3, 2008, pp. 46–54.
4. M. Schrage, Serious Play: How the World's Best Companies Simulate to Innovate, Harvard Business School Press, 1999.
5. J. Brandt et al., "Two Studies of Opportunistic Programming: Interleaving Web Foraging, Learning, and Writing Code," Proc. 27th Int'l Conf. Human Factors in Computing Systems (CHI 09), ACM Press, 2009, pp. 1589–1598.
6. A.J. Ko, B.A. Myers, and H.H. Aung, "Six Learning Barriers in End-User Programming Systems," Proc. 2004 IEEE Symp. Visual Languages—Human-Centric Computing (VLHCC 04), IEEE CS Press, 2004, pp. 199–206.
7. T.D. LaToza, G. Venolia, and R. De Line, "Maintaining Mental Models: A Study of Developer Work Habits," Proc. 28th Int'l Conf. Software Eng. (ICSE 06), ACM Press, 2006, pp. 492–501.
8. R.B. Yeh, A. Paepcke, and S.R. Klemmer, "Iterative Design and Evaluation of an Event Architecture for Pen-and-Paper Interfaces," Proc. 21st Ann. ACM Symp. User Interface Software and Technology (UIST 08), ACM Press, 2008, pp. 111–120.
9. T.M. O'Brien, "Dead Time (…Code, Compile, Wait, Wait, Wait, Test, Repeat)," blog, 30 Mar. 2006; .
10. J.K. Ousterhout, "Scripting: Higher-Level Programming for the 21st Century," Computer, vol. 31, no. 3, 1998, pp. 23–30.
11. B. Hartmann et al., "Programming by a Sample: Rap-idly Creating Web Applications with d.mix," Proc. 20th Ann. ACM Symp. User Interface Software and Technology (UIST 07), ACM Press, 2007, pp. 241–250.
12. B. Hartmann et al., "Design as Exploration: Creating Interfaces through Parallel Authoring and Runtime Tuning," Proc. 21st ACM Symp. User Interface Software and Technology (UIST 08), ACM Press, 2008, pp. 91–100.

Index Terms:
Writing,Prototypes,Programming profession,Hardware,Software prototyping,Software engineering,HTML,Java,Interleaved codes,Compressors,software engineering,opportunistic programming,prototyping,debugging
"Writing Code to Prototype, Ideate, and Discover," IEEE Software, vol. 26, no. 5, pp. 18-24, Sept.-Oct. 2009, doi:10.1109/MS.2009.147
Usage of this product signifies your acceptance of the Terms of Use.