SlideShare a Scribd company logo
1 of 56
Download to read offline
getting to flow in
software development
Gail C. Murphy



University of British Columbia

Tasktop Technologies Incorporated
“software is
eating the
world”
Marc Andreesen
premise

…
lots of software to build
should be fun to build it
hypothesis
…
tools and interfaces
that support flow
enable building 



more software 

with more fun
what is flow?
Mihaly Csikszentmihalyi

single-minded immersion



clear set of goals and progress

clear and immediate feedback

balance of challenges to skills
21.9%50.4%53.2%
complete tasks
or goals
getting into a
“flow” without
many “context
switches” and no
or few
interruptions
and distractions
no meetings
top 3 reasons for

productive day (379 devs)
[Meyer, Fritz, Murphy & Zimmermann, under submission]
Actvities and Task Switches (Session 1)
Time [minutes]
Subject
0 30 60 90 120 150 180
T3
T2
T1
S4
S3
S2
S1
R4
R3
R2
R1
●
●
●
●
●
●
●●
●●●●
● ● ● ●
●
● ●●●●●
●
●
●●●
●●●
●●
●
51 activity switches
10 task switches, 3 distinct tasks
●
●
●●
●
●●●●
●
●●
●
●
●●
●●
●
●●
●●●
●●●●
●
●
●●
●
●
●
●●●
●
●
●
●●●
●
●●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●●●●
●
●
●●
●
●●●●
●
●
●
●
●
●
●
●
● ● ●
● ● ●●
●●
●
●
●
●
●●
●
●
●
●
●
●●●
●
● ●
●
● ●
●
●●
●
●
●●
●
166 activity switches
36 task switches, 3 distinct tasks
●
●●●●
●
●
●
●●
●●●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●●●
●
●
●
●
●●●
●
●●
●
●
●
● ●
●
●
●
●●●●
●
●
●●●
●
●
●●
●
●
●●●
●●●
●●●
●●●●●
●
●
●●●●●●●●
●
●●●
●
● ●● ●●
●
●●
● ●●
●
●
●
●
●
●
●
●●
●
●●●●
●●●
●
●●
●
●●●●●●
●
●●
● ●●●
●
●
● 230 activity switches
79 task switches, 4 distinct tasks
●●
●● ●
●●
●
●
●●●
●
●●
●●●●●
●●
●●
●
●●●●●
●● ●
●●●●
●
●
●
● ●●
●●
● ●●
● ● ●
85 activity switches
13 task switches, 4 distinct tasks
● ●●
●●
●●
●
●
●
●●●
●●
●●●● ●
●
●
●●●
●
●
●
●
●
●
●
● ●● ● ●
●
●
●
●● ●
●
59 activity switches
20 task switches, 5 distinct tasks
● ●
●●●
●
●
●●●●
●●●
● ● ●
● ●
● ●
●●●
●●● ●
●
●
● ●
88 activity switches
17 task switches, 5 distinct tasks
●
●
●●●
●●●●●●●
●●
●●
●
●●●●
●
●
●
●
●●●●●
●
●
●
●●
●
●
●
●
●●
●●
●●●●●●●
●●
●
●●
●
●
●●●
●
●
●
●
● ●
●
●
●
●●
●
●
●
●
●●
●●
●●●
●●
●
●
●
●
● ●●●
●●
●
●
●
●●●
●
●
148 activity switches
27 task switches, 4 distinct tasks
●
●●● ●● ●●
●
●
●
●
●● ●●●●●
●●● ●●
●
●●●● ●●●
●
●
●
●●● ●
●●
●● ●
108 activity switches
16 task switches, 5 distinct tasks
●
●
●
●
●
●
●●
●
●●
●
●
●● ● ●
●
● ● ●
● ●
●
●
● ●
●
66 activity switches
25 task switches
4 distinct tasks
●
●
●
● ●
●●●
●
●
●
●
●
●●●
● ●
● ●
●
●
●
●
● ●●
●
● ●
●
● ●●
●●
●
●
102 activity switches
61 task switches
6 distinct tasks
●
●
●
●●●
●
●●●●●●●●●●
●
●●
●
● ●
●
●
● ●
●
●●●●●●●
●
● ●●●●●
●●●● ● ●
●
●●● ●
●
●●
●●
●●
96 activity switches
28 task switches, 4 distinct tasks
●
●
●
●
●
●
Dev:VC
Dev:Debug
Dev:Code
Dev:Review
Dev:TestApp
Dev:Other
BrowsingRel
BrowsingUnrel
MeetInformal
MeetPlanned
Email
Planning
ReadWriteDoc
Other
constant switching
[Meyer, Fritz, Murphy & Zimmermann, under submission]
ok?
development tools and
interfaces already do a great job
at supporting flow
jHotDraw
add code
in
several
places
bug
mismatch #1

flat information space

mismatch #2

multiple disconnected information
mismatch #3: information overload
mismatch #4: clickitis over cognition
mismatches
#1: flat information space
#2: multiple disconnected information spaces
#3: information overload
#4: clickitis over cognition
goal
an example of
how it could be
approaches and tools that
address the mismatches
[Ko and Myers, 2008]
techniques for

improved flow
• task context
• recommendations
• dialog
• summarization
technique #1 of 4:

task context
• parts and relationships
of artifacts relevant to
developer as they work
on a task
• different
approximations
• e.g., commits
• e.g., interaction history

(Eclipse Mylyn)
[Kersten & Murphy, 2006]
task context in
Mylyn
tasks
[Kersten & Murphy, 2006]
if we have task context…
• have a mapping between “intent” and parts of artifacts
• can use as a concept mapping
• can use as basis for recommending artifacts to look at
• could use to analyze defects based on ‘intent”
• reduce information space shown to the developer
• share work
achieving flow with task
context…
• capture without requiring work on the part of the
developer
• challenge: how to get broader intent?
• challenge: how to get all parts of artefacts worked on or
looked at?
• challenge: how to infer task switches automatically?
technique #2 of 4:

recommendations
• suggest parts of current
or past information
spaces that might be
helpful for current work
• e.g., text similarity on
previously solved bugs
[Čubranić & Murphy 2003]
• e.g., where others have
navigated from a given
point [DeLine et. al. 2005]
recommendations in Hipikat
[Čubranić & Murphy, 2003]
if we have
recommendations…
• can eliminate low-level searching and navigating
• can reduce incorrect paths followed
• can help if developer is stuck
• can provide information a developer might miss
achieving flow with
recommendations…
• challenge: appropriate effective user interface delivery





• challenge: what are sufficient precision and recall for
various tasks
• challenge: explaining recommendations
technique #3 of 4:
dialog
• make units of discourse
between developer and
interface dialog
• task-specific
• e.g., Whyline for
debugging [Ko & Myers 2004
& 2008]
• e.g., Ferret for code
navigation [de Alwis &
Murphy 2008]
Ferret
navigation
Whyline
debugging
if we have dialog…
• can eliminate low-level searching and navigating
• can reduce incorrect paths followed
• may be able to make it easier for broader range of
people to program effectively
achieving flow with dialog…
• challenge: can we make general approaches for broad
task categories?
• challenge: what are appropriate user interaction flows
for dialog?
• challenge: what if a question isn’t presented that needs
to be asked?
technique #4 of 4:
summarization
• present abstracted form
of information
• extractive or
abstractive
• e.g., bugs [Rastkar &
Murphy, 2010, 2013]
• e.g., code [Moreno 2013]
bug summarization
Epic
StoryStory
TaskTask
extracted

summaryuse machine
learning to learn and
extract appropriate
sentences
[Rastkar & Murphy, 2010 &2012]
if we have
summarization…
• developer can make more informed decisions as timely
effective access to information
• can look for similarities and trends at different level of
abstraction
• keep developer focused on task by eliminating
cognitive switches
achieving flow with
summarization
• challenge: what to summarize when?
• challenge: how much intent needs to be known to
summarize effectively?
• challenge: how accurate must a summary be not to be
mis-leading?
interaction for flow
1. flat information space
2. multiple disconnected
information spaces
3. information overload
4. clickitis over cognition
mismatches interaction types
• task context
• recommendation
• dialog
• summarization
what should the
programming tools of
the future look like?
is it enough in research
to produce approaches
that fill information

spaces?
john anvik
elisa baniassad
wesley coelho
davor cubranic
brian de alwis
rob elves
thomas fritz
reid holmes
rahul jiresal
mik kersten
shawn minto
e murphy-hill
jingwen ou
martin robillard
sarah rastkar
nick sawadsky
david shepherd
ducky sherwood
annie ying
robert walker
and many others!
Actvities and Task Switches (Session 1)
Time [minutes]
Subject
0 30 60 90 120 150 180
T3
T2
T1
S4
S3
S2
S1
R4
R3
R2
R1
●
●
●
●
●
●
●●
●●●●
● ● ● ●
●
● ●●●●●
●
●
●●●
●●●
●●
●
51 activity switches
10 task switches, 3 distinct tasks
●
●
●●
●
●●●●
●
●●
●
●
●●
●●
●
●●
●●●
●●●●
●
●
●●
●
●
●
●●●
●
●
●
●●●
●
●●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●●●●
●
●
●●
●
●●●●
●
●
●
●
●
●
●
●
● ● ●
● ● ●●
●●
●
●
●
●
●●
●
●
●
●
●
●●●
●
● ●
●
● ●
●
●●
●
●
●●
●
166 activity switches
36 task switches, 3 distinct tasks
●
●●●●
●
●
●
●●
●●●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●●●
●
●
●
●
●●●
●
●●
●
●
●
● ●
●
●
●
●●●●
●
●
●●●
●
●
●●
●
●
●●●
●●●
●●●
●●●●●
●
●
●●●●●●●●
●
●●●
●
● ●●●●
●
●●
● ●●
●
●
●
●
●
●
●
●●
●
●●●●
●●●
●
●●
●
●●●●●●
●
●●
● ●●●
●
●
● 230 activity switches
79 task switches, 4 distinct tasks
●●
●● ●
●●
●
●
●●●
●
●●
●●●●●
●●
●●
●
●●●●●
●● ●
●●●●
●
●
●
● ●●
●●
● ●●
● ● ●
85 activity switches
13 task switches, 4 distinct tasks
● ●●
●●
●●
●
●
●
●●●
●●
●●●● ●
●
●
●●●
●
●
●
●
●
●
●
●●● ● ●
●
●
●
●● ●
●
59 activity switches
20 task switches, 5 distinct tasks
● ●
●●●
●
●
●●●●
●●●
● ● ●
● ●
● ●
●●●
●●● ●
●
●
● ●
88 activity switches
17 task switches, 5 distinct tasks
●
●
●●●
●●●●●●●
●●
●●
●
●●●●
●
●
●
●
●●●●●
●
●
●
●●
●
●
●
●
●●
●●
●●●●●●●
●●
●
●●
●
●
●●●
●
●
●
●
● ●
●
●
●
●●
●
●
●
●
●●
●●
●●●
●●
●
●
●
●
● ●●●
●●
●
●
●
●●●
●
●
148 activity switches
27 task switches, 4 distinct tasks
●
●●●●● ●●
●
●
●
●
●● ●●●●●
●●● ●●
●
●●●● ●●●
●
●
●
●●● ●
●●
●● ●
108 activity switches
16 task switches, 5 distinct tasks
●
●
●
●
●
●
●●
●
●●
●
●
●● ● ●
●
● ● ●
● ●
●
●
● ●
●
66 activity switches
25 task switches
4 distinct tasks
●
●
●
●●
●●●
●
●
●
●
●
●●●
● ●
● ●
●
●
●
●
● ●●
●
● ●
●
● ●●
●●
●
●
102 activity switches
61 task switches
6 distinct tasks
●
●
●
●●●
●
●●●●●●●●●●
●
●●
●
● ●
●
●
● ●
●
●●●●●●●
●
● ●●●●●
●●●● ● ●
●
●●● ●
●
●●
●●
●●
96 activity switches
28 task switches, 4 distinct tasks
●
●
●
●
●
●
Dev:VC
Dev:Debug
Dev:Code
Dev:Review
Dev:TestApp
Dev:Other
BrowsingRel
BrowsingUnrel
MeetInformal
MeetPlanned
Email
Planning
ReadWriteDoc
Other
software is 

eating the

world
interfaces
need to
support flow
interaction styles that might improve flow
• task context
• recommendation
• dialog
• summarization
what might programming environments look like to make
programming more fun and more inclusive
Gail C. Murphy
@gail_murphy

More Related Content

What's hot

Workshop on software product development the backdrop
Workshop on software product development   the backdropWorkshop on software product development   the backdrop
Workshop on software product development the backdropJoy Prabhakaran
 
Innovation explained
Innovation explainedInnovation explained
Innovation explainedLeroy Yau
 
Dark Matter, Public Health, and Scientific Computing
Dark Matter, Public Health, and Scientific ComputingDark Matter, Public Health, and Scientific Computing
Dark Matter, Public Health, and Scientific ComputingGreg Wilson
 
Patterns for the People
Patterns for the PeoplePatterns for the People
Patterns for the PeopleKevlin Henney
 
Best Practices - Software Engineering
Best Practices - Software EngineeringBest Practices - Software Engineering
Best Practices - Software Engineering3Quill Softwares
 
What We've Learned From Building Basie
What We've Learned From Building BasieWhat We've Learned From Building Basie
What We've Learned From Building BasieGreg Wilson
 
Testing in the Wild
Testing in the WildTesting in the Wild
Testing in the WildDawn Code
 
Pair Programming in Theory and Practice By Garrick West
Pair Programming in Theory and Practice By Garrick WestPair Programming in Theory and Practice By Garrick West
Pair Programming in Theory and Practice By Garrick WestXP Conference India
 
Tutorial on Using Amazon Mechanical Turk (MTurk) for HCI Research
Tutorial on Using Amazon Mechanical Turk (MTurk) for HCI ResearchTutorial on Using Amazon Mechanical Turk (MTurk) for HCI Research
Tutorial on Using Amazon Mechanical Turk (MTurk) for HCI ResearchEd Chi
 
Planning Agile Projects
Planning Agile ProjectsPlanning Agile Projects
Planning Agile Projectsbriley1
 
Tweaks: Bringing Structure to an Unstructured Environment
Tweaks: Bringing Structure to an Unstructured EnvironmentTweaks: Bringing Structure to an Unstructured Environment
Tweaks: Bringing Structure to an Unstructured EnvironmentCristina Cordova
 
How To Handle Exploding Complexity in Product Development
How To Handle Exploding Complexity in Product DevelopmentHow To Handle Exploding Complexity in Product Development
How To Handle Exploding Complexity in Product DevelopmentPerforce
 
Breakdown of fast-e
Breakdown of fast-eBreakdown of fast-e
Breakdown of fast-eNia Wearn
 
How to Become Rich, Famous, and Popular While Using Your Programming Skills t...
How to Become Rich, Famous, and Popular While Using Your Programming Skills t...How to Become Rich, Famous, and Popular While Using Your Programming Skills t...
How to Become Rich, Famous, and Popular While Using Your Programming Skills t...Greg Wilson
 
Agile 2 - The Next Iteration of Agile - Lisa Cooney for Agile Nova 7-29-2021
Agile 2  - The Next Iteration of Agile - Lisa Cooney for Agile Nova 7-29-2021Agile 2  - The Next Iteration of Agile - Lisa Cooney for Agile Nova 7-29-2021
Agile 2 - The Next Iteration of Agile - Lisa Cooney for Agile Nova 7-29-2021Lisa Boyer Cooney (she/her)
 
Introduction to Issue Driven Project Management
Introduction to Issue Driven Project ManagementIntroduction to Issue Driven Project Management
Introduction to Issue Driven Project ManagementPhilip Johnson
 
Why Can't We All Just Get Along? Improving Designer/Developer Collaboration
Why Can't We All Just Get Along? Improving Designer/Developer CollaborationWhy Can't We All Just Get Along? Improving Designer/Developer Collaboration
Why Can't We All Just Get Along? Improving Designer/Developer CollaborationAllison Corbett
 
10x programmers - What lies beneath
10x programmers - What lies beneath10x programmers - What lies beneath
10x programmers - What lies beneathHrishikesh Karekar
 

What's hot (20)

Workshop on software product development the backdrop
Workshop on software product development   the backdropWorkshop on software product development   the backdrop
Workshop on software product development the backdrop
 
Innovation explained
Innovation explainedInnovation explained
Innovation explained
 
Dark Matter, Public Health, and Scientific Computing
Dark Matter, Public Health, and Scientific ComputingDark Matter, Public Health, and Scientific Computing
Dark Matter, Public Health, and Scientific Computing
 
Patterns for the People
Patterns for the PeoplePatterns for the People
Patterns for the People
 
Best Practices - Software Engineering
Best Practices - Software EngineeringBest Practices - Software Engineering
Best Practices - Software Engineering
 
What We've Learned From Building Basie
What We've Learned From Building BasieWhat We've Learned From Building Basie
What We've Learned From Building Basie
 
Testing in the Wild
Testing in the WildTesting in the Wild
Testing in the Wild
 
Pair Programming in Theory and Practice By Garrick West
Pair Programming in Theory and Practice By Garrick WestPair Programming in Theory and Practice By Garrick West
Pair Programming in Theory and Practice By Garrick West
 
Tutorial on Using Amazon Mechanical Turk (MTurk) for HCI Research
Tutorial on Using Amazon Mechanical Turk (MTurk) for HCI ResearchTutorial on Using Amazon Mechanical Turk (MTurk) for HCI Research
Tutorial on Using Amazon Mechanical Turk (MTurk) for HCI Research
 
Planning Agile Projects
Planning Agile ProjectsPlanning Agile Projects
Planning Agile Projects
 
Tweaks: Bringing Structure to an Unstructured Environment
Tweaks: Bringing Structure to an Unstructured EnvironmentTweaks: Bringing Structure to an Unstructured Environment
Tweaks: Bringing Structure to an Unstructured Environment
 
How To Handle Exploding Complexity in Product Development
How To Handle Exploding Complexity in Product DevelopmentHow To Handle Exploding Complexity in Product Development
How To Handle Exploding Complexity in Product Development
 
Breakdown of fast-e
Breakdown of fast-eBreakdown of fast-e
Breakdown of fast-e
 
E nable l futures
E nable l futuresE nable l futures
E nable l futures
 
Developer Nirvana
Developer NirvanaDeveloper Nirvana
Developer Nirvana
 
How to Become Rich, Famous, and Popular While Using Your Programming Skills t...
How to Become Rich, Famous, and Popular While Using Your Programming Skills t...How to Become Rich, Famous, and Popular While Using Your Programming Skills t...
How to Become Rich, Famous, and Popular While Using Your Programming Skills t...
 
Agile 2 - The Next Iteration of Agile - Lisa Cooney for Agile Nova 7-29-2021
Agile 2  - The Next Iteration of Agile - Lisa Cooney for Agile Nova 7-29-2021Agile 2  - The Next Iteration of Agile - Lisa Cooney for Agile Nova 7-29-2021
Agile 2 - The Next Iteration of Agile - Lisa Cooney for Agile Nova 7-29-2021
 
Introduction to Issue Driven Project Management
Introduction to Issue Driven Project ManagementIntroduction to Issue Driven Project Management
Introduction to Issue Driven Project Management
 
Why Can't We All Just Get Along? Improving Designer/Developer Collaboration
Why Can't We All Just Get Along? Improving Designer/Developer CollaborationWhy Can't We All Just Get Along? Improving Designer/Developer Collaboration
Why Can't We All Just Get Along? Improving Designer/Developer Collaboration
 
10x programmers - What lies beneath
10x programmers - What lies beneath10x programmers - What lies beneath
10x programmers - What lies beneath
 

Similar to Getting to Flow in Software Development (ASWEC 2014 Keynote)

Tips & Tricks for Being a Successful Tech Lead
Tips & Tricks for Being a Successful Tech LeadTips & Tricks for Being a Successful Tech Lead
Tips & Tricks for Being a Successful Tech LeadBen Limmer
 
Software Developer Productivity: What we know and how to make it better
Software Developer Productivity: What we know and how to make it betterSoftware Developer Productivity: What we know and how to make it better
Software Developer Productivity: What we know and how to make it betterTasktop
 
Discovering Real-World Usage for a Multimodal Math Search Interface
Discovering Real-World Usage for a Multimodal Math Search InterfaceDiscovering Real-World Usage for a Multimodal Math Search Interface
Discovering Real-World Usage for a Multimodal Math Search InterfaceKeita (Del Valle) Wangari
 
Intro to User Centered Design Workshop
Intro to User Centered Design WorkshopIntro to User Centered Design Workshop
Intro to User Centered Design WorkshopPatrick McNeil
 
Introduction to software engineering
Introduction to software engineeringIntroduction to software engineering
Introduction to software engineeringHitesh Mohapatra
 
Game Design 2: UI in Games - Revision Lecture
Game Design 2: UI in Games - Revision LectureGame Design 2: UI in Games - Revision Lecture
Game Design 2: UI in Games - Revision LectureDavid Farrell
 
Continuous Deployment and Testing Workshop from Better Software West
Continuous Deployment and Testing Workshop from Better Software WestContinuous Deployment and Testing Workshop from Better Software West
Continuous Deployment and Testing Workshop from Better Software WestCory Foy
 
Don’t Let Process Hold You Back: Best Practices for Cross-Functional Collabor...
Don’t Let Process Hold You Back: Best Practices for Cross-Functional Collabor...Don’t Let Process Hold You Back: Best Practices for Cross-Functional Collabor...
Don’t Let Process Hold You Back: Best Practices for Cross-Functional Collabor...Tasktop
 
Data-driven UX: What it really takes and how to get there
Data-driven UX: What it really takes and how to get thereData-driven UX: What it really takes and how to get there
Data-driven UX: What it really takes and how to get thereEmmanuelle Boloix, Ph.D.
 
BUILD GREAT PRODUCTS: Introduction to LEAN Product Development
BUILD GREAT PRODUCTS: Introduction to LEAN Product DevelopmentBUILD GREAT PRODUCTS: Introduction to LEAN Product Development
BUILD GREAT PRODUCTS: Introduction to LEAN Product DevelopmentKlooff
 
Software engineering -core topics
Software engineering -core topicsSoftware engineering -core topics
Software engineering -core topicsAmnah_Ch
 
Agile Software Development
Agile Software DevelopmentAgile Software Development
Agile Software DevelopmentAhmet Bulut
 
Understanding Chatbot-Mediated Task Management
Understanding Chatbot-Mediated Task ManagementUnderstanding Chatbot-Mediated Task Management
Understanding Chatbot-Mediated Task ManagementCarlos Toxtli
 
Remote Moderated Usability Testing & Tools
Remote Moderated Usability Testing & ToolsRemote Moderated Usability Testing & Tools
Remote Moderated Usability Testing & ToolsSusan Price
 
Recsys 2016 tutorial: Lessons learned from building real-life recommender sys...
Recsys 2016 tutorial: Lessons learned from building real-life recommender sys...Recsys 2016 tutorial: Lessons learned from building real-life recommender sys...
Recsys 2016 tutorial: Lessons learned from building real-life recommender sys...Xavier Amatriain
 

Similar to Getting to Flow in Software Development (ASWEC 2014 Keynote) (20)

Tips & Tricks for Being a Successful Tech Lead
Tips & Tricks for Being a Successful Tech LeadTips & Tricks for Being a Successful Tech Lead
Tips & Tricks for Being a Successful Tech Lead
 
Software Developer Productivity: What we know and how to make it better
Software Developer Productivity: What we know and how to make it betterSoftware Developer Productivity: What we know and how to make it better
Software Developer Productivity: What we know and how to make it better
 
Autonomous Frontend Team
Autonomous Frontend TeamAutonomous Frontend Team
Autonomous Frontend Team
 
Software engineering
Software engineeringSoftware engineering
Software engineering
 
Discovering Real-World Usage for a Multimodal Math Search Interface
Discovering Real-World Usage for a Multimodal Math Search InterfaceDiscovering Real-World Usage for a Multimodal Math Search Interface
Discovering Real-World Usage for a Multimodal Math Search Interface
 
The Role of the Architect
The Role of the ArchitectThe Role of the Architect
The Role of the Architect
 
Intro to User Centered Design Workshop
Intro to User Centered Design WorkshopIntro to User Centered Design Workshop
Intro to User Centered Design Workshop
 
Introduction to software engineering
Introduction to software engineeringIntroduction to software engineering
Introduction to software engineering
 
Game Design 2: UI in Games - Revision Lecture
Game Design 2: UI in Games - Revision LectureGame Design 2: UI in Games - Revision Lecture
Game Design 2: UI in Games - Revision Lecture
 
Continuous Deployment and Testing Workshop from Better Software West
Continuous Deployment and Testing Workshop from Better Software WestContinuous Deployment and Testing Workshop from Better Software West
Continuous Deployment and Testing Workshop from Better Software West
 
Don’t Let Process Hold You Back: Best Practices for Cross-Functional Collabor...
Don’t Let Process Hold You Back: Best Practices for Cross-Functional Collabor...Don’t Let Process Hold You Back: Best Practices for Cross-Functional Collabor...
Don’t Let Process Hold You Back: Best Practices for Cross-Functional Collabor...
 
Data-driven UX: What it really takes and how to get there
Data-driven UX: What it really takes and how to get thereData-driven UX: What it really takes and how to get there
Data-driven UX: What it really takes and how to get there
 
BUILD GREAT PRODUCTS: Introduction to LEAN Product Development
BUILD GREAT PRODUCTS: Introduction to LEAN Product DevelopmentBUILD GREAT PRODUCTS: Introduction to LEAN Product Development
BUILD GREAT PRODUCTS: Introduction to LEAN Product Development
 
Icpc16.ppt
Icpc16.pptIcpc16.ppt
Icpc16.ppt
 
Icpc16.ppt
Icpc16.pptIcpc16.ppt
Icpc16.ppt
 
Software engineering -core topics
Software engineering -core topicsSoftware engineering -core topics
Software engineering -core topics
 
Agile Software Development
Agile Software DevelopmentAgile Software Development
Agile Software Development
 
Understanding Chatbot-Mediated Task Management
Understanding Chatbot-Mediated Task ManagementUnderstanding Chatbot-Mediated Task Management
Understanding Chatbot-Mediated Task Management
 
Remote Moderated Usability Testing & Tools
Remote Moderated Usability Testing & ToolsRemote Moderated Usability Testing & Tools
Remote Moderated Usability Testing & Tools
 
Recsys 2016 tutorial: Lessons learned from building real-life recommender sys...
Recsys 2016 tutorial: Lessons learned from building real-life recommender sys...Recsys 2016 tutorial: Lessons learned from building real-life recommender sys...
Recsys 2016 tutorial: Lessons learned from building real-life recommender sys...
 

More from Gail Murphy

Architecting-Flow-in-SE.pdf
Architecting-Flow-in-SE.pdfArchitecting-Flow-in-SE.pdf
Architecting-Flow-in-SE.pdfGail Murphy
 
The (Un) Expected Impact of Tools in Software Evolution
The (Un) Expected Impact of Tools in Software EvolutionThe (Un) Expected Impact of Tools in Software Evolution
The (Un) Expected Impact of Tools in Software EvolutionGail Murphy
 
Icsme 2021-keynote-creating-usable-and-useful-software-tools
Icsme 2021-keynote-creating-usable-and-useful-software-toolsIcsme 2021-keynote-creating-usable-and-useful-software-tools
Icsme 2021-keynote-creating-usable-and-useful-software-toolsGail Murphy
 
Is software engineering research addressing software engineering problems?
Is software engineering research addressing software engineering problems?Is software engineering research addressing software engineering problems?
Is software engineering research addressing software engineering problems?Gail Murphy
 
Developing Effective Software Productively
Developing Effective Software ProductivelyDeveloping Effective Software Productively
Developing Effective Software ProductivelyGail Murphy
 
Making Effective, Useful Software Development Tools
Making Effective, Useful Software Development ToolsMaking Effective, Useful Software Development Tools
Making Effective, Useful Software Development ToolsGail Murphy
 
The Need for Context in Software Engineering
The Need for Context in Software EngineeringThe Need for Context in Software Engineering
The Need for Context in Software EngineeringGail Murphy
 
Beyond DevOps: Finding Value through Requirements
Beyond DevOps: Finding Value through RequirementsBeyond DevOps: Finding Value through Requirements
Beyond DevOps: Finding Value through RequirementsGail Murphy
 
Impactful SE Research: Some Do's and More Don'ts
Impactful SE Research: Some Do's and More Don'tsImpactful SE Research: Some Do's and More Don'ts
Impactful SE Research: Some Do's and More Don'tsGail Murphy
 
The Elusive Nature of Context: Why We Need It and Were We Might Find It
The Elusive Nature of Context: Why We Need It and Were We Might Find ItThe Elusive Nature of Context: Why We Need It and Were We Might Find It
The Elusive Nature of Context: Why We Need It and Were We Might Find ItGail Murphy
 
Human-centric Software Development Tools
Human-centric Software Development ToolsHuman-centric Software Development Tools
Human-centric Software Development ToolsGail Murphy
 
Implications of Open Source Software Use (or Let's Talk Open Source)
Implications of Open Source Software Use (or Let's Talk Open Source)Implications of Open Source Software Use (or Let's Talk Open Source)
Implications of Open Source Software Use (or Let's Talk Open Source)Gail Murphy
 
Is Continuous Adoption in Software Engineering Achievable and Desirable?
Is Continuous Adoption in Software Engineering Achievable and Desirable? Is Continuous Adoption in Software Engineering Achievable and Desirable?
Is Continuous Adoption in Software Engineering Achievable and Desirable? Gail Murphy
 
Software Supply Chains
Software Supply ChainsSoftware Supply Chains
Software Supply ChainsGail Murphy
 
The Human Element
The Human ElementThe Human Element
The Human ElementGail Murphy
 

More from Gail Murphy (15)

Architecting-Flow-in-SE.pdf
Architecting-Flow-in-SE.pdfArchitecting-Flow-in-SE.pdf
Architecting-Flow-in-SE.pdf
 
The (Un) Expected Impact of Tools in Software Evolution
The (Un) Expected Impact of Tools in Software EvolutionThe (Un) Expected Impact of Tools in Software Evolution
The (Un) Expected Impact of Tools in Software Evolution
 
Icsme 2021-keynote-creating-usable-and-useful-software-tools
Icsme 2021-keynote-creating-usable-and-useful-software-toolsIcsme 2021-keynote-creating-usable-and-useful-software-tools
Icsme 2021-keynote-creating-usable-and-useful-software-tools
 
Is software engineering research addressing software engineering problems?
Is software engineering research addressing software engineering problems?Is software engineering research addressing software engineering problems?
Is software engineering research addressing software engineering problems?
 
Developing Effective Software Productively
Developing Effective Software ProductivelyDeveloping Effective Software Productively
Developing Effective Software Productively
 
Making Effective, Useful Software Development Tools
Making Effective, Useful Software Development ToolsMaking Effective, Useful Software Development Tools
Making Effective, Useful Software Development Tools
 
The Need for Context in Software Engineering
The Need for Context in Software EngineeringThe Need for Context in Software Engineering
The Need for Context in Software Engineering
 
Beyond DevOps: Finding Value through Requirements
Beyond DevOps: Finding Value through RequirementsBeyond DevOps: Finding Value through Requirements
Beyond DevOps: Finding Value through Requirements
 
Impactful SE Research: Some Do's and More Don'ts
Impactful SE Research: Some Do's and More Don'tsImpactful SE Research: Some Do's and More Don'ts
Impactful SE Research: Some Do's and More Don'ts
 
The Elusive Nature of Context: Why We Need It and Were We Might Find It
The Elusive Nature of Context: Why We Need It and Were We Might Find ItThe Elusive Nature of Context: Why We Need It and Were We Might Find It
The Elusive Nature of Context: Why We Need It and Were We Might Find It
 
Human-centric Software Development Tools
Human-centric Software Development ToolsHuman-centric Software Development Tools
Human-centric Software Development Tools
 
Implications of Open Source Software Use (or Let's Talk Open Source)
Implications of Open Source Software Use (or Let's Talk Open Source)Implications of Open Source Software Use (or Let's Talk Open Source)
Implications of Open Source Software Use (or Let's Talk Open Source)
 
Is Continuous Adoption in Software Engineering Achievable and Desirable?
Is Continuous Adoption in Software Engineering Achievable and Desirable? Is Continuous Adoption in Software Engineering Achievable and Desirable?
Is Continuous Adoption in Software Engineering Achievable and Desirable?
 
Software Supply Chains
Software Supply ChainsSoftware Supply Chains
Software Supply Chains
 
The Human Element
The Human ElementThe Human Element
The Human Element
 

Recently uploaded

Intelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmIntelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmSujith Sukumaran
 
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...OnePlan Solutions
 
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...confluent
 
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Matt Ray
 
Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Hr365.us smith
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureDinusha Kumarasiri
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Andreas Granig
 
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company OdishaBalasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odishasmiwainfosol
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024StefanoLambiase
 
英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作qr0udbr0
 
Odoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 EnterpriseOdoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 Enterprisepreethippts
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesPhilip Schwarz
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based projectAnoyGreter
 
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样umasea
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityNeo4j
 
Introduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfIntroduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfFerryKemperman
 
What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...Technogeeks
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio, Inc.
 
Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Velvetech LLC
 

Recently uploaded (20)

Intelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmIntelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalm
 
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
 
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort ServiceHot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
 
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
 
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
 
Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with Azure
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024
 
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company OdishaBalasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
 
英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作
 
Odoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 EnterpriseOdoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 Enterprise
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a series
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based project
 
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered Sustainability
 
Introduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfIntroduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdf
 
What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
 
Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...
 

Getting to Flow in Software Development (ASWEC 2014 Keynote)

  • 1. getting to flow in software development Gail C. Murphy
 
 University of British Columbia
 Tasktop Technologies Incorporated
  • 3. premise
 … lots of software to build should be fun to build it
  • 4. hypothesis … tools and interfaces that support flow enable building 
 
 more software 
 with more fun
  • 5. what is flow? Mihaly Csikszentmihalyi
 single-minded immersion
 
 clear set of goals and progress
 clear and immediate feedback
 balance of challenges to skills
  • 6. 21.9%50.4%53.2% complete tasks or goals getting into a “flow” without many “context switches” and no or few interruptions and distractions no meetings top 3 reasons for
 productive day (379 devs) [Meyer, Fritz, Murphy & Zimmermann, under submission]
  • 7. Actvities and Task Switches (Session 1) Time [minutes] Subject 0 30 60 90 120 150 180 T3 T2 T1 S4 S3 S2 S1 R4 R3 R2 R1 ● ● ● ● ● ● ●● ●●●● ● ● ● ● ● ● ●●●●● ● ● ●●● ●●● ●● ● 51 activity switches 10 task switches, 3 distinct tasks ● ● ●● ● ●●●● ● ●● ● ● ●● ●● ● ●● ●●● ●●●● ● ● ●● ● ● ● ●●● ● ● ● ●●● ● ●● ● ● ● ● ● ● ● ●● ● ● ● ● ● ●●●● ● ● ●● ● ●●●● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ●● ● ● ● ● ●● ● ● ● ● ● ●●● ● ● ● ● ● ● ● ●● ● ● ●● ● 166 activity switches 36 task switches, 3 distinct tasks ● ●●●● ● ● ● ●● ●●● ● ● ● ● ● ● ● ● ● ● ●● ● ●● ● ●●● ● ● ● ● ●●● ● ●● ● ● ● ● ● ● ● ● ●●●● ● ● ●●● ● ● ●● ● ● ●●● ●●● ●●● ●●●●● ● ● ●●●●●●●● ● ●●● ● ● ●● ●● ● ●● ● ●● ● ● ● ● ● ● ● ●● ● ●●●● ●●● ● ●● ● ●●●●●● ● ●● ● ●●● ● ● ● 230 activity switches 79 task switches, 4 distinct tasks ●● ●● ● ●● ● ● ●●● ● ●● ●●●●● ●● ●● ● ●●●●● ●● ● ●●●● ● ● ● ● ●● ●● ● ●● ● ● ● 85 activity switches 13 task switches, 4 distinct tasks ● ●● ●● ●● ● ● ● ●●● ●● ●●●● ● ● ● ●●● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ●● ● ● 59 activity switches 20 task switches, 5 distinct tasks ● ● ●●● ● ● ●●●● ●●● ● ● ● ● ● ● ● ●●● ●●● ● ● ● ● ● 88 activity switches 17 task switches, 5 distinct tasks ● ● ●●● ●●●●●●● ●● ●● ● ●●●● ● ● ● ● ●●●●● ● ● ● ●● ● ● ● ● ●● ●● ●●●●●●● ●● ● ●● ● ● ●●● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ●● ●● ●●● ●● ● ● ● ● ● ●●● ●● ● ● ● ●●● ● ● 148 activity switches 27 task switches, 4 distinct tasks ● ●●● ●● ●● ● ● ● ● ●● ●●●●● ●●● ●● ● ●●●● ●●● ● ● ● ●●● ● ●● ●● ● 108 activity switches 16 task switches, 5 distinct tasks ● ● ● ● ● ● ●● ● ●● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● 66 activity switches 25 task switches 4 distinct tasks ● ● ● ● ● ●●● ● ● ● ● ● ●●● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ●● ●● ● ● 102 activity switches 61 task switches 6 distinct tasks ● ● ● ●●● ● ●●●●●●●●●● ● ●● ● ● ● ● ● ● ● ● ●●●●●●● ● ● ●●●●● ●●●● ● ● ● ●●● ● ● ●● ●● ●● 96 activity switches 28 task switches, 4 distinct tasks ● ● ● ● ● ● Dev:VC Dev:Debug Dev:Code Dev:Review Dev:TestApp Dev:Other BrowsingRel BrowsingUnrel MeetInformal MeetPlanned Email Planning ReadWriteDoc Other constant switching [Meyer, Fritz, Murphy & Zimmermann, under submission]
  • 8. ok? development tools and interfaces already do a great job at supporting flow
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 16. bug
  • 17.
  • 21. mismatch #4: clickitis over cognition
  • 22. mismatches #1: flat information space #2: multiple disconnected information spaces #3: information overload #4: clickitis over cognition goal
  • 23. an example of how it could be approaches and tools that address the mismatches
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32. [Ko and Myers, 2008]
  • 33. techniques for
 improved flow • task context • recommendations • dialog • summarization
  • 34. technique #1 of 4:
 task context • parts and relationships of artifacts relevant to developer as they work on a task • different approximations • e.g., commits • e.g., interaction history
 (Eclipse Mylyn) [Kersten & Murphy, 2006]
  • 36.
  • 37. if we have task context… • have a mapping between “intent” and parts of artifacts • can use as a concept mapping • can use as basis for recommending artifacts to look at • could use to analyze defects based on ‘intent” • reduce information space shown to the developer • share work
  • 38. achieving flow with task context… • capture without requiring work on the part of the developer • challenge: how to get broader intent? • challenge: how to get all parts of artefacts worked on or looked at? • challenge: how to infer task switches automatically?
  • 39. technique #2 of 4:
 recommendations • suggest parts of current or past information spaces that might be helpful for current work • e.g., text similarity on previously solved bugs [Čubranić & Murphy 2003] • e.g., where others have navigated from a given point [DeLine et. al. 2005]
  • 40.
  • 42. if we have recommendations… • can eliminate low-level searching and navigating • can reduce incorrect paths followed • can help if developer is stuck • can provide information a developer might miss
  • 43. achieving flow with recommendations… • challenge: appropriate effective user interface delivery
 
 
 • challenge: what are sufficient precision and recall for various tasks • challenge: explaining recommendations
  • 44. technique #3 of 4: dialog • make units of discourse between developer and interface dialog • task-specific • e.g., Whyline for debugging [Ko & Myers 2004 & 2008] • e.g., Ferret for code navigation [de Alwis & Murphy 2008]
  • 46. if we have dialog… • can eliminate low-level searching and navigating • can reduce incorrect paths followed • may be able to make it easier for broader range of people to program effectively
  • 47. achieving flow with dialog… • challenge: can we make general approaches for broad task categories? • challenge: what are appropriate user interaction flows for dialog? • challenge: what if a question isn’t presented that needs to be asked?
  • 48. technique #4 of 4: summarization • present abstracted form of information • extractive or abstractive • e.g., bugs [Rastkar & Murphy, 2010, 2013] • e.g., code [Moreno 2013]
  • 49.
  • 50. bug summarization Epic StoryStory TaskTask extracted
 summaryuse machine learning to learn and extract appropriate sentences [Rastkar & Murphy, 2010 &2012]
  • 51. if we have summarization… • developer can make more informed decisions as timely effective access to information • can look for similarities and trends at different level of abstraction • keep developer focused on task by eliminating cognitive switches
  • 52. achieving flow with summarization • challenge: what to summarize when? • challenge: how much intent needs to be known to summarize effectively? • challenge: how accurate must a summary be not to be mis-leading?
  • 53. interaction for flow 1. flat information space 2. multiple disconnected information spaces 3. information overload 4. clickitis over cognition mismatches interaction types • task context • recommendation • dialog • summarization
  • 54. what should the programming tools of the future look like? is it enough in research to produce approaches that fill information
 spaces?
  • 55. john anvik elisa baniassad wesley coelho davor cubranic brian de alwis rob elves thomas fritz reid holmes rahul jiresal mik kersten shawn minto e murphy-hill jingwen ou martin robillard sarah rastkar nick sawadsky david shepherd ducky sherwood annie ying robert walker and many others!
  • 56. Actvities and Task Switches (Session 1) Time [minutes] Subject 0 30 60 90 120 150 180 T3 T2 T1 S4 S3 S2 S1 R4 R3 R2 R1 ● ● ● ● ● ● ●● ●●●● ● ● ● ● ● ● ●●●●● ● ● ●●● ●●● ●● ● 51 activity switches 10 task switches, 3 distinct tasks ● ● ●● ● ●●●● ● ●● ● ● ●● ●● ● ●● ●●● ●●●● ● ● ●● ● ● ● ●●● ● ● ● ●●● ● ●● ● ● ● ● ● ● ● ●● ● ● ● ● ● ●●●● ● ● ●● ● ●●●● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ●● ● ● ● ● ●● ● ● ● ● ● ●●● ● ● ● ● ● ● ● ●● ● ● ●● ● 166 activity switches 36 task switches, 3 distinct tasks ● ●●●● ● ● ● ●● ●●● ● ● ● ● ● ● ● ● ● ● ●● ● ●● ● ●●● ● ● ● ● ●●● ● ●● ● ● ● ● ● ● ● ● ●●●● ● ● ●●● ● ● ●● ● ● ●●● ●●● ●●● ●●●●● ● ● ●●●●●●●● ● ●●● ● ● ●●●● ● ●● ● ●● ● ● ● ● ● ● ● ●● ● ●●●● ●●● ● ●● ● ●●●●●● ● ●● ● ●●● ● ● ● 230 activity switches 79 task switches, 4 distinct tasks ●● ●● ● ●● ● ● ●●● ● ●● ●●●●● ●● ●● ● ●●●●● ●● ● ●●●● ● ● ● ● ●● ●● ● ●● ● ● ● 85 activity switches 13 task switches, 4 distinct tasks ● ●● ●● ●● ● ● ● ●●● ●● ●●●● ● ● ● ●●● ● ● ● ● ● ● ● ●●● ● ● ● ● ● ●● ● ● 59 activity switches 20 task switches, 5 distinct tasks ● ● ●●● ● ● ●●●● ●●● ● ● ● ● ● ● ● ●●● ●●● ● ● ● ● ● 88 activity switches 17 task switches, 5 distinct tasks ● ● ●●● ●●●●●●● ●● ●● ● ●●●● ● ● ● ● ●●●●● ● ● ● ●● ● ● ● ● ●● ●● ●●●●●●● ●● ● ●● ● ● ●●● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ●● ●● ●●● ●● ● ● ● ● ● ●●● ●● ● ● ● ●●● ● ● 148 activity switches 27 task switches, 4 distinct tasks ● ●●●●● ●● ● ● ● ● ●● ●●●●● ●●● ●● ● ●●●● ●●● ● ● ● ●●● ● ●● ●● ● 108 activity switches 16 task switches, 5 distinct tasks ● ● ● ● ● ● ●● ● ●● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● 66 activity switches 25 task switches 4 distinct tasks ● ● ● ●● ●●● ● ● ● ● ● ●●● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ●● ●● ● ● 102 activity switches 61 task switches 6 distinct tasks ● ● ● ●●● ● ●●●●●●●●●● ● ●● ● ● ● ● ● ● ● ● ●●●●●●● ● ● ●●●●● ●●●● ● ● ● ●●● ● ● ●● ●● ●● 96 activity switches 28 task switches, 4 distinct tasks ● ● ● ● ● ● Dev:VC Dev:Debug Dev:Code Dev:Review Dev:TestApp Dev:Other BrowsingRel BrowsingUnrel MeetInformal MeetPlanned Email Planning ReadWriteDoc Other software is 
 eating the
 world interfaces need to support flow interaction styles that might improve flow • task context • recommendation • dialog • summarization what might programming environments look like to make programming more fun and more inclusive Gail C. Murphy @gail_murphy