Top Banner
getting to flow in software development Gail C. Murphy University of British Columbia Tasktop Technologies Incorporated
56

Getting to Flow in Software Development (ASWEC 2014 Keynote)

Aug 27, 2014

Download

Software

murphygc

Humans are amazing at processing information. It is a good thing that they are because software development projects generate a tremendous amount of information of various forms from predominantly natural language documents like requirements to blended natural language and structured artifacts like issues to predominantly structured source and test code. For some time, the amount of information produced daily in a large software development has exceeded a human’s ability to process that information. Instead of producing tools that allow a software developer to focus on information pertinent to a task, too many tools have been built that focus solely on producing as much information as possible. In this talk, I will discuss interaction styles for tools that may bring us closer to keeping a developer in the flow of a task. By improving flow, we can enable developers to work smarter, work better and have more fun.
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Getting to Flow in Software Development (ASWEC 2014 Keynote)

getting to flow in software development

Gail C. Murphy

University of British ColumbiaTasktop Technologies Incorporated

Page 2: Getting to Flow in Software Development (ASWEC 2014 Keynote)

“software is eating the

world”Marc Andreesen

Page 3: Getting to Flow in Software Development (ASWEC 2014 Keynote)

premise…

lots of software to build

should be fun to build it

Page 4: Getting to Flow in Software Development (ASWEC 2014 Keynote)

hypothesis…

tools and interfaces that support flow

enable building

more software with more fun

Page 5: Getting to Flow in Software Development (ASWEC 2014 Keynote)

what is flow?

Mihaly Csikszentmihalyi single-minded immersion

clear set of goals and progressclear and immediate feedbackbalance of challenges to skills

Page 6: Getting to Flow in Software Development (ASWEC 2014 Keynote)

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 forproductive day (379 devs)

[Meyer, Fritz, Murphy & Zimmermann, under submission]

Page 7: Getting to Flow in Software Development (ASWEC 2014 Keynote)

Actvities and Task Switches (Session 1)

Time [minutes]

Subj

ect

0 30 60 90 120 150 180

T3

T2

T1

S4

S3

S2

S1

R4

R3

R2

R1

●●

●●

●●●●

●●●●● ● ● ●●

● ●●●●●●

●●●●

●●●●●●

51 activity switches10 task switches, 3 distinct tasks

●●

●●

●●●●

●●●●

●●

●●●●●●●●

●●●●●

●●●

●●●●●●●●●●●●●●●

●●●

●●

●●●●

●●●●●●

●●●●●●●●●●●●●●

● ● ●

● ● ●●

●●●

●●

●●

●●●

●●●●

●● ●

●● ●●●●●●●●●

166 activity switches36 task switches, 3 distinct tasks

●●●●●●

●●●●●●●●●●●●●

●●●●●

●●●●●●●●

●●●●●●●

●●●●●● ●

●●

●●●●●

●●●●●●

●●

●●●●●●●

●●●●●●●●

●●●●●●●●●●●

●●●

●● ●●

●●

●●●● ●●

●●●

●●●

●●

●●●●●●●●●●●

●●●●●

●●●

●●● ●●●

● 230 activity switches79 task switches, 4 distinct tasks

●●●●●

●●●●●●●●●●●●●●●●●

●●●

●●●●●●● ●

●●●●

●●● ●●

●●●●●

● ● ●

85 activity switches13 task switches, 4 distinct tasks

● ●●●●●●

●●●●●

●●●● ●●●●●●●

●●●

●●●● ● ●

●●

●●● ●

●59 activity switches20 task switches, 5 distinct tasks

● ●●●●●●●●●●●●●

● ● ●●

●●●

●●●●●● ●

●●●

88 activity switches17 task switches, 5 distinct tasks

●●

●●●●●●●●●

●●●●●●●●●●

●●●

●●●●●●●

●●

●●●

●●●

●●●●

●●●●●●●●●

●●●

●●●●●

●●● ●

●●●●

●●

●●●●●

●●●

●●●● ●●●

●●●●●●●●●●

148 activity switches27 task switches, 4 distinct tasks

●●●●

●●●●●

●●

●●●●●

●●●●● ●●

●●●●● ●●●

●●

●●●● ●

●●●●

●108 activity switches16 task switches, 5 distinct tasks

●●●●●

●●●●●●

●●● ● ●

●● ● ●

● ●●●● ●

●66 activity switches25 task switches4 distinct tasks

●●

●●●●●

●●

●●●● ●● ●

●●

●●

●●●

● ●● ● ●●

●●●

●102 activity switches61 task switches6 distinct tasks

●●●●

●●●●●●●●●●

●●●

● ●●●● ●

●●●●●●●●

●● ●●

●●●●●●● ● ●

●●●● ●

●●●●

●●96 activity switches28 task switches, 4 distinct tasks

Dev:VCDev:DebugDev:CodeDev:ReviewDev:TestAppDev:OtherBrowsingRelBrowsingUnrelMeetInformalMeetPlannedEmailPlanningReadWriteDocOther

constant switching[Meyer, Fritz, Murphy & Zimmermann, under submission]

Page 8: Getting to Flow in Software Development (ASWEC 2014 Keynote)

ok?development tools and

interfaces already do a great job at supporting flow

Page 9: Getting to Flow in Software Development (ASWEC 2014 Keynote)

jHotDraw

Page 10: Getting to Flow in Software Development (ASWEC 2014 Keynote)
Page 11: Getting to Flow in Software Development (ASWEC 2014 Keynote)
Page 12: Getting to Flow in Software Development (ASWEC 2014 Keynote)
Page 13: Getting to Flow in Software Development (ASWEC 2014 Keynote)
Page 14: Getting to Flow in Software Development (ASWEC 2014 Keynote)
Page 15: Getting to Flow in Software Development (ASWEC 2014 Keynote)

add code in

several places

Page 16: Getting to Flow in Software Development (ASWEC 2014 Keynote)

bug

Page 17: Getting to Flow in Software Development (ASWEC 2014 Keynote)
Page 18: Getting to Flow in Software Development (ASWEC 2014 Keynote)

mismatch #1flat information space

Page 19: Getting to Flow in Software Development (ASWEC 2014 Keynote)

mismatch #2multiple disconnected information

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

mismatch #3: information overload

Page 21: Getting to Flow in Software Development (ASWEC 2014 Keynote)

mismatch #4: clickitis over cognition

Page 22: Getting to Flow in Software Development (ASWEC 2014 Keynote)

mismatches#1: flat information space

#2: multiple disconnected information spaces

#3: information overload

#4: clickitis over cognition

goal

Page 23: Getting to Flow in Software Development (ASWEC 2014 Keynote)

an example of how it could be

approaches and tools that address the mismatches

Page 24: Getting to Flow in Software Development (ASWEC 2014 Keynote)
Page 25: Getting to Flow in Software Development (ASWEC 2014 Keynote)
Page 26: Getting to Flow in Software Development (ASWEC 2014 Keynote)
Page 27: Getting to Flow in Software Development (ASWEC 2014 Keynote)
Page 28: Getting to Flow in Software Development (ASWEC 2014 Keynote)
Page 29: Getting to Flow in Software Development (ASWEC 2014 Keynote)
Page 30: Getting to Flow in Software Development (ASWEC 2014 Keynote)
Page 31: Getting to Flow in Software Development (ASWEC 2014 Keynote)
Page 32: Getting to Flow in Software Development (ASWEC 2014 Keynote)

[Ko and Myers, 2008]

Page 33: Getting to Flow in Software Development (ASWEC 2014 Keynote)

techniques forimproved flow

• task context

• recommendations

• dialog

• summarization

Page 34: Getting to Flow in Software Development (ASWEC 2014 Keynote)

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]

Page 35: Getting to Flow in Software Development (ASWEC 2014 Keynote)

task context in Mylyn

tasks

[Kersten & Murphy, 2006]

Page 36: Getting to Flow in Software Development (ASWEC 2014 Keynote)
Page 37: Getting to Flow in Software Development (ASWEC 2014 Keynote)

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

Page 38: Getting to Flow in Software Development (ASWEC 2014 Keynote)

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?

Page 39: Getting to Flow in Software Development (ASWEC 2014 Keynote)

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]

Page 40: Getting to Flow in Software Development (ASWEC 2014 Keynote)
Page 41: Getting to Flow in Software Development (ASWEC 2014 Keynote)

recommendations in Hipikat

[Čubranić & Murphy, 2003]

Page 42: Getting to Flow in Software Development (ASWEC 2014 Keynote)

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

Page 43: Getting to Flow in Software Development (ASWEC 2014 Keynote)

achieving flow with recommendations…

• challenge: appropriate effective user interface delivery

• challenge: what are sufficient precision and recall for various tasks

• challenge: explaining recommendations

Page 44: Getting to Flow in Software Development (ASWEC 2014 Keynote)

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]

Page 45: Getting to Flow in Software Development (ASWEC 2014 Keynote)

Ferretnavigation

Whylinedebugging

Page 46: Getting to Flow in Software Development (ASWEC 2014 Keynote)

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

Page 47: Getting to Flow in Software Development (ASWEC 2014 Keynote)

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?

Page 48: Getting to Flow in Software Development (ASWEC 2014 Keynote)

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]

Page 49: Getting to Flow in Software Development (ASWEC 2014 Keynote)
Page 50: Getting to Flow in Software Development (ASWEC 2014 Keynote)

bug summarization

Epic

StoryStory

TaskTask

extractedsummaryuse machine

learning to learn and extract appropriate

sentences

[Rastkar & Murphy, 2010 &2012]

Page 51: Getting to Flow in Software Development (ASWEC 2014 Keynote)

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

Page 52: Getting to Flow in Software Development (ASWEC 2014 Keynote)

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?

Page 53: Getting to Flow in Software Development (ASWEC 2014 Keynote)

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

Page 54: Getting to Flow in Software Development (ASWEC 2014 Keynote)

what should the programming tools of the future look like?

is it enough in research to produce approaches

that fill informationspaces?

Page 55: Getting to Flow in Software Development (ASWEC 2014 Keynote)

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!

Page 56: Getting to Flow in Software Development (ASWEC 2014 Keynote)

Actvities and Task Switches (Session 1)

Time [minutes]

Su

bje

ct

0 30 60 90 120 150 180

T3

T2

T1

S4

S3

S2

S1

R4

R3

R2

R1

●●

●●

●●●●

●●●●● ● ● ●●

● ●●●●●●

●●●●

●●●●●●

51 activity switches10 task switches, 3 distinct tasks

●●

●●

●●●●

●●●●

●●

●●●●●●●●

●●●●●

●●●

●●●●●●●●●●●●●●●

●●●

●●

●●●●

●●●●●●

●●●●●●●●●●●●●●

● ● ●

● ● ●●

●●●

●●

●●

●●●

●●●●

●● ●

●● ●●●●●●●●●

166 activity switches36 task switches, 3 distinct tasks

●●●●●●

●●●●●●●●●●●●●

●●●●●

●●●●●●●●

●●●●●●●

●●●●●● ●

●●

●●●●●

●●●●●●

●●

●●●●●●●

●●●●●●●●

●●●●●●●●●●●

●●●

●● ●●

●●

●●●● ●●

●●●

●●●

●●

●●●●●●●●●●●

●●●●●

●●●

●●● ●●●

● 230 activity switches79 task switches, 4 distinct tasks

●●●●●

●●●●●●●●●●●●●●●●●

●●●

●●●●●●● ●

●●●●

●●● ●●

●●●●●

● ● ●

85 activity switches13 task switches, 4 distinct tasks

● ●●●●●●

●●●●●

●●●● ●●●●●●●

●●●

●●●● ● ●

●●

●●● ●

●59 activity switches20 task switches, 5 distinct tasks

● ●●●●●●●●●●●●●

● ● ●●

●●●

●●●●●● ●

●●●

88 activity switches17 task switches, 5 distinct tasks

●●

●●●●●●●●●

●●●●●●●●●●

●●●

●●●●●●●

●●

●●●

●●●

●●●●

●●●●●●●●●

●●●

●●●●●

●●● ●

●●●●

●●

●●●●●

●●●

●●●● ●●●

●●●●●●●●●●

148 activity switches27 task switches, 4 distinct tasks

●●●●

●●●●●

●●

●●●●●

●●●●● ●●

●●●●● ●●●

●●

●●●● ●

●●●●

●108 activity switches16 task switches, 5 distinct tasks

●●●●●

●●●●●●

●●● ● ●

●● ● ●

● ●●●● ●

●66 activity switches25 task switches4 distinct tasks

●●

●●●●●

●●

●●●● ●● ●

●●

●●

●●●

● ●● ● ●●

●●●

●102 activity switches61 task switches6 distinct tasks

●●●●

●●●●●●●●●●

●●●

● ●●●● ●

●●●●●●●●

●● ●●

●●●●●●● ● ●

●●●● ●

●●●●

●●96 activity switches28 task switches, 4 distinct tasks

Dev:VCDev:DebugDev:CodeDev:ReviewDev:TestAppDev:OtherBrowsingRelBrowsingUnrelMeetInformalMeetPlannedEmailPlanningReadWriteDocOther

software is eating theworld

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