2. Problem
• Office studies
– Interrupted tasks take twice as long.
– 57% of tasks interrupted.
• Developer studies
– Often blocked from completing tasks.
– Case study estimates interrupts cost 15
minutes.
3. Psychology Research
Key factors
• Suspension
– What is done before interruption.
• Cues
– What tactile/visual reminders are present.
• Timing
– Cognitive load and breakpoints.
Examples…
8. Research Questions
• Is programming work fragmented and what
is the cost?
• What strategies do programmers use to
resume a task?
Research goal:
Illicit requirements for better tool support.
9. Investigation
Interaction History and Concepts
Interaction history is
“a record of programming activity”
and consists of events:
- timestamp
- target (code entity)
- type (edit, search command, file selection)
events can be grouped into sessions:
“A timeframe of work”
10. Investigation
Sessions
• New session when greater than 15 minutes.
• 98% events within a minute of another.
13. Analysis
Work fragmentation and edit lag
• Method
– Fragmentation?
• Group events into sessions (15 minutes).
• Histogram session length.
– Edit lag
• Choose sessions with at least 1 edit event.
• Find first edit event.
• Measure offset from start of session.
14. Analysis
Work fragmentation and edit lag
sessions Programming sessions in a typical day
sessions 1-3 1-2 1-2 1 0-1 rarely
duration 15m 30 m 1h 2h 4h 8h+
15. Analysis
Strategies
• Method
– Pilot survey on strategies.
– Measure
• strategy usage frequency.
• edit lag with strategy.
16. Analysis
Strategies
• “Return to last edit”
• “Navigate to remember.”
• “Examine program execution/output”
• “View compile errors”
• “Use version history (diff/comments)”
• “Use task list”
17. Analysis
Last Edit
• Frequency: Last edit location
– 17% sessions resume coding last location:
• 56% involve navigations to other locations.
Sessions 35% 22% 23% 12%
Edit Lag 1m 1-5m 5-15m 15-30m
19. Analysis
Other cues
• Views
– Task lists 9%.
– Error lists 9%.
– Revision history notes/diff 4%.
20. Implications
• Programmers seek breakpoints:
– Often resume coding in new locations.
– But, lag to resume next part of task.
• Last location insufficient:
– 56% still need navigation,
– must navigate several locations before coding.
• Other cues are used:
– Compile errors, version history, task lists…
– But are still ad-hoc.
21. Recent Research
Survey (on going)
• 43 professional developers (so-far)
– Several major companies
• Resumption lag
– Typical resumption: 10-20 min
– Worse resumption: 30 min – days
• Preparing for interruption
– “personal (private) blog, electronic sticky notes,
failing test, intentional compile errors, debugger
breakpoints, remember order of tasks, take
continuous notes, notes in source code”
22. Recent Research
Task Tracking
• Few projects are using issue trackers for
programming tasks:
– Only 3 out of 59 projects had over 100 tasks.
• Survey: 41% say tasks are frequently broad in scope
and needs to be refined into many subtasks.
• Few track subtasks
– Less 1% Mylyn users created new subtasks.
– Only 4 out of 59 projects track subtasks.
– But 13% of task descriptions had manual task
breakdowns.
• Many developers prefer personal tracking separate
from official tracking. (notepad)
24. Future Research
• Investigate relation of sessions:
• Eye-tracking at start of session.
• Deeper analysis on activities.
25. Conclusions
• Programmers are affected by interruptions
but have limited cues for resumption.
• Programmers value taking notes
but have limited tool support.