Skip to main content
Log in

Sources of software development task friction

  • Published:
Empirical Software Engineering Aims and scope Submit manuscript

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.

This is a preview of subscription content, log in via an institution to check access.

Access this article

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Institutional subscriptions

Fig. 1
Fig. 2
Fig. 3
Fig. 4
Fig. 5
Fig. 6
Fig. 7

Similar content being viewed by others

Notes

  1. https://github.com/kanboard/kanboard/issues/4213

  2. We label the people evaluated in the controlled study participants (P1..P17) and those from the field study subjects (S1..S10) throughout the paper.

  3. https://livecoders.dev

  4. https://osf.io/68qxg/?view_only=435d824fe8ee493089e66a7cc7fc5b08

  5. 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

    Article  Google Scholar 

  • 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

    Article  Google Scholar 

  • 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

    Article  Google Scholar 

  • 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

    Article  Google Scholar 

  • 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

    Article  Google Scholar 

  • 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

    Article  Google Scholar 

  • 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

    Article  Google Scholar 

  • 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

    Article  Google Scholar 

  • 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

    Article  Google Scholar 

  • 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

    Article  Google Scholar 

  • 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

    Article  Google Scholar 

  • 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

    Article  Google Scholar 

  • 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

    Article  Google Scholar 

  • 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

Download references

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

Authors

Corresponding author

Correspondence to Nick C. Bradley.

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

Reprints and permissions

About this article

Check for updates. Verify currency and authenticity via CrossMark

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

Download citation

  • Accepted:

  • Published:

  • DOI: https://doi.org/10.1007/s10664-022-10187-6

Keywords

Navigation