The Role of Ethnographic Studies in Empirical Software Engineering
Helen Sharp, Yvonne Dittrich, and Cleidson R.B. de Souza: "The Role of Ethnographic Studies in Empirical Software Engineering". IEEE Trans. Software Engineering, 42(8), August 2016, 10.1109/TSE.2016.2519887.
Ethnography is a qualitative research method used to study people and cultures. It is largely adopted in disciplines outside software engineering, including different areas of computer science. Ethnography can provide an in-depth understanding of the socio-technological realities surrounding everyday software development practice, i.e., it can help to uncover not only what practitioners do, but also why they do it. Despite its potential, ethnography has not been widely adopted by empirical software engineering researchers, and receives little attention in the related literature. The main goal of this paper is to explain how empirical software engineering researchers would benefit from adopting ethnography. This is achieved by explicating four roles that ethnography can play in furthering the goals of empirical software engineering: to strengthen investigations into the social and human aspects of software engineering; to inform the design of software engineering tools; to improve method and process development; and to inform research programmes. This article introduces ethnography, explains its origin, context, strengths and weaknesses, and presents a set of dimensions that position ethnography as a useful and usable approach to empirical software engineering research. Throughout the paper, relevant examples of ethnographic studies of software practice are used to illustrate the points being made.
My classes in engineering taught me to look down on anything that wasn't a controlled laboratory experiment whose results could be neatly displayed in a scatterplot or bar chart. It wasn't until the mid-2000s that I accepted (grudgingly at first) that the "fuzzy" methods used by the social sciences were (a) just as rigorous when used properly and (b) the only ones that could produce certain valuable insights.
This paper from Sharp et al. is what my younger self should have read. It focuses on one method that is becoming commonplace in some parts of computer science, but which is not yet used widely in empirical software engineering studies. Over the course of 19 pages, the authors explain what it is, how to use it, when to use it, and what to expect from it. It's a great starting point for anyone who is trying to figure out the socio-technical tangle they find themselves in, and if anyone ever creates a one-term undergrad introduction to empirical software engineering, a couple of lectures and an assignment could be drawn from it more or less directly.