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.
Psychology Research Key factors• Suspension – What is done before interruption.• Cues – What tactile/visual reminders are present.• Timing – Cognitive load and breakpoints.Examples…
Psychology research Resumption lag and interruption lag
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.
Investigation Interaction History and ConceptsInteraction 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”
Investigation Sessions• New session when greater than 15 minutes.• 98% events within a minute of another.
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.
Analysis Work fragmentation and edit lagsessions Programming sessions in a typical daysessions 1-3 1-2 1-2 1 0-1 rarelyduration 15m 30 m 1h 2h 4h 8h+
Analysis Strategies• Method – Pilot survey on strategies. – Measure • strategy usage frequency. • edit lag with strategy.
Analysis Strategies• “Return to last edit”• “Navigate to remember.”• “Examine program execution/output”• “View compile errors”• “Use version history (diff/comments)”• “Use task list”
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
Analysis Other cues• Views – Task lists 9%. – Error lists 9%. – Revision history notes/diff 4%.
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.
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”
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)