The State of the Art in End-User Software Engineering
A. Ko, R. Abraham, L. Beckwith, M. Burnett, M. Erwig, J. Lawrence, H. Lieberman, B. Myers, M. B. Rosson, G. Rothermel, C. Scaffidi, M. Shaw, S. Wiedenbeck
ACM Computing Surveys,
V. 43, no. 3, April 2011, pages 21:1 - 21:44.


Most programs today are written not by professional software developers, but by people with expertise in other domains working towards goals supported by computation. For example, a teacher might write a grading spreadsheet to save time grading or an interaction designer might use an interface builder to test some user interface design ideas. Although these end-user programmers may not have the same goals as professional developers, they do face many of the same software engineering challenges, including requirements gathering, de-sign, specification, reuse, testing, and debugging. This article summarizes and classifies research on these activities, defining the area of End-User Software Engineering (EUSE) and related terminology. The article then discusses empirical research about end-user software engineering activities and the technologies designed to support them. The article also addresses challenges in de-signing EUSE tools, including the power of surprise in affecting tool use and the influence of gender.