Being Amazon for Software Developers - IDE 2.0: Crowdsourcing mal anders #Javaland 2014

Post on 25-May-2015

554 views 4 download

Tags:

description

This talk introduces you to the idea of doing crowdsourcing among software dev

Transcript of Being Amazon for Software Developers - IDE 2.0: Crowdsourcing mal anders #Javaland 2014

Being for Software DevelopersIDE 2.0: Crowdsourcing mal anders…

About Me

!2

@MarcelBruch +MarcelBruch

• Project Lead of Eclipse Code Recommenders • Eclipse Committer since 2010 • Plug-in Developer for 10 years (Eclipse 2.1) • Co-Lead of Java User Group Darmstadt • Speaker at JUGs, EclipseCon, JavaOne... • CEO of Codetrails

!• Passion to improve developers day-to-day work

with intelligent and practical tools - mostly using Data Mining on Big (Software Engineering) Data.

• The company behind Eclipse Code Recommenders

• Eclipse IDE Experts & Consultants

• Software Tool Developers

• Data Mining Specialists

• Research Spin-off Darmstadt University of Technology

!3

supported by

PROBLEM

Problem #1: Knowledge Drain

!5

Problem #1: Knowledge Drain

!6

Problem #1: Knowledge Drain

!7

Software

Problem #2: Continuous Learning

!8

A typical developer day

!9

Comprehend Task 3 %

Handling Interruptions 20 %

Navigate Code 14 %

Study Code 19 %

Searching Web 12 %

Reading Docs 6 %

Write Code 27 %

51% of their time, developers invest in searching and understanding code

How we search

!10

What developers look for

!11Question + Answer + Code Example = ✓

A typical developer day

!12

Comprehend Task 3 %

Handling Interruptions 20 %

Navigate Code 14 %

Study Code 19 %

Searching Web 12 %

Reading Docs 6 %

Write Code 27 %

Even when writing code we search…

If we don’t google…

!13

1 of 387 ?

!15

Code Completion

Frequency : 100 completions / day

Duration (⌀) : 27 seconds / completion

Sum : 45 minutes / day

9% of their time developers spent searching in their code completion

Problem

!16

Comprehend Task 3 %

Handling Interruptions 20 %

Searching Code 12 %

Navigate Code 14 %

Reading Code 19 %

Reading Docs 6 %

Edit Code 27 %

Problem

!17

Comprehend Task 3 %

Handling Interruptions 20 %

Searching Code 12 %

Navigate Code 14 %

Reading Code 19 %

Reading Docs 6 %

Edit Code 27 %

• 51% of their time, developers spent searching the web and existing code for help

• In addition, even when programming, they spent 9% searching in their code completion

• In total, 60% is about finding the right information to solve a programming task

Being for Software DevelopersHow 39 million click events make your IDE a smarter place

!19

!20

The amazon success factors

!21

!22

How about applying the very same principles to software development?

So, instead of using the web browser…

!23

…we connect our IDEs:

!24

projectenvironment

Clicks, Code Navigation, Searchsource code

selectedproposals

stacktraces

clickfeedback

Crowdsourcing inside the IDE

!25

❷ Mine data,extract patternscreate recommendation models

Knowledge base

❸ Deliver minedknowledge to developers

❶ You sharing information

Software Development gets social again!

Crowdsourced Code CompletionDevelopers that bought used a StringBuilder, typically…

!26

A fairly trivial example…

!27

What if we‘d just count calls...?

!28Codetrails Connect Community Edition, Install from http://www.codetrails.com/connect

!void ctor() {! List l = new A…}

Crowdsourced Constructor Completion

!29

What is the mostly likely completion a developer looks for in this particular situation ?

!30

1 out of 302

!void ctor() {! List l = new A…}

Use (costly) subtype checks

!31

Codetrails Completion Tweaks for Eclipse, Install from http://download.codetrails.com/updates/connect/

Crowdsourcing constructor completions...?

!32

It learns from you. From the very 1st moment.

Codetrails Connect Community Edition, Install from http://download.codetrails.com/updates/connect/

public class MyDialog extends Dialog {! |!!

Crowdsourcing override completions...?

!33

!void quickfix() {! List l = new A}

How about fixing quick-fix?

!34Not fixed yet. But could be easily - when you start sharing your knowledge…

39.000.000 clicks for a smarter IDE

!35Read more (October 2013) http://www.codetrails.com/blog/powered-33-million-code-completions-codetrails-connect-12

Method Overrides 1.579.303

Constructor Calls 8.915.540

Method Calls 38.254.438

48.749.281

Bootstrapped with30++ GB Java Bytecode. Powered by Maven Central and EclipseSource Yoxos.

56.424 crowdsourced completion events

!36

org.eclipse.* 11 %org.apache.*

4 %com.google.*

9 %

com.vaadin.* 5 %

com.codetrails.* 3 %

others 14 %

javax.* 3 %

java.[n]io.* 6 %

java.util.* 25 %

java.lang.* 21 %

From December 22 to March 12

Trend: Events send per hour

!37

Visit the Codetrails Connect live dashboard: http://download.codetrails.com/connect/dashboard/

How well does it work?

!38

Num

ber o

f pro

posa

ls m

ade

1

2

3

4

5

6

7

Position in code completion window-1 0 1 2 3 4 5 6

993

475

304

214

189

123

1.094

833

327 238

197 114 87

145 56 40 38

96 61 23 22 21

77 52 19 21 20 10

963 591 373 243 285 151 157

HitMiss

not found

Successfully concluded sessions

!39

Codetrails Connect 78,2

JDT 69,5

JDT standalone vs. crowdsourced

Developers find what they need 9% more often with smart code completion. Number of documentation lookups saved in 3 months: 1.400!

What get’s shared?

!40

What is shared?

!41

{!„type“: „StringBuilder“,!„completion“: „append(String)“!

}

Sharing Preferences

!42

Still scared of crowdsourcing?

!43

Do you also suffer from Anatidaephobia?„Big Brother is watching you“ http://anniemachon.ch/annie_machon/2013/11/cryptofestival-london-30th-november.html

!44

ANATIDAEPHOBIA IS THE FEAR THAT SOMEWHERE IN THE WORLD, THERE IS A DUCK WATCHING YOU.

!45

https://vaadin.com/blog/-/blogs/crowdsourcing-vaadin-with-codetrails-connect

Snipmatch„Stop searching Stackoverflow for code snippets“

!46

Eclipse Java Templates

!47

42x Java Templates."35x SWT Templates.

The rise of code snippet repositories

!48

and many more...

Snipmatch

!49

In Eclipse Code Recommenders 2.1 (for Eclipse Luna) Install from http://download.eclipse.org/recommenders.incubator/updates/milestones/

…going social

!50

5 0

Connect Code Snippets #EarlyAccess

!51

Codetrails Connect Snippets is an Early Access Preview Install from http://download.codetrails.com/updates/connect

Enriching API Documentation

!52Eclipse Code Recommenders Livedoc 0.8 Incubator Install from http://eclipse.org/recommenders/incubators

The Connect Portal

!53This is work in progress.

!54

Breaking News:!Words carry meaning!As leading scientists found out, words....

Rethinking Recommendations

for Code Completion

A simple observation

!55

You wouldn‘t expect a call to #dispose() in #createSomething(), right?

What you expect is...

!56

How many words do you have for ‟create” ?

!57

So, it works for #createSomething too!

!58

Almost no difference!

!59

Prec

ision

0

25

50

75

100

Recall

0 10 20 30 40 50 60 70 80 90 100

ClassicVerbs

Interpolated Precision Recall Curves over 136.761 samples on JRE

What get‘s shared?

!60

{!„method“: „create“!„type“: „Composite“,!„completion“: „setLayout(...)“!

}

Let‘s back up here for a second!

!61

We get (almost) language agnostic!

!62

But all that only happens if you share…

!63

!64

Yes, there is a duck somewhere.

!65But it probably doesn’t care what you are doing.

Thank you

!66

@MarcelBruch +MarcelBruch

Questions? Get in touch: !At the booth: Ground floor Quantum - close to the stairway. !By email:marcel.bruch@codetrails.com