How do professional developers comprehend software?

@article{Roehm2012HowDP,
  title={How do professional developers comprehend software?},
  author={Tobias Roehm and Rebecca Tiarks and Rainer Koschke and W. Maalej},
  journal={2012 34th International Conference on Software Engineering (ICSE)},
  year={2012},
  pages={255-265}
}
Research in program comprehension has considerably evolved over the past two decades. However, only little is known about how developers practice program comprehension under time and project pressure, and which methods and tools proposed by researchers are used in industry. This paper reports on an observational study of 28 professional developers from seven companies, investigating how developers comprehend software. In particular we focus on the strategies followed, information needed, and… 

Tables from this paper

On the Comprehension of Program Comprehension
TLDR
It is found that developers follow pragmatic comprehension strategies depending on context and call for reconsidering the research agendas towards context-aware tool support.
Measuring Program Comprehension: A Large-Scale Field Study with Professionals
TLDR
This paper extends the ActivitySpace framework to collect and analyze Human-Computer Interaction data across many applications (not just the IDEs), and finds that on average developers spend on average 58 percent of their time on program comprehension activities, and that they frequently use web browsers and document editors to performprogram comprehension activities.
[Journal First] Measuring Program Comprehension: A Large-Scale Field Study with Professionals
TLDR
This paper extends the ActivitySpace framework to collect and analyze Human-Computer Interaction data across many applications (not just the IDEs), and finds that on average developers spend ~58% of their time on program comprehension activities, and that they frequently use web browsers and document editors to performprogram comprehension activities.
Year : 2014 Software Developers ’ Perceptions of Productivity
TLDR
Investigating software developers’ perceptions of software development productivity found that developers perceive their days as productive when they complete many or big tasks without significant interruptions or context switches, yet the observational data shows participants performed significant task and activity switching while still feeling productive.
Two User Perspectives in Program Comprehension: End Users and Developer Users
  • T. Roehm
  • Computer Science
    2015 IEEE 23rd International Conference on Program Comprehension
  • 2015
TLDR
An exploratory case study investigating two user perspectives regarding software usage and developers in the role of users during program comprehension finds that developers interact with the user interface of an interactive application to reproduce failures, to find relevant source code, to test changes, to trigger the debugger, and to familiarize with an unknown part of the application.
Understanding large-scale software systems - structure and flows
TLDR
It is not possible to comprehend large systems at the same level as comprehending code, and the interviews demonstrate that system comprehension is largely detached from code and programming language, and includes scope that is not captured in the code.
Software developers' perceptions of productivity
TLDR
It is found that developers perceive their days as productive when they complete many or big tasks without significant interruptions or context switches, and such apparent contradictions in the findings are analyzed to propose ways to better support software developers in a retrospection and improvement of their productivity.
Challenges in Program Comprehension
TLDR
This paper reports on an observational study of 28 professional developers, investigating their behaviour with respect to the occurring problems, and concludes that the challenges developers face when trying to understand a software system are well known.
What Developers (Care to) Recall: An Interview Survey on Smaller Systems
  • J. Krüger, Regina Hebig
  • Computer Science
    2020 IEEE International Conference on Software Maintenance and Evolution (ICSME)
  • 2020
TLDR
An interview survey with experienced developers indicates that developers consider architecture and abstract code knowledge as most important to remember, that the perceived importance relates to their ability to recall knowledge correctly, and that their self-assessment decreases while reflecting about their system.
Software Developers' Work Habits and Expertise: Empirical Studies on Sketching, Code Plagiarism, and Expertise Development
TLDR
This research empirically investigates how software developers use sketches and diagrams in their daily work and derive requirements for better tool support and describes a novel theory of software development expertise and identifies factors fostering or hindering the formation of such expertise.
...
1
2
3
4
5
...

References

SHOWING 1-10 OF 24 REFERENCES
An Exploratory Study of How Developers Seek, Relate, and Collect Relevant Information during Software Maintenance Tasks
TLDR
A study was performed in which developers were given an unfamiliar program and asked to work on two debugging tasks and three enhancement tasks for 70 minutes, suggesting a new model of program understanding grounded in theories of information foraging.
How effective developers investigate source code: an exploratory study
TLDR
The results support the intuitive notion that a methodical and structured approach to program investigation is the most effective.
Questions programmers ask during software evolution tasks
TLDR
What information a programmer needs to know about a code base while performing a change task and also on how they go about discovering that information are cataloged and categorized.
Information Needs in Collocated Software Development Teams
TLDR
This work analyzed software developers' day-to-day information needs at a large software company and transcribed their activities in go-minute sessions to identify information types and cataloged the outcome and source when each type of information was sought.
Maintaining mental models: a study of developer work habits
TLDR
It is found that many problems arose because developers were forced to invest great effort recovering implicit knowledge by exploring code and interrupting teammates and this knowledge was only saved in their memory.
How software engineers use documentation: the state of the practice
TLDR
The results confirm the widely held belief that SEs typically do not update documentation as timely or completely as software process personnel and managers advocate, however, the results also reveal that out-of-date software documentation remains useful in many circumstances.
Task-First or Context-First? Tool Integration Revisited
  • W. Maalej
  • Computer Science
    2009 IEEE/ACM International Conference on Automated Software Engineering
  • 2009
TLDR
This work provides empirical evidence on what is a "poor" and a "proper" tool integration, focusing on practitioners' perspectives, and finds a strong correlation between change frequency and preferred integration approaches.
Can development work describe itself?
  • W. Maalej, H. Happel
  • Computer Science
    2010 7th IEEE Working Conference on Mining Software Repositories (MSR 2010)
  • 2010
TLDR
A large dataset of heterogeneous work descriptions from open source and commercial projects is mined and the semantics of these documents are analyzed to identify common information entities and granularity levels.
Asking and Answering Questions during a Programming Change Task
TLDR
This paper undertook two qualitative studies of programmers performing change tasks to provide answers to three broad research questions and produces a catalog of 44 types of questions programmers ask during software evolution tasks.
Mental models and software maintenance
...
1
2
3
...