Supporting Opportunistic Programmers with Better Visualizations - - PowerPoint PPT Presentation

supporting opportunistic programmers with better
SMART_READER_LITE
LIVE PREVIEW

Supporting Opportunistic Programmers with Better Visualizations - - PowerPoint PPT Presentation

Supporting Opportunistic Programmers with Better Visualizations VISSOFT 2016 Joel Brandt Adobe Research Creative Technologies Lab Open or shared IP, ongoing collaborations with universities Graphics, HCI, Vis, ML/AI, Programming Languages


slide-1
SLIDE 1

Supporting Opportunistic Programmers with Better Visualizations

VISSOFT 2016 Joel Brandt Adobe Research

slide-2
SLIDE 2

Creative Technologies Lab

§ Open or shared IP, ongoing collaborations with universities § Graphics, HCI, Vis, ML/AI, Programming Languages § 22 Researchers, 9 Research Engineers § ~70 academic publications per year at CHI, UIST,

SIGGRAPH, CVPR, ICCV, ICML, etc.

§ ~15 major contributions to Adobe products per year § 50-60 Ph.D.-student-level interns per year § Expect to grow by about 10 technical staff in 2017

slide-3
SLIDE 3

research.adobe.com

slide-4
SLIDE 4

“good grief, I don’t even remember the syntax for forms!”

slide-5
SLIDE 5
slide-6
SLIDE 6
slide-7
SLIDE 7
slide-8
SLIDE 8
slide-9
SLIDE 9
slide-10
SLIDE 10
slide-11
SLIDE 11
slide-12
SLIDE 12
slide-13
SLIDE 13
slide-14
SLIDE 14
slide-15
SLIDE 15
slide-16
SLIDE 16
slide-17
SLIDE 17

subjects time (minutes)

[Brandt CHI 09]

Frequent Information Access

slide-18
SLIDE 18

subjects time (minutes)

[Brandt CHI 09]

Frequent Information Access

slide-19
SLIDE 19

Frequent Information Access

19% of time spent using Web (σ= 15.1 minutes) Used for 18 distinct tasks (σ= 9.1)

[Brandt CHI 2009]

slide-20
SLIDE 20

Opportunistic Programmers

slide-21
SLIDE 21

http://flickr.com/photos/royalsapien/2387707860/

Designers…

slide-22
SLIDE 22

http://flickr.com/photos/niosh/2492023651/

Scientists…

slide-23
SLIDE 23

http://www.flickr.com/photos/samthor/3198975900/

Makers…

slide-24
SLIDE 24

By 2012:

13 million who program as part of their job… …but only 3 million who are professional programmers

[Scaffidi 2005]

slide-25
SLIDE 25

Vast increase in information resources Democratization of access and distribution

slide-26
SLIDE 26

How do we redesign the programming experience?

slide-27
SLIDE 27

[Brandt CHI 2009]

just-in-time learning is common examples are important

slide-28
SLIDE 28

Empirical Work Systems Building

slide-29
SLIDE 29

Blueprint

Code Search in the Editor

[Brandt CHI 2010]

slide-30
SLIDE 30
slide-31
SLIDE 31
slide-32
SLIDE 32
slide-33
SLIDE 33
slide-34
SLIDE 34
slide-35
SLIDE 35
slide-36
SLIDE 36
slide-37
SLIDE 37
slide-38
SLIDE 38
slide-39
SLIDE 39
slide-40
SLIDE 40
slide-41
SLIDE 41
slide-42
SLIDE 42
slide-43
SLIDE 43
slide-44
SLIDE 44
slide-45
SLIDE 45
slide-46
SLIDE 46

Write code faster in directed tasks…

Wilcoxon-Man-Whitney statistic = 2.38, p < .01,

57 vs. 121

seconds to first code paste

Spearman correlation coeff. = 0.52, p < .01

Task completion time strongly correlated with time of first paste

Results

slide-47
SLIDE 47

…and the code is better!

worst best

blueprint control

Wilcoxon-Mann-Whitney statistic = 2.15, p < .02 Results

slide-48
SLIDE 48

[Brutlag 2009, O’Hara 1998]

milliseconds matter

slide-49
SLIDE 49

Codelets

Interactive Examples

[Oney CHI 2012]

In collaboration with Stephen Oney and Brad Myers at Carnegie Mellon University

slide-50
SLIDE 50
slide-51
SLIDE 51

User Study: Method

§ 20 participants § conducted remotely § between subjects

§ control group: pointed to jQM docs § treatment group: used exemplar examples

§ two parts (will only present part one)

51

slide-52
SLIDE 52

User Study: Results

5 10 15 20 25 30

Time (m) # refreshes

Control Codelets

slide-53
SLIDE 53

2 4 6 8 10 12

page list button page & button Time (m), lower is better Control Codelets

slide-54
SLIDE 54

2 4 6 8 10 12

page list button page & button Time (m), lower is better Control Codelets

slide-55
SLIDE 55

55

slide-56
SLIDE 56

2 4 6 8 10 12

page list button page & button Time (m), lower is better Control Codelets

slide-57
SLIDE 57
slide-58
SLIDE 58

Codelets users

§ did not read accompanying text § had two usage patterns

§ leaving codelet open § closing codelet and then editing code

58

slide-59
SLIDE 59

Codelets API

§ Editor exposes API § 3rd parties implement examples

§ Not implemented by editor

§ Uses HTML & JS

§ What most examples are already in

59

slide-60
SLIDE 60

let’s implement one:

slide-61
SLIDE 61

<codelet> <head> <title> Creating an int </title> <keywords> int </keywords> <type> block </type> <lang> c </lang> <script>$(function() { attach_input_to_mark($(“input#name_inp]”), “name” ); attach_input_to_mark($(“input#val_inp ]”), “value” ); });</script> </head> <body> <example> int <mark id=“name” /> = <mark id=“value” />; </example> <page> Name : <input type=“text” id=“name_inp” /> <br /> Value: <input type=“text” id=“val_inp” /> </page> </body> </codelet>

meta-information & interactivity (Javascript) example code & documentation (HTML)

slide-62
SLIDE 62

<codelet> <head> <title> Creating an int </title> <keywords> int </keywords> <type> block </type> <lang> c </lang> <script>$(function() { attach_input_to_mark($(“input#name_inp]”), “name” ); attach_input_to_mark($(“input#val_inp ]”), “value” ); });</script> </head> <body> <example> int <mark id=“name” /> = <mark id=“value” />; </example> <page> Name : <input type=“text” id=“name_inp” /> <br /> Value: <input type=“text” id=“val_inp” /> </page> </body> </codelet>

example code & documentation (HTML) interactivity (Javascript) (meta-information)

slide-63
SLIDE 63

<codelet> <head> <title> Creating an int </title> <keywords> int </keywords> <type> block </type> <lang> c </lang> <script>$(function() { attach_input_to_mark($(“input#name_inp]”), “name” ); attach_input_to_mark($(“input#val_inp ]”), “value” ); });</script> </head> <body> <example> int <mark id=“name” /> = <mark id=“value” />; </example> <page> Name : <input type=“text” id=“name_inp” /> <br /> Value: <input type=“text” id=“val_inp” /> </page> </body> </codelet>

interactivity (Javascript) documentation (HTML) (meta-information) (example code)

slide-64
SLIDE 64

<codelet> <head> <title> Creating an int </title> <keywords> int </keywords> <type> block </type> <lang> c </lang> <script>$(function() { attach_input_to_mark($(“input#name_inp]”), “name” ); attach_input_to_mark($(“input#val_inp ]”), “value” ); });</script> </head> <body> <example> int <mark id=“name” /> = <mark id=“value” />; </example> <page> Name : <input type=“text” id=“name_inp” /> <br /> Value: <input type=“text” id=“val_inp” /> </page> </body> </codelet>

interactivity (Javascript) (meta-information) (example code) (documentation)

slide-65
SLIDE 65

<codelet> <head> <title> Creating an int </title> <keywords> int </keywords> <type> block </type> <lang> c </lang> <script>$(function() { attach_input_to_mark($(“input#name_inp”), “name” ); attach_input_to_mark($(“input#val_inp ”), “value” ); });</script> </head> <body> <example> int <mark id=“name” /> = <mark id=“value” />; </example> <page> Name : <input type=“text” id=“name_inp” /> <br /> Value: <input type=“text” id=“val_inp” /> </page> </body> </codelet>

(meta-information) (example code) (documentation) (interactivity)

slide-66
SLIDE 66

<codelet> <head> <title> Creating an int </title> <keywords> int </keywords> <type> block </type> <lang> c </lang> <script>$(function() { attach_input_to_mark($(“input#name_inp”), “name” ); attach_input_to_mark($(“input#val_inp ”), “value” ); });</script> </head> <body> <example> int <mark id=“name” /> = <mark id=“value” />; </example> <page> Name : <input type=“text” id=“name_inp” /> <br /> Value: <input type=“text” id=“val_inp” /> </page> </body> </codelet>

slide-67
SLIDE 67

In the lab, participants complete tasks involving example code 43% faster Examples have a lifetime: they’re useful throughout the entirety of a project

Results

slide-68
SLIDE 68

Theseus

Always-On JavaScript Debugging

[Lieber CHI 2014]

In collaboration with Thomas Lieber and Rob Miller at MIT

slide-69
SLIDE 69

Programmers iterate rapidly

[Brandt IEEE Software 09]

slide-70
SLIDE 70
slide-71
SLIDE 71
slide-72
SLIDE 72

Debugging is hard because user’s mental model is different than program logic Always-on visualizations help programmers build & maintain an accurate mental model

Results

slide-73
SLIDE 73

Vesta

Using Runtime Traces to Improve Documentation and Testing

[Krämer CHI 2016]

In collaboration with Jan-Peter Krämer and Jan Borchers at RWTH Aachen University

slide-74
SLIDE 74
slide-75
SLIDE 75

All documentation created with Vesta was correct, compared to only 60% in control condition Vesta could generate significant portions of all unit tests, including tests that were written in control condition

Results

slide-76
SLIDE 76

Blueprint Codelets Theseus Vesta

slide-77
SLIDE 77

Growing importance on fast information access and just-in-time skill acquisition

slide-78
SLIDE 78

In the future, knowledge work may become less about knowing how to do a task, and more about knowing how to find the right answer.

slide-79
SLIDE 79

In the future, knowledge work may become less about knowing how to do a task, and more about knowing how to find the right answer.

slide-80
SLIDE 80

How can the software visualization community help opportunistic programmers?

slide-81
SLIDE 81

Build interfaces that assume the programmer knows nothing about the codebase

slide-82
SLIDE 82

Help professionals build software that is easy for non-professions to augment

slide-83
SLIDE 83

Make opportunistic programmers’ building blocks first-class citizens

  • f their development tools
slide-84
SLIDE 84

Focus collaboration tools on learning rather than building and maintaining software

slide-85
SLIDE 85

Remember that you’re not designing for yourself

slide-86
SLIDE 86