Abstract
Given a task description, a developer’s job is to alter the software system in a way that accomplishes the task, usually by fixing a bug or adding a new feature. Completing these tasks typically requires developers to use multiple tools, spanning multiple applications, within their environment. In this paper, we investigate how existing desktop environments align with and facilitate developers’ needs as they tackle their tasks. We examine how developers use their tools to perform their tasks and the ways in which these tools inhibit development velocity. Through a controlled user study with 17 subjects and a field study with 10 industrial engineers, we found that developers frequently formulate specific objectives, or goals, on-demand as they encounter new information when progressing through their tasks. These goals are often not achievable directly in the environment, forcing developers to translate their task into goals and their goals into the low-level actions provided by the environment. When carrying out these low-level actions, developers routinely perform extra work such as locating and integrating resources and adapting their needs to align with the capabilities of the environment. This extra work acts as a form of friction, limiting how quickly and directly developers can complete their tasks. Much of this extra work exists due to mismatches between current tools and environments and how developers actually work in practice. This work identifies seven types of development friction and provides design recommendations that future tools and environments could use to more effectively help developers complete their tasks.
Similar content being viewed by others
Notes
We label the people evaluated in the controlled study participants (P1..P17) and those from the field study subjects (S1..S10) throughout the paper.
Including the IDE-integrated shell.
References
Adeli M, Nelson N, Chattopadhyay S, Coffey H, Henley A, Sarma A (2020) Supporting code comprehension via annotations: right information at the right time and place. In: Proceedings of the symposium on visual languages and human-centric computing (VL/HCC). https://doi.org/10.1109/VL/HCC50065.2020.9127264https://doi.org/10.1109/VL/HCC50065.2020.9127264, pp 1–10
Alaboudi A, LaToza T D (2019) An exploratory study of live-streamed programming. In: Proceedings of the symposium on visual languages and human-centric computing (VL/HCC). https://doi.org/10.1109/VLHCC.2019.8818832, pp 5–13
Amann S, Proksch S, Nadi S, Mezini M (2016) A study of visual studio usage in practice. In: Proceedings of the international conference on software analysis, evolution, and reengineering (SANER), vol 1. https://doi.org/10.1109/SANER.2016.39, pp 124–134
Bannon L, Cypher A, Greenspan S, Monty M L (1983) Evaluation and analysis of users’ activity organization. In: Proceedings of the conference on human factors in computing systems (CHI). https://doi.org/10.1145/800045.801580, pp 54–57
Bao L, Xing Z, Xia X, Lo D, Hassan A E (2018) Inference of development activities from interaction with uninstrumented applications. Empir Softw Eng (ESE) 23(3):1313–1351. https://doi.org/10.1007/s10664-017-9547-8https://doi.org/10.1007/s10664-017-9547-8
Bardram J E, Jeuris S, Tell P, Houben S, Voida S (2019) Activity-centric computing systems. Commun ACM 62(8):72–81. https://doi.org/10.1145/3325901
Begel A, Khoo Y P, Zimmermann T (2010) Codebook: discovering and exploiting relationships in software repositories. In: Proceedings of the international conference on software engineering (ICSE). https://doi.org/10.1145/1806799.1806821, pp 125–134
Beller M, Gousios G, Panichella A, Zaidman A (2015) When, how, and why developers (do not) test in their IDEs. In: Proceedings of the joint meeting on European software engineering conference and the symposium on the foundations of software engineering (ESEC/FSE). https://doi.org/10.1145/2786805.2786843, pp 179–190
Bernstein M S, Shrager J, Winograd T (2008) Taskposé: exploring fluid boundaries in an associative window visualization. In: Proceedings of the symposium on user interface software and technology (UIST). https://doi.org/10.1145/1449715.1449753, pp 231–234
Bragdon A, Zeleznik R, Reiss S P, Karumuri S, Cheung W, Kaplan J, Coleman C, Adeputra F, LaViola J J Jr (2010) Code bubbles: a working set-based interface for code understanding and maintenance. In: Proceedings of the conference on human factors in computing systems (CHI). https://doi.org/10.1145/1753326.1753706, pp 2503–2512
Byström K, Hansen P (2005) Conceptual framework for tasks in information studies. J Am Soc Inf Sci Technol 56(10):1050–1061. https://doi.org/10.1002/asi.20197
Chapuis O, Roussel N (2007) Copy-and-paste between overlapping windows. In: Proceedings of the conference on human factors in computing systems (CHI). https://doi.org/10.1145/1240624.1240657https://doi.org/10.1145/1240624.1240657, pp 201–210
Chattopadhyay S, Nelson N, Gonzalez Y R, Leon A A, Pandita R, Sarma A (2019) Latent patterns in activities: a field study of how developers manage context. In: Proceedings of the international conference on software engineering (ICSE). https://doi.org/10.1109/ICSE.2019.00051, pp 373–383
Čubranić D, Murphy G C (2003) Hipikat: recommending pertinent software development artifacts. In: Proceedings of the international conference on software engineering (ICSE), pp 408–418
DeLine R, Rowan K (2010) Code canvas: zooming towards better development environments. In: Proceedings of the international conference on software engineering (ICSE), vol 2. https://doi.org/10.1145/1810295.1810331, pp 207–210
Dragunov A N, Dietterich T G, Johnsrude K, McLaughlin M, Li L, Herlocker J L (2005) Tasktracer: a desktop environment to support multi-tasking knowledge workers. In: Proceedings of the international conference on intelligent user interfaces (IUI). https://doi.org/10.1145/1040830.1040855, pp 75–82
Fritz T, Murphy G C (2010) Using information fragments to answer the questions developers ask. In: Proceedings of the international conference on software engineering (ICSE), ICSE ’10. https://doi.org/10.1145/1806799.1806828, pp 175–184
Garrison D R, Cleveland-Innes M, Koole M, Kappelman J (2006) Revisiting methodological issues in transcript analysis: negotiated coding and reliability. Internet High Educ 9(1):1–8. https://doi.org/10.1016/j.iheduc.2005.11.001https://doi.org/10.1016/j.iheduc.2005.11.001
González V M, Mark G, Mark G (2004) Constant, constant, multi-tasking craziness: managing multiple working spheres. In: Proceedings of the conference on human factors in computing systems (CHI). https://doi.org/10.1145/985692.985707, pp 113–120
Green T R (1989) Cognitive dimensions of notations. People and computers V, pp 443–460
Henley A Z, Fleming S D (2014) The patchworks code editor: toward faster navigation with less code arranging and fewer navigation mistakes. In: Proceedings of the conference on human factors in computing systems (CHI). https://doi.org/10.1145/2556288.2557073, pp 2511–2520
Jeuris S, Houben S, Bardram J (2014) Laevo: a temporal desktop interface for integrated knowledge work. In: Proceedings of the symposium on user interface software and technology (UIST). https://doi.org/10.1145/2642918.2647391, pp 679–688
Kaptelinin V (2003) UMEA: translating interaction histories into project contexts. In: Proceedings of the conference on human factors in computing systems (CHI). https://doi.org/10.1145/642611.642673https://doi.org/10.1145/642611.642673, pp 353–360
Kersten M, Murphy G C (2005) Mylar: a degree-of-Interest Model for IDEs. In: Proceedings of the international conference on aspect-oriented software development (AOSD). https://doi.org/10.1145/1052898.1052912https://doi.org/10.1145/1052898.1052912, pp 159–168
Ko A J, Myers B A, Coblenz M J, Aung H H (2006) An exploratory study of how developers seek, relate, and collect relevant information during software maintenance tasks. IEEE Trans Softw Eng 32(12):971–987. https://doi.org/10.1109/TSE.2006.116
Ko A J, DeLine R, Venolia G (2007) Information needs in collocated software development teams. In: Proceedings of the international conference on software engineering (ICSE). https://doi.org/10.1109/ICSE.2007.45, pp 344–353
LaToza T D, Venolia G, DeLine R (2006) Maintaining mental models: a study of developer work habits. In: Proceedings of the international conference on software engineering (ICSE), pp 492–501
Lawrance J, Bellamy R, Burnett M (2007) Scents in programs: does information foraging theory apply to program maintenance?. In: Proceedings of the symposium on visual languages and human-centric computing (VL/HCC). https://doi.org/10.1109/VLHCC.2007.25, pp 15–22
Lawrance J, Bogart C, Burnett M, Bellamy R, Rector K, Fleming S D (2013) How programmers debug, revisited: an information foraging theory perspective. IEEE Trans Softw Eng 39(2):197–215. https://doi.org/10.1109/TSE.2010.111
Lewis C, Wharton C (1997) Chapter 30—cognitive walkthroughs. In: Helander MG, Landauer TK, Prabhu PV (eds) Handbook of human-computer interaction, 2nd edn. https://doi.org/10.1016/B978-044481862-1.50096-0https://doi.org/10.1016/B978-044481862-1.50096-0, pp 717–732
Maalej W (2009) Task-first or context-first? Tool integration revisited. In: Proceedings of the international conference on automated software engineering (ASE). https://doi.org/10.1109/ASE.2009.36https://doi.org/10.1109/ASE.2009.36, pp 344–355
Minelli R, Mocci A, Lanza M (2015a) I know what you did last summer—an investigation of how developers spend their time. In: Proceedings of the international conference on program comprehension (ICPC). https://doi.org/10.1109/ICPC.2015.12, pp 25–35
Minelli R, Mocci A, Lanza M (2015b) The plague doctor: a promising cure for the window plague. In: Proceedings of the international conference on program comprehension (ICPC). https://doi.org/10.1109/ICPC.2015.28, pp 182–185
Murphy G C, Kersten M, Findlater L (2006) How are java software developers using the eclipse IDE? IEEE Softw 23(4):76–83. https://doi.org/10.1109/MS.2006.105
Oliver N, Smith G, Thakkar C, Surendran A C (2006) SWISH: semantic analysis of window titles and switching history. In: Proceedings of the international conference on intelligent user interfaces (IUI). https://doi.org/10.1145/1111449.1111492, pp 194–201
Oliver N, Czerwinski M, Smith G, Roomp K (2008) Relalttab: assisting users in switching windows. In: Proceedings of the international conference on intelligent user interfaces (IUI). https://doi.org/10.1145/1378773.1378836, pp 385–388
Pilzer J, Rosenast R, Meyer A N, Huang E M, Fritz T (2020) Supporting software developers’ focused work on window-based desktops. In: Proceedings of the conference on human factors in computing systems (CHI), pp 1–13
Piorkowski D J, Fleming S D, Kwan I, Burnett M M, Scaffidi C, Bellamy R K, Jordahl J (2013) The whats and hows of programmers’ foraging diets. In: Proceedings of the conference on human factors in computing systems (CHI). https://doi.org/10.1145/2470654.2466418, pp 3063–3072
Piorkowski D, Fleming S D, Scaffidi C, Burnett M, Kwan I, Henley A Z, Macbeth J, Hill C, Horvath A (2015) To fix or to learn? How production bias affects developers’ information foraging during debugging. In: 2015 IEEE International conference on software maintenance and evolution (ICSME). https://doi.org/10.1109/ICSM.2015.7332447, pp 11–20
Piorkowski D, Henley A Z, Nabi T, Fleming S D, Scaffidi C, Burnett M (2016) Foraging and navigations, fundamentally: developers’ predictions of value and cost. In: Proceedings of the joint meeting on European software engineering conference and the symposium on the foundations of software engineering (ESEC/FSE). https://doi.org/10.1145/2950290.2950302, pp 97–108
Pirolli P, Card S (1995) Information foraging in information access environments. In: Proceedings of the conference on human factors in computing systems (CHI). https://doi.org/10.1145/223904.223911https://doi.org/10.1145/223904.223911, pp 51–58
Ragavan S S, Codoban M, Piorkowski D, Dig D, Burnett M (2021) Version control systems: an information foraging perspective. IEEE Trans Softw Eng 47(8):1644–1655. https://doi.org/10.1109/TSE.2019.2931296https://doi.org/10.1109/TSE.2019.2931296
Rattenbury T, Canny J (2007) CAAD: an automatic task support system. In: Proceedings of the conference on human factors in computing systems (CHI). https://doi.org/10.1145/1240624.1240731, pp 687–696
Robertson G, Horvitz E, Czerwinski M, Baudisch P, Hutchings D R, Meyers B, Robbins D, Smith G (2004) Scalable fabric: flexible task management. In: Proceedings of the working conference on advanced visual interfaces (AVI). https://doi.org/10.1145/989863.989874, pp 85–89
Robillard MP, Murphy GC (2007) Representing concerns in source code. ACM Trans Softw Eng Methodol 16(1):3–es. https://doi.org/10.1145/1189748.1189751
Robillard M, Coelho W, Murphy G (2004) How effective developers investigate source code: an exploratory study. IEEE Trans Softw Eng 30(12):889–903. https://doi.org/10.1109/TSE.2004.101
Roethlisberger D, Nierstrasz O, Ducasse S (2009) Autumn leaves: curing the window plague in IDEs. In: Proceedings of the working conference on reverse engineering (WCRE). https://doi.org/10.1109/WCRE.2009.18, pp 237–246
Sillito J, Murphy G C, Volder K D (2008) Asking and answering questions during a programming change task. IEEE Trans Softw Eng 34(4):434–451. https://doi.org/10.1109/TSE.2008.26
Singer J, Lethbridge T, Vinson N, Anquetil N (1997) An examination of software engineering work practices. In: Proceedings of the conference of the centre for advanced studies on collaborative research (CASCON), pp 21–36
Smith G, Baudisch P, Robertson G G, Czerwinski M, Meyers B R, Robbins D C, Andrews D B (2003) Groupbar: the TaskBar evolved. In: Proceedings of the Australian conference on human-computer interaction (OZCHI), vol 3, p 10
Soloway E (1986) Learning to program = learning to construct mechanisms and explanations. Commun ACM 29(9):850–858. https://doi.org/10.1145/6592.6594
Strauss A, Corbin J (1994) Grounded theory methodology. In: Denzin NK, Lincoln YS (eds) Handbook of qualitative research. Sage Publications, pp 273–285
Tashman C (2006) Windowscape: a task oriented window manager. In: Proceedings of the symposium on user interface software and technology (UIST). https://doi.org/10.1145/1166253.1166266, pp 77–80
Vallacher R R, Wegner D M (2012) Action identification theory. In: Handbook of theories of social psychology, vol 1. https://doi.org/10.4135/9781446249215.n17. Sage Publications Ltd, pp 327–348
Venolia G (2005) Bridges between silos: a microsoft research project
Wang Y, Chiew V (2010) On the cognitive process of human problem solving. Cogn Syst Res 11(1):81–92. https://doi.org/10.1016/j.cogsys.2008.08.003
Zhao S, Chevalier F, Ooi W T, Lee C Y, Agarwal A (2012) AutoComPaste: auto-completing text as an alternative to copy-paste. In: Proceedings of the international working conference on advanced visual interfaces (AVI). https://doi.org/10.1145/2254556.2254626, pp 365–372
Funding
This work is supported, in part, by the Natural Sciences and Engineering Research Council of Canada grant no. PGSD3-519053-2018.
Author information
Authors and Affiliations
Corresponding author
Ethics declarations
Conflict of Interests
The authors have no financial or proprietary interests in any material discussed in this article.
Additional information
Communicated by: Scott Fleming
Publisher’s note
Springer Nature remains neutral with regard to jurisdictional claims in published maps and institutional affiliations.
Rights and permissions
About this article
Cite this article
Bradley, N.C., Fritz, T. & Holmes, R. Sources of software development task friction. Empir Software Eng 27, 175 (2022). https://doi.org/10.1007/s10664-022-10187-6
Accepted:
Published:
DOI: https://doi.org/10.1007/s10664-022-10187-6