SlideShare une entreprise Scribd logo
1  sur  31
Evaluating Cues for Resuming Interrupted Programming Tasks Chris Parnin, Georgia Institute of Technology Robert DeLine, Microsoft Research
INTERRUPTIONS Interruptions force rapid suspension of task memory --  which, for programmers, is large and complex. But for programmers, task memory is so large, even a lunch break can be a problem.
EXAMPLE A programmer makes several changes,  one of which contains an error. Goes to lunch Running code crashes,  but forgot “what was changed”? Spends 15 minutes trying to remember.
TASKS Managers 100s tasks with few documents. Programmers    Few tasks with 100s documents.
DOCUMENTS Typical program with 56 sub-projects. Note: sub-folders not expanded.
RESEARCH GOAL What do programmers forget and how can we remind them?
RESEARCH APPROACH 1) Survey programmers to identify current strategies and new approaches. 2) Experimentally evaluate current strategies, and compare with current research approaches.
SURVEY 15 questions composed of both fixed and open-responses. 371 developers from Microsoft and 42 from various companies responded.
Markers Reminders TOP PROSPECTIVE MEASURE:NOTE-TAKING
S.H.
RESUMPTION STRATEGIES Return to last method modified,  and navigate to related code to jog your memory.  Use markers or notes. View source code difference. Run program and examine its output or UI.
RESUMPTION STRATEGIES Return to last method modified,  and navigate to related code to jog your memory.  Use markers or notes. View source code difference. Run program and examine its output or UI. cue-seeking, searching for reminders while reactivating mental context. 10-15 minutes before first edit (based on recorded sessions)
HELP! Programmers wanted:        Better help for viewing work history:        (recent code changes, documents, summaries) Didn’t want as much:        Instant replays, task planning tools, smart reminders.
WORK HISTORY var first = line.Points.First(); var last = line.Points.Last(); returnnew Point((first.X + last.X) / 2, (first.Y + last.Y) / 2); var first = line.Points.First(); var last = line.Points.Last(); returnnew Point((first.X + last.X) / 2, (first.Y + last.Y) / 2); Record document switches, actions. Record state of document after each action. var first = line.Points.First(); var last = line.Points.Last(); returnnew Point((first.X + last.X) / 2, (first.Y + last.Y) / 2); xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" var first = line.Points.First(); var last = line.Points.Last(); returnnew Point((first.X + last.X) / 2, (first.Y + last.Y) / 2); var first = line.Points.First(); var last = line.Points.Last(); returnnew Point((first.X + last.X) / 2, (first.Y + last.Y) / 2); var first = line.Points.First(); var last = line.Points.Last(); returnnew Point((first.X + last.X) / 2, (first.Y + last.Y) / 2); xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
CURRENT  APPROACH var first = line.Points.First(); var last = line.Points.Last(); returnnew Point((first.X + last.X) / 2, (first.Y + last.Y) / 2); var first = line.Points.First(); var last = line.Points.Last(); returnnew Point((first.X + last.X) / 2, (first.Y + last.Y) / 2); var first = line.Points.First(); var last = line.Points.Last(); returnnew Point((first.X + last.X) / 2, (first.Y + last.Y) / 2); xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" var first = line.Points.First(); var last = line.Points.Last(); returnnew Point((first.X + last.X) / 2, (first.Y + last.Y) / 2); var first = line.Points.First(); var last = line.Points.Last(); returnnew Point((first.X + last.X) / 2, (first.Y + last.Y) / 2); var first = line.Points.First(); var last = line.Points.Last(); returnnew Point((first.X + last.X) / 2, (first.Y + last.Y) / 2); xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" Uses semantic cues. www.eclipse.org/mylyn
ALTERNATIVE APPROACH var first = line.Points.First(); var last = line.Points.Last(); returnnew Point((first.X + last.X) / 2, (first.Y + last.Y) / 2); var first = line.Points.First(); var last = line.Points.Last(); returnnew Point((first.X + last.X) / 2, (first.Y + last.Y) / 2); var first = line.Points.First(); var last = line.Points.Last(); returnnew Point((first.X + last.X) / 2, (first.Y + last.Y) / 2); var first = line.Points.First(); var last = line.Points.Last(); returnnew Point((first.X + last.X) / 2, (first.Y + last.Y) / 2); xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" var first = line.Points.First(); var last = line.Points.Last(); returnnew Point((first.X + last.X) / 2, (first.Y + last.Y) / 2); var first = line.Points.First(); var last = line.Points.Last(); returnnew Point((first.X + last.X) / 2, (first.Y + last.Y) / 2); SAVE Use both episodic and semantic cues. xmlns:d="http://schemas.microsoft.com/expression/blend/2008" var last = line.Points.Last();
EXPERIMENT Do semantic and episodic-based cues from work history help resumption?
PARTICIPANTS 15 participants (one female only)  Age (range 31 to 56) [39 avg.] Professional developers working in Washington Puget Sound area.
Make block fall all the way down with space key. Make ghosts stop moving when eating power pellet.  Make monster reappear if missed shot. TASKS
METHOD Participant in 2 hour session, beginning with training on tools. Programmers use assigned condition to help resume task (could take notes). Programmers interrupted shortly after making edit, moving on to next task.
RESULTS Near 2-to-1 task completion rate (either cues) over notes. (chi, p < 0.1) 7,7,4 Near 2-to-1 resumption speed (DOI) over notes. (no significance) 2.5, 3.5, 4.5 minutes  Subjective ratings highest for timeline, notes, then DOI.   (t-test, p <0.001) Next slide
RATINGS Participants completing no tasks, rated notes highest: Experienced programmers create better history.
“There is something wrong, I don’t know what I missed” this.keyUp = keyUpHandler; FORGETTING
5 minutes pass… but too little time to finish. “I remember finding that code,  I just can’t remember where it is!” FORGETTING
NOTES Notes restore goals well,  but context poorly.
DOI TREEVIEW Fast, but incomplete. Seemed to support familiarity memory, clicking on locations without remembering what’s there. “I wouldn’t remember this if I had to come back in 5 minutes”
CONTENT TIMELINE Slower, but restorative. Users worked backwards in their task state with this view. Seemed to support restoring episodic and prospective memory. “The history of the [timeline] and diffs are very useful and did the most help in restarting”
COMMENTS AND FEEDBACK “I wouldn’t have to write down the location,  just what needs to be done” DOI Treeview should explain how I used item: Edit, Find, Navigation, Debug Step-through Content Timeline should include: filtering, pinning, annotation, and sharing.
FUTURE BEYOND Excel/Word Summaries Sharing Work Experiences Episodic Buffer Monitor Pen and multitouch-based interactions and annotations Temporal and semantic zoom Subvocalization (inner voice)
QUESTIONS Evaluating Cues for Resuming Interrupted Programming Tasks Chris Parnin, Robert DeLine
Evaluating Cues for Resuming Interrupted Programming TAsks

Contenu connexe

Similaire à Evaluating Cues for Resuming Interrupted Programming TAsks

Reliability Patterns for Distributed Applications
Reliability Patterns for Distributed ApplicationsReliability Patterns for Distributed Applications
Reliability Patterns for Distributed ApplicationsAndrew Hamilton
 
Knowledge of Javascript
Knowledge of JavascriptKnowledge of Javascript
Knowledge of JavascriptSamuel Abraham
 
Worst-Case Scheduling of Software Tasks
Worst-Case Scheduling of Software TasksWorst-Case Scheduling of Software Tasks
Worst-Case Scheduling of Software TasksLionel Briand
 
Quantifying Overheads in Charm++ and HPX using Task Bench
Quantifying Overheads in Charm++ and HPX using Task BenchQuantifying Overheads in Charm++ and HPX using Task Bench
Quantifying Overheads in Charm++ and HPX using Task BenchPatrick Diehl
 
Hierarchical free monads and software design in fp
Hierarchical free monads and software design in fpHierarchical free monads and software design in fp
Hierarchical free monads and software design in fpAlexander Granin
 
OpenRepGrid – An Open Source Software for the Analysis of Repertory Grids
OpenRepGrid – An Open Source Software for the Analysis of Repertory GridsOpenRepGrid – An Open Source Software for the Analysis of Repertory Grids
OpenRepGrid – An Open Source Software for the Analysis of Repertory GridsMark Heckmann
 
Functional patterns and techniques in C#
Functional patterns and techniques in C#Functional patterns and techniques in C#
Functional patterns and techniques in C#Péter Takács
 
Matheus Albuquerque "The best is yet to come: the Future of React"
Matheus Albuquerque "The best is yet to come: the Future of React"Matheus Albuquerque "The best is yet to come: the Future of React"
Matheus Albuquerque "The best is yet to come: the Future of React"Fwdays
 
"APE: Learning User's Habits to Automate Repetitive Tasks"
"APE: Learning User's Habits to Automate Repetitive Tasks""APE: Learning User's Habits to Automate Repetitive Tasks"
"APE: Learning User's Habits to Automate Repetitive Tasks"butest
 
Booting into functional programming
Booting into functional programmingBooting into functional programming
Booting into functional programmingDhaval Dalal
 
JDD 2016 - Grzegorz Rozniecki - Java 8 What Could Possibly Go Wrong
JDD 2016 - Grzegorz Rozniecki - Java 8 What Could Possibly Go WrongJDD 2016 - Grzegorz Rozniecki - Java 8 What Could Possibly Go Wrong
JDD 2016 - Grzegorz Rozniecki - Java 8 What Could Possibly Go WrongPROIDEA
 

Similaire à Evaluating Cues for Resuming Interrupted Programming TAsks (20)

C Introduction
C IntroductionC Introduction
C Introduction
 
Debugging
DebuggingDebugging
Debugging
 
C Intro.ppt
C Intro.pptC Intro.ppt
C Intro.ppt
 
Dutch PHP Conference 2013: Distilled
Dutch PHP Conference 2013: DistilledDutch PHP Conference 2013: Distilled
Dutch PHP Conference 2013: Distilled
 
Reliability Patterns for Distributed Applications
Reliability Patterns for Distributed ApplicationsReliability Patterns for Distributed Applications
Reliability Patterns for Distributed Applications
 
Knowledge of Javascript
Knowledge of JavascriptKnowledge of Javascript
Knowledge of Javascript
 
Unit iii ppt
Unit iii pptUnit iii ppt
Unit iii ppt
 
Worst-Case Scheduling of Software Tasks
Worst-Case Scheduling of Software TasksWorst-Case Scheduling of Software Tasks
Worst-Case Scheduling of Software Tasks
 
Quantifying Overheads in Charm++ and HPX using Task Bench
Quantifying Overheads in Charm++ and HPX using Task BenchQuantifying Overheads in Charm++ and HPX using Task Bench
Quantifying Overheads in Charm++ and HPX using Task Bench
 
intro to c
intro to cintro to c
intro to c
 
Hierarchical free monads and software design in fp
Hierarchical free monads and software design in fpHierarchical free monads and software design in fp
Hierarchical free monads and software design in fp
 
MapReduce
MapReduceMapReduce
MapReduce
 
OpenRepGrid – An Open Source Software for the Analysis of Repertory Grids
OpenRepGrid – An Open Source Software for the Analysis of Repertory GridsOpenRepGrid – An Open Source Software for the Analysis of Repertory Grids
OpenRepGrid – An Open Source Software for the Analysis of Repertory Grids
 
Functional patterns and techniques in C#
Functional patterns and techniques in C#Functional patterns and techniques in C#
Functional patterns and techniques in C#
 
Matheus Albuquerque "The best is yet to come: the Future of React"
Matheus Albuquerque "The best is yet to come: the Future of React"Matheus Albuquerque "The best is yet to come: the Future of React"
Matheus Albuquerque "The best is yet to come: the Future of React"
 
"APE: Learning User's Habits to Automate Repetitive Tasks"
"APE: Learning User's Habits to Automate Repetitive Tasks""APE: Learning User's Habits to Automate Repetitive Tasks"
"APE: Learning User's Habits to Automate Repetitive Tasks"
 
Booting into functional programming
Booting into functional programmingBooting into functional programming
Booting into functional programming
 
Data herding
Data herdingData herding
Data herding
 
Data herding
Data herdingData herding
Data herding
 
JDD 2016 - Grzegorz Rozniecki - Java 8 What Could Possibly Go Wrong
JDD 2016 - Grzegorz Rozniecki - Java 8 What Could Possibly Go WrongJDD 2016 - Grzegorz Rozniecki - Java 8 What Could Possibly Go Wrong
JDD 2016 - Grzegorz Rozniecki - Java 8 What Could Possibly Go Wrong
 

Plus de Chris Parnin

DESIGNING FOR INTERRUPTION AND LIVENESS
DESIGNING FOR INTERRUPTION AND LIVENESSDESIGNING FOR INTERRUPTION AND LIVENESS
DESIGNING FOR INTERRUPTION AND LIVENESSChris Parnin
 
Programmer Information Needs After Memory Failure
Programmer Information Needs After Memory FailureProgrammer Information Needs After Memory Failure
Programmer Information Needs After Memory FailureChris Parnin
 
Building usage contexts from interaction history
Building usage contexts from interaction historyBuilding usage contexts from interaction history
Building usage contexts from interaction historyChris Parnin
 
A Catalogue of Code Smell Visualizations
A Catalogue of Code Smell VisualizationsA Catalogue of Code Smell Visualizations
A Catalogue of Code Smell VisualizationsChris Parnin
 
Resumption strategies
Resumption strategiesResumption strategies
Resumption strategiesChris Parnin
 
Subvocalization -- Towards Hearing the Inner Thoughts of Developers
Subvocalization -- Towards Hearing the Inner Thoughts of DevelopersSubvocalization -- Towards Hearing the Inner Thoughts of Developers
Subvocalization -- Towards Hearing the Inner Thoughts of DevelopersChris Parnin
 
Java Generics Adoption: How New Features are Introduced Championed or Ignored
Java Generics Adoption: How New Features are Introduced Championed or IgnoredJava Generics Adoption: How New Features are Introduced Championed or Ignored
Java Generics Adoption: How New Features are Introduced Championed or IgnoredChris Parnin
 
Cognitive Neuroscience of Memory for Software Engineers
Cognitive Neuroscience of Memory for Software EngineersCognitive Neuroscience of Memory for Software Engineers
Cognitive Neuroscience of Memory for Software EngineersChris Parnin
 

Plus de Chris Parnin (9)

DESIGNING FOR INTERRUPTION AND LIVENESS
DESIGNING FOR INTERRUPTION AND LIVENESSDESIGNING FOR INTERRUPTION AND LIVENESS
DESIGNING FOR INTERRUPTION AND LIVENESS
 
Programmer Information Needs After Memory Failure
Programmer Information Needs After Memory FailureProgrammer Information Needs After Memory Failure
Programmer Information Needs After Memory Failure
 
Building usage contexts from interaction history
Building usage contexts from interaction historyBuilding usage contexts from interaction history
Building usage contexts from interaction history
 
A Catalogue of Code Smell Visualizations
A Catalogue of Code Smell VisualizationsA Catalogue of Code Smell Visualizations
A Catalogue of Code Smell Visualizations
 
Resumption strategies
Resumption strategiesResumption strategies
Resumption strategies
 
Subvocalization -- Towards Hearing the Inner Thoughts of Developers
Subvocalization -- Towards Hearing the Inner Thoughts of DevelopersSubvocalization -- Towards Hearing the Inner Thoughts of Developers
Subvocalization -- Towards Hearing the Inner Thoughts of Developers
 
Java Generics Adoption: How New Features are Introduced Championed or Ignored
Java Generics Adoption: How New Features are Introduced Championed or IgnoredJava Generics Adoption: How New Features are Introduced Championed or Ignored
Java Generics Adoption: How New Features are Introduced Championed or Ignored
 
Cognitive Neuroscience of Memory for Software Engineers
Cognitive Neuroscience of Memory for Software EngineersCognitive Neuroscience of Memory for Software Engineers
Cognitive Neuroscience of Memory for Software Engineers
 
Code Pad
Code PadCode Pad
Code Pad
 

Dernier

Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CVKhem
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessPixlogix Infotech
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 

Dernier (20)

Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 

Evaluating Cues for Resuming Interrupted Programming TAsks

  • 1. Evaluating Cues for Resuming Interrupted Programming Tasks Chris Parnin, Georgia Institute of Technology Robert DeLine, Microsoft Research
  • 2. INTERRUPTIONS Interruptions force rapid suspension of task memory -- which, for programmers, is large and complex. But for programmers, task memory is so large, even a lunch break can be a problem.
  • 3. EXAMPLE A programmer makes several changes, one of which contains an error. Goes to lunch Running code crashes, but forgot “what was changed”? Spends 15 minutes trying to remember.
  • 4. TASKS Managers 100s tasks with few documents. Programmers Few tasks with 100s documents.
  • 5. DOCUMENTS Typical program with 56 sub-projects. Note: sub-folders not expanded.
  • 6. RESEARCH GOAL What do programmers forget and how can we remind them?
  • 7. RESEARCH APPROACH 1) Survey programmers to identify current strategies and new approaches. 2) Experimentally evaluate current strategies, and compare with current research approaches.
  • 8. SURVEY 15 questions composed of both fixed and open-responses. 371 developers from Microsoft and 42 from various companies responded.
  • 9. Markers Reminders TOP PROSPECTIVE MEASURE:NOTE-TAKING
  • 10. S.H.
  • 11. RESUMPTION STRATEGIES Return to last method modified, and navigate to related code to jog your memory. Use markers or notes. View source code difference. Run program and examine its output or UI.
  • 12. RESUMPTION STRATEGIES Return to last method modified, and navigate to related code to jog your memory. Use markers or notes. View source code difference. Run program and examine its output or UI. cue-seeking, searching for reminders while reactivating mental context. 10-15 minutes before first edit (based on recorded sessions)
  • 13. HELP! Programmers wanted: Better help for viewing work history: (recent code changes, documents, summaries) Didn’t want as much: Instant replays, task planning tools, smart reminders.
  • 14. WORK HISTORY var first = line.Points.First(); var last = line.Points.Last(); returnnew Point((first.X + last.X) / 2, (first.Y + last.Y) / 2); var first = line.Points.First(); var last = line.Points.Last(); returnnew Point((first.X + last.X) / 2, (first.Y + last.Y) / 2); Record document switches, actions. Record state of document after each action. var first = line.Points.First(); var last = line.Points.Last(); returnnew Point((first.X + last.X) / 2, (first.Y + last.Y) / 2); xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" var first = line.Points.First(); var last = line.Points.Last(); returnnew Point((first.X + last.X) / 2, (first.Y + last.Y) / 2); var first = line.Points.First(); var last = line.Points.Last(); returnnew Point((first.X + last.X) / 2, (first.Y + last.Y) / 2); var first = line.Points.First(); var last = line.Points.Last(); returnnew Point((first.X + last.X) / 2, (first.Y + last.Y) / 2); xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
  • 15. CURRENT APPROACH var first = line.Points.First(); var last = line.Points.Last(); returnnew Point((first.X + last.X) / 2, (first.Y + last.Y) / 2); var first = line.Points.First(); var last = line.Points.Last(); returnnew Point((first.X + last.X) / 2, (first.Y + last.Y) / 2); var first = line.Points.First(); var last = line.Points.Last(); returnnew Point((first.X + last.X) / 2, (first.Y + last.Y) / 2); xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" var first = line.Points.First(); var last = line.Points.Last(); returnnew Point((first.X + last.X) / 2, (first.Y + last.Y) / 2); var first = line.Points.First(); var last = line.Points.Last(); returnnew Point((first.X + last.X) / 2, (first.Y + last.Y) / 2); var first = line.Points.First(); var last = line.Points.Last(); returnnew Point((first.X + last.X) / 2, (first.Y + last.Y) / 2); xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" Uses semantic cues. www.eclipse.org/mylyn
  • 16. ALTERNATIVE APPROACH var first = line.Points.First(); var last = line.Points.Last(); returnnew Point((first.X + last.X) / 2, (first.Y + last.Y) / 2); var first = line.Points.First(); var last = line.Points.Last(); returnnew Point((first.X + last.X) / 2, (first.Y + last.Y) / 2); var first = line.Points.First(); var last = line.Points.Last(); returnnew Point((first.X + last.X) / 2, (first.Y + last.Y) / 2); var first = line.Points.First(); var last = line.Points.Last(); returnnew Point((first.X + last.X) / 2, (first.Y + last.Y) / 2); xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" var first = line.Points.First(); var last = line.Points.Last(); returnnew Point((first.X + last.X) / 2, (first.Y + last.Y) / 2); var first = line.Points.First(); var last = line.Points.Last(); returnnew Point((first.X + last.X) / 2, (first.Y + last.Y) / 2); SAVE Use both episodic and semantic cues. xmlns:d="http://schemas.microsoft.com/expression/blend/2008" var last = line.Points.Last();
  • 17. EXPERIMENT Do semantic and episodic-based cues from work history help resumption?
  • 18. PARTICIPANTS 15 participants (one female only) Age (range 31 to 56) [39 avg.] Professional developers working in Washington Puget Sound area.
  • 19. Make block fall all the way down with space key. Make ghosts stop moving when eating power pellet. Make monster reappear if missed shot. TASKS
  • 20. METHOD Participant in 2 hour session, beginning with training on tools. Programmers use assigned condition to help resume task (could take notes). Programmers interrupted shortly after making edit, moving on to next task.
  • 21. RESULTS Near 2-to-1 task completion rate (either cues) over notes. (chi, p < 0.1) 7,7,4 Near 2-to-1 resumption speed (DOI) over notes. (no significance) 2.5, 3.5, 4.5 minutes Subjective ratings highest for timeline, notes, then DOI. (t-test, p <0.001) Next slide
  • 22. RATINGS Participants completing no tasks, rated notes highest: Experienced programmers create better history.
  • 23. “There is something wrong, I don’t know what I missed” this.keyUp = keyUpHandler; FORGETTING
  • 24. 5 minutes pass… but too little time to finish. “I remember finding that code, I just can’t remember where it is!” FORGETTING
  • 25. NOTES Notes restore goals well, but context poorly.
  • 26. DOI TREEVIEW Fast, but incomplete. Seemed to support familiarity memory, clicking on locations without remembering what’s there. “I wouldn’t remember this if I had to come back in 5 minutes”
  • 27. CONTENT TIMELINE Slower, but restorative. Users worked backwards in their task state with this view. Seemed to support restoring episodic and prospective memory. “The history of the [timeline] and diffs are very useful and did the most help in restarting”
  • 28. COMMENTS AND FEEDBACK “I wouldn’t have to write down the location, just what needs to be done” DOI Treeview should explain how I used item: Edit, Find, Navigation, Debug Step-through Content Timeline should include: filtering, pinning, annotation, and sharing.
  • 29. FUTURE BEYOND Excel/Word Summaries Sharing Work Experiences Episodic Buffer Monitor Pen and multitouch-based interactions and annotations Temporal and semantic zoom Subvocalization (inner voice)
  • 30. QUESTIONS Evaluating Cues for Resuming Interrupted Programming Tasks Chris Parnin, Robert DeLine

Notes de l'éditeur

  1. Fix size
  2. Impact? 15 minutes.
  3. Impact? 15 minutes.
  4. In another study we did on programmers, we found that programmers would typically work each day with between 50-80 methods,which are named sections of a code document. 60% of switches between methods, would require switching to a new document.This creates a frequent pattern of switching and searching: the perfect recipe for disorientation.
  5. Impact? 15 minutes.
  6. Impact? 15 minutes.
  7. Impact? 15 minutes.
  8. Here is what one programmer did to cope. S.H.
  9. Render recent history as degree-of-interest.
  10. Render recent history as episodes (i.e. summaries of content).
  11. Writing notes require recreating context: Paper notes referred to code symbols (65% of lines)