Using Annotations for Sensemaking About Code
Authors
Document Title
Using Annotations for Sensemaking About Code
Document Information
- Subject Area: Annotation tools in software development and code comprehension
- Keywords: annotation tools, lightweight notes, software engineering, code comprehension, sensemaking, debugging, developer workflow, information externalization
Research Background and Issues
-
Identified Problems or Challenges:
- Developers need to manage large amounts of information when understanding and debugging code, including task objectives, points of interest in the code, issues with code behavior, and hypotheses;
- Programming tasks may span multiple days and require developers to maintain task context, facing difficulties in resuming work after interruptions;
- Existing tools (e.g., code comments and external notes) are insufficient for supporting information externalization and tracking, prone to loss, lacking contextual connections, and potentially causing code clutter.
-
Importance: Efficient information management is critical for the success of software development, enabling developers to understand code functionality faster, reduce cognitive load, and collaborate effectively on tasks.
-
Research Motivation and Related Work:
- Code and task annotations are commonly used to address these issues but have the following limitations:
- Annotations may need to be cleaned up to avoid clutter;
- Certain scenarios prevent the use of annotations (e.g., external library code or restrictions on modifying source code).
- Developers tend to use external tools and notes, but these methods are often not sufficiently linked to the code, leading to information gaps.
- Code and task annotations are commonly used to address these issues but have the following limitations:
Solution
-
Proposed Method or Solution: Develop and introduce a lightweight code annotation tool—"Catseye." This tool allows developers to externalize information within the context of the code without altering the source code.
-
Innovative Features:
- Annotation functionality surpassing traditional code comments:
- Supports unified annotation syntax across languages;
- Can be bound to any text or code range;
- Enables threaded conversations to track developer feedback and answers.
- Additional features:
- Lightweight version management;
- System output association and search functionality;
- Temporarily "pinned" annotations for navigation across code segments.
-
Implementation Steps and Key Technologies:
- Annotation Creation: Use shortcuts, menus, or command bars to select code segments and create annotations;
- Annotation Features:
- Multi-location anchor creation;
- Reply system;
- Quick navigation;
- Code snapshots;
- Search functionality;
- Technical Implementation:
- Developed using TypeScript and React;
- Integrated with Visual Studio Code API;
- Utilized Google Firestore to store annotation data.
Research Results
-
Specific Outcomes:
- Introduced the Catseye tool and embedded it into the Visual Studio Code editor;
- Demonstrated through experiments that Catseye effectively aids developers in debugging tasks, facilitating easier information externalization.
-
Advantages Over Existing Solutions:
- Annotations do not modify the source code and do not affect code execution;
- Flexibly adapt to developers' personalized information needs;
- Provide convenient navigation and task tracking features;
- Integrate context-related information to enhance efficiency.
-
Experiment or Evaluation Results:
- Participants using Catseye achieved significantly higher success rates in debugging tasks compared to the control group;
- The average frequency of annotation interactions was approximately twice that of the control group, indicating that annotations promoted information revisitation and usage;
- Participants experienced a significant reduction in cognitive load during tasks and were better able to mark and track information.
-
Limitations and Future Directions:
- Limitations:
- Experimental tasks were based on artificially designed codebases, not real-world scenarios;
- Does not support graphical outputs or more complex interaction methods.
- Future Directions:
- Enhance integration with GitHub to support collaborative development;
- Optimize annotation and code version update management;
- Expand support for capturing other media formats, such as adding charts or screenshots.
- Limitations:
This study is the first to demonstrate how code annotation tools can serve as a cognitive workspace for developers, acting as essential tools for debugging, sensemaking, and information externalization. The research provides profound insights into tool design and developers' information needs, offering significant practical and academic value.
Research Questions / Practical Problems
Question signals indexed for this paper.
Research Questions
3- How can annotation tools support code sensemaking (understanding processes) during software development?Category: Code Understanding Externalization and Annotation SupportSimilar questionsarrow_forward
- Can lightweight code annotation tools effectively help developers externalize and manage information without modifying source code?Category: Code Understanding Externalization and Annotation SupportSimilar questionsarrow_forward
- How do improved annotation tools affect developers' debugging success rates and cognitive burden?Category: Code Understanding Externalization and Annotation SupportSimilar questionsarrow_forward
Practical Problems
1- Developers struggle to efficiently externalize and manage information during debugging and code understanding.Category: Code Understanding Externalization and Annotation SupportSimilar questionsarrow_forward
- 100%
Pagebreaks: Multi-Cell Scopes in Computational Notebooks
CHI '25· Knowledge Worker Tools & Workflows +1
- 100%
Lorgnette: Creating Malleable Code Projections
UIST '23· Knowledge Worker Tools & Workflows +1
- 75%
Computational Interaction: Theory and Practice
CHI '18· Computational Methods in HCI
- 75%
Model-based Evaluation of Recall-based Interaction Techniques
CHI '24· Computational Methods in HCI
- 75%
Small-Step Live Programming by Example
UIST '20· Computational Methods in HCI
- 60%
Visualizing API Usage Examples at Scale
CHI '18· Interactive Data Visualization +1
- 60%
Doppio: Tracking UI Flows and Code Changes for App Development
CHI '18· Knowledge Worker Tools & Workflows +1
- 60%
Pointing All Around You: Selection Performance of Mouse and Ray-Cast Pointing in Full-Coverage Displays
CHI '18· Knowledge Worker Tools & Workflows +1
- 60%
Observations on Typing from 136 Million Keystrokes
CHI '18· User Research Methods (Interviews, Surveys, Observation) +1
- 60%
Interactive Extraction of Examples from Existing Code
CHI '18· Open-Source Collaboration & Code Review +1
Based on Jaccard similarity of research subtopics & professions (≥60%)