Sensing and Supporting Developers’ Flow

Software developers regularly experience difficulties, fatigue or frustration in their work that can lead to defects in the code, as well as consume extra time and effort. New technologies and devices, such as eye-tracking, smart watches or EEG sensors, allow us to capture various physiological data related to a developer’s cognitive and emotional states in less invasive ways than previously possible. The objective of this project is to examine and develop approaches to measure a developer’s cognitive and emotional states and provide interventions to increase flow, reduce code difficulty, and improve overall well-being at work.

Selected Publications

Assessing Task Difficulty in Software Development

Deep Work
Developer Productivity
HASEL
Personal Analytics
Research
Wellbeing
Knowing how hard a software development task is as it is being performed can be helpful for many reasons. For instance, the estimate for completing a task might be revised or the likelihood of a bug occurring the source code might be predicted. Furthermore, a real time task difficulty classification could be used to stop software developers when they experience difficulties and prevent them from introducing bugs into the code.

iTrace: Enabling Eye Tracking on Software Artifacts within the IDE to Support Software Engineering Tasks

Deep Work
Developer Productivity
HASEL
Personal Analytics
Research
Wellbeing
The paper presents iTrace, an Eclipse plugin that implicitly records developers' eye movements while they work on change tasks. iTrace is the first eye tracking environment that makes it possible for researchers to conduct eye tracking studies on large software systems. An overview of the design and architecture is presented along with features and usage scenarios. iTrace is designed to support a variety of eye trackers. The design is flexible enough to record eye movements on various types of software artifacts (Java code, text/html/xml documents, diagrams), as well as IDE user interface elements. The plugin has been successfully used for software traceability tasks and program comprehension tasks. iTrace is also applicable to other tasks such as code summarization and code recommendations based on developer eye movements. A short video demonstration is available at https://youtu.be/3OUnLCX4dXo.