Comprehension differences in debugging by skilled and novice programmers
Papers presented at the first workshop on empirical studies of programmers on Empirical studies of programmers
Program understanding and knowledge organization: the influence of acquired schemata
Cognitive ergonomics
Foundations for the study of software architecture
ACM SIGSOFT Software Engineering Notes
Design patterns: elements of reusable object-oriented software
Design patterns: elements of reusable object-oriented software
Software architecture: perspectives on an emerging discipline
Software architecture: perspectives on an emerging discipline
Program understanding behavior during corrective maintenance of large-scale software
International Journal of Human-Computer Studies - Best of empirical studies of programmers 7
On the criteria to be used in decomposing systems into modules
Communications of the ACM
Software design---cognitive aspects
Software design---cognitive aspects
The structure and value of modularity in software design
Proceedings of the 8th European software engineering conference held jointly with 9th ACM SIGSOFT international symposium on Foundations of software engineering
Design Rationale: Concepts, Techniques, and Use
Design Rationale: Concepts, Techniques, and Use
Documenting Software Architectures: Views and Beyond
Documenting Software Architectures: Views and Beyond
Evidence-Based Software Engineering
Proceedings of the 26th International Conference on Software Engineering
How Effective Developers Investigate Source Code: An Exploratory Study
IEEE Transactions on Software Engineering
Mining Version Histories to Guide Software Changes
IEEE Transactions on Software Engineering
Maintaining mental models: a study of developer work habits
Proceedings of the 28th international conference on Software engineering
IEEE Transactions on Software Engineering
Information Needs in Collocated Software Development Teams
ICSE '07 Proceedings of the 29th international conference on Software Engineering
A framework and methodology for studying the causes of software errors in programming systems
Journal of Visual Languages and Computing
A framework for studying the use of wikis in knowledge work using client-side access data
Proceedings of the 2007 international symposium on Wikis
End user software engineering: chi'2008 special interest group meeting
CHI '08 Extended Abstracts on Human Factors in Computing Systems
A study of student strategies for the corrective maintenance of concurrent software
Proceedings of the 30th international conference on Software engineering
Answering common questions about code
Companion of the 30th international conference on Software engineering
More natural end-user software engineering
Proceedings of the 4th international workshop on End-user software engineering
eMoose: a memory aid for software developers
Companion to the 23rd ACM SIGPLAN conference on Object-oriented programming systems languages and applications
Designing a memory aid to support software developers
Companion to the 23rd ACM SIGPLAN conference on Object-oriented programming systems languages and applications
The implications of method placement on API learnability
Proceedings of the 16th ACM SIGSOFT International Symposium on Foundations of software engineering
Finding causes of program output with the Java Whyline
Proceedings of the SIGCHI Conference on Human Factors in Computing Systems
End user software engineering: CHI: 2009 special interest group meeting
CHI '09 Extended Abstracts on Human Factors in Computing Systems
Developers ask reachability questions
Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering - Volume 1
Proceedings of 2010 ICSE Workshop on Search-driven Development: Users, Infrastructure, Tools and Evaluation
Extracting and answering why and why not questions about Java program output
ACM Transactions on Software Engineering and Methodology (TOSEM)
On the importance of understanding the strategies that developers use
Proceedings of the 2010 ICSE Workshop on Cooperative and Human Aspects of Software Engineering
Hard-to-answer questions about code
Evaluation and Usability of Programming Languages and Tools
An introduction to program comprehension for computer science educators
Proceedings of the 2010 ITiCSE working group reports
Understanding failures through facts
Proceedings of the 19th ACM SIGSOFT symposium and the 13th European conference on Foundations of software engineering
Impact analysis for distributed event-based systems
Proceedings of the 6th ACM International Conference on Distributed Event-Based Systems
Measuring enforcement windows with symbolic trace interpretation: what well-behaved programs say
Proceedings of the 2012 International Symposium on Software Testing and Analysis
An Information Foraging Theory Perspective on Tools for Debugging, Refactoring, and Reuse Tasks
ACM Transactions on Software Engineering and Methodology (TOSEM)
Hi-index | 0.00 |
Little is known about how developers think about design during code modification tasks or how experienced developers' design knowledge helps them work more effectively. We performed a lab study in which thirteen developers worked for 3 hours under-standing the design of a 54 KLOC open source application. Par-ticipants had from 0 to 10.5 years of industry experience and were grouped into three "experts" and ten "novices." We observed that participants spent their time seeking, learning, critiquing, explain-ing, proposing, and implementing facts about the code such as "getFoldLevel has effects". These facts served numerous roles, such as suggesting changes, constraining changes, and predicting the amount of additional investigation necessary to make a change. Differences between experts and novices included that the experts explained the root cause of the design problem and made changes to address it, while novice changes addressed only the symptoms. Experts did not read more methods but also did not visit some methods novices wasted time understanding. Experts talked about code in terms of abstractions such as "caching" while novices more often described code statement by statement. Ex-perts were able to implement a change faster than novices. Experts perceived problems novices did not and were able to explain facts novices could not. These findings have interesting implications for future tools.