Do you know that after an interruption, developers find it more difficult to accomplish the interrupted tasks?
Software developers spend a considerable amount of their working time in the Integrated Development Environment (IDE) as well as in applications that support development (e.g., Skype, Microsoft Teams) to discuss with their colleagues and the web browser typically to consult documentation or Q&A websites (e.g., Stack Overflow).
However, not all applications used during working hours are work related, in fact developers may also consult other applications (e.g., messaging apps) and websites (e.g., social networks) that may cause interruptions, and thus a loss of focus.
According to some studies, there are two basic types of interruptions:
- External interruptions, i.e., those that stem from events in the environment, such as a phone ringing, a colleague entering one’s office, or an email alert.
- Internal interruptions, i.e., those in which one stops a task of his own intention.
These interruptions may occur frequently, causing a loss of concentration which negatively impacts productivity. This phenomenon is called work fragmentation and, with the increasing adoption of social media and messaging applications, is becoming very common in the workspace. We can think of work fragmentation as a break in continuous work activity. If the work is highly fragmented developers spend less time on a task and fragmentation results in more interruptions.
In the publication “An empirical study of work fragmentation in software evolution tasks” the author observed that work fragmentation is correlated to lower observed productivity. They considered time spent outside the IDE as an interruption of the development workflow, and they noticed that when developers are outside the IDE, and then come back writing code, they need some time to resume their work (about 25 minutes on average). Moreover, after the interruption, developers find it more difficult to accomplish the interrupted tasks, that in the end takes more time to be completed.
We can decompose IDE activities into the following distinct categories:
- Understanding is the activity in which the developer inspects the code for program comprehension;
- Editing is the activity in which the developer spends time editing source code;
- Navigation is the time spent in browsing through software entities like classes, methods, and packages;
- User Interface Interaction is the activity explicitly devoted in fiddling with the UI of the IDE.
Several studies on mining interaction data have been presented, but only a few of them charaterize the time spent outside the IDE. However, since the work of developers might not be performed uniquely in the IDE, there was the need to track and characterize activities that happen outside of it to understand if they are work related thus productive or not work related, and thus could represent interruptions.
The objective of the study led for the USI (Università della Svizzera italiana) is twofold: First, to build an approach that integrates the recording of IDE interaction data with activities performed outside of the IDE. Second, to provide an analytics platform that developers can use to understand how they spend their time and to improve their productivity by reasoning on their work habits.
As a source for interaction data inside the IDE has been used and extended Tako, an IDE plugin that collects, aggregates, and visualizes interaction data for Visual Studio Code (VSC). To characterize and classify the time spent outside the IDE, has been implemented an approach to record application usage over time, i.e., which application is in focus at any given point in time, as well as visited websites. To keep track of the application in focus, was built a tool that monitors this information at the operating system level. Events were also recorded when applications were opened, closed, or when the current application on focus was changed.
To record website visits was built a browser extension capable of tracking the navigation history of the developer. The plugin extracts information about the URL, the timestamp in which the event occurred, the title of the page and whether the page was opened, closed, or changed at the specified timestamp.
Nowadays privacy at work is important. The lack of privacy in an employee’s workspace can hinder a working person’s sense of autonomy, giving them less control over their working environment, and causing their productivity to suffer. For these reasons, during the study it was decided to preserve privacy by not sharing the collected data, and therefore keeping the collected data locally.
Finally, has been proposed a data analytics platform for the recorded interaction data inside and outside the IDE, allowing the developer to analyze their sessions by means of interactive data visualizations. It was decided to use data visualization because it enables data understanding and exploration, allowing the user to confirm hypothesis, detect patterns and spot outliers.
The data analytics platform provides two main features:
- a global digest that helps developers reflect on how they spend their time during the week, provides general information about all collected sessions and, get can be used to understand which applica- tions and website have the larger impact on interruptions;
- single session visualizations that allow developers to reflect on their productivity on a single recorded session, e.g., by analyzing the most used applications and websites, look at the detailed sequence of actions performed inside and outside the IDE, and the most frequent switches (moving from one app to another).
Img 1: Global digest showing a visual representation of approximately 1 day and 19 hours of recorded data.
Img 2: Example of single session visualization (timeline) showing the impact of long interruptions. We can see that the interruption caused by a messaging app (Whatsapp) caused a loss of focus. If we look at the IDE recorded data, we can see that the interruption impacted on the edit ratio (pink lines).
Img 3: Example of single session visualization (chord diagram) showing a focused session. In fact, we can see that the switches from a productive app to an app that possibly creates an interruption are almost absent.
As a qualitative evaluation of this approach it has been shown, through a set of real sessions from developers, how FERAX can help them to understand how they spend their time during work and to give the developer a conscience over suboptimal work habits. After analyzing the data recorded with developers, some sessions were identified that show the impact of interruptions (e.g., social networks) on the workflow and other sessions that are more productive.