SlideShare ist ein Scribd-Unternehmen logo
1 von 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

Weitere ähnliche Inhalte

Ähnlich wie 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
 

Ähnlich wie 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
 

Mehr von 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
 

Mehr von 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
 

Kürzlich hochgeladen

Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphNeo4j
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
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
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?XfilesPro
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
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
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksSoftradix Technologies
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...HostedbyConfluent
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 

Kürzlich hochgeladen (20)

Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food Manufacturing
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
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
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
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
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other Frameworks
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 

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

Hinweis der Redaktion

  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)