being amazon for software developers - ide 2.0: crowdsourcing mal anders #javaland 2014

66
Being for Software Developers IDE 2.0: Crowdsourcing mal anders…

Upload: marcel-bruch

Post on 25-May-2015

555 views

Category:

Technology


4 download

DESCRIPTION

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

TRANSCRIPT

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

Being for Software DevelopersIDE 2.0: Crowdsourcing mal anders…

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

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.

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

• 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

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

PROBLEM

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

Problem #1: Knowledge Drain

!5

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

Problem #1: Knowledge Drain

!6

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

Problem #1: Knowledge Drain

!7

Software

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

Problem #2: Continuous Learning

!8

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

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

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

How we search

!10

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

What developers look for

!11Question + Answer + Code Example = ✓

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

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…

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

If we don’t google…

!13

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

1 of 387 ?

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

!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

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

Problem

!16

Comprehend Task 3 %

Handling Interruptions 20 %

Searching Code 12 %

Navigate Code 14 %

Reading Code 19 %

Reading Docs 6 %

Edit Code 27 %

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

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

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

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

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

!19

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

!20

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

The amazon success factors

!21

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

!22

How about applying the very same principles to software development?

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

So, instead of using the web browser…

!23

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

…we connect our IDEs:

!24

projectenvironment

Clicks, Code Navigation, Searchsource code

selectedproposals

stacktraces

clickfeedback

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

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!

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

Crowdsourced Code CompletionDevelopers that bought used a StringBuilder, typically…

!26

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

A fairly trivial example…

!27

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

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

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

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

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

Crowdsourced Constructor Completion

!29

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

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

!30

1 out of 302

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

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

Use (costly) subtype checks

!31

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

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

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/

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

public class MyDialog extends Dialog {! |!!

Crowdsourcing override completions...?

!33

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

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

How about fixing quick-fix?

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

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

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.

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

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

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

Trend: Events send per hour

!37

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

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

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

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

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!

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

What get’s shared?

!40

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

What is shared?

!41

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

}

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

Sharing Preferences

!42

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

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

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

!44

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

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

!45

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

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

Snipmatch„Stop searching Stackoverflow for code snippets“

!46

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

Eclipse Java Templates

!47

42x Java Templates."35x SWT Templates.

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

The rise of code snippet repositories

!48

and many more...

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

Snipmatch

!49

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

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

…going social

!50

5 0

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

Connect Code Snippets #EarlyAccess

!51

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

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

Enriching API Documentation

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

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

The Connect Portal

!53This is work in progress.

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

!54

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

Rethinking Recommendations

for Code Completion

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

A simple observation

!55

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

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

What you expect is...

!56

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

How many words do you have for ‟create” ?

!57

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

So, it works for #createSomething too!

!58

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

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

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

What get‘s shared?

!60

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

}

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

Let‘s back up here for a second!

!61

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

We get (almost) language agnostic!

!62

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

But all that only happens if you share…

!63

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

!64

Yes, there is a duck somewhere.

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

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

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

Thank you

!66

@MarcelBruch +MarcelBruch

Questions? Get in touch: !At the booth: Ground floor Quantum - close to the stairway. !By email:[email protected]