Being for Software Developers
IDE 2.0: Crowdsourcing mal anders…
About Me
!2
@MarcelBruch
+MarcelBruch
• Project Lead of Eclipse Code Recommenders
• Eclipse Committer since 2010
• Plug-in...
• The company behind Eclipse Code Recommenders
• Eclipse IDE Experts & Consultants
• Software Tool Developers
• Data Minin...
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 We...
How we search
!10
What developers look for
!11
Question + Answer + Code Example = ✓
A typical developer day
!12
Comprehend Task
3 %
Handling Interruptions
20 %
Navigate Code
14 %
Study Code
19 %
Searching W...
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 ...
Problem
!16
Comprehend Task
3 %
Handling Interruptions
20 %
Searching Code
12 %
Navigate Code
14 %
Reading Code
19 %
Readi...
Problem
!17
Comprehend Task
3 %
Handling Interruptions
20 %
Searching Code
12 %
Navigate Code
14 %
Reading Code
19 %
Readi...
Being for Software Developers
How 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
project

environment
Clicks, Code Navigation, Search
source code
selected

proposals
stacktraces...
Crowdsourcing inside the IDE
!25
❷
Mine data,

extract patterns

create recommendation
models
Knowledge base
❸
Deliver min...
Crowdsourced Code Completion
Developers that bought used a StringBuilder, typically…
!26
A fairly trivial example…
!27
What if we‘d just count calls...?
!28
Codetrails 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
...
!30
1 out of 302
!
void ctor() {	
!
	 	 List l = new A…	
}	
Use (costly) subtype checks
!31
Codetrails Completion Tweaks for Eclipse,

Inst...
Crowdsourcing constructor completions...?
!32
It learns from you. From the very 1st moment.
Codetrails Connect Community E...
public class MyDialog extends Dialog {	
!
|	
!
!
Crowdsourcing override completions...?
!33
!
void quickfix() {	
!
	 	 List l = new A	
}	
How about fixing quick-fix?
!34
Not fixed yet. But could be easily - when you s...
39.000.000 clicks for a smarter IDE
!35
Read more (October 2013)

http://www.codetrails.com/blog/powered-33-million-code-c...
56.424 crowdsourced completion events
!36
org.eclipse.*
11 %org.apache.*
4 %
com.google.*
9 %
com.vaadin.*
5 %
com.codetra...
Trend: Events send per hour
!37
Visit the Codetrails Connect live dashboard:

http://download.codetrails.com/connect/dashb...
How well does it work?
!38
Numberofproposalsmade
1
2
3
4
5
6
7
Position in code completion window
-1 0 1 2 3 4 5 6
993
475...
Successfully concluded sessions
!39
Codetrails Connect
78,2
JDT
69,5
JDT standalone vs. crowdsourced
Developers find what t...
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://anniemach...
!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.i...
…going social
!50
5 0
Connect Code Snippets #EarlyAccess
!51
Codetrails Connect Snippets is an Early Access Preview

Install from http://downloa...
Enriching API Documentation
!52
Eclipse Code Recommenders Livedoc 0.8 Incubator

Install from http://eclipse.org/recommend...
The Connect Portal
!53
This is work in progress.
!54
Breaking News:!
Words carry meaning!
As leading scientists found out, words....
Rethinking Recommendation
for Code Com...
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
Precision
0
25
50
75
100
Recall
0 10 20 30 40 50 60 70 80 90 100
Classic
Verbs
Interpolated Prec...
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 stai...
Upcoming SlideShare
Loading in...5
×

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

638

Published on

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

Published in: Technology
1 Comment
0 Likes
Statistics
Notes
  • Really interesting Marcel, thanks​!​

    I think that you would be really interested in some of the most cutting-edge research that I have come across explaining crowds, open innovation, and citizen science.​

    http://papers.ssrn.com/sol3/cf_dev/AbsByAuth.cfm?per_id=1919614

    And you may also enjoy this blog about the same too:
    https://thecrowdsociety.jux.com/

    Powerful stuff, no?
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Be the first to like this

No Downloads
Views
Total Views
638
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
3
Comments
1
Likes
0
Embeds 0
No embeds

No notes for slide

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

  1. 1. Being for Software Developers IDE 2.0: Crowdsourcing mal anders…
  2. 2. 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.
  3. 3. • 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
  4. 4. PROBLEM
  5. 5. Problem #1: Knowledge Drain !5
  6. 6. Problem #1: Knowledge Drain !6
  7. 7. Problem #1: Knowledge Drain !7 Software
  8. 8. Problem #2: Continuous Learning !8
  9. 9. 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
  10. 10. How we search !10
  11. 11. What developers look for !11 Question + Answer + Code Example = ✓
  12. 12. 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…
  13. 13. If we don’t google… !13
  14. 14. 1 of 387 ?
  15. 15. !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
  16. 16. Problem !16 Comprehend Task 3 % Handling Interruptions 20 % Searching Code 12 % Navigate Code 14 % Reading Code 19 % Reading Docs 6 % Edit Code 27 %
  17. 17. 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
  18. 18. Being for Software Developers How 39 million click events make your IDE a smarter place
  19. 19. !19
  20. 20. !20
  21. 21. The amazon success factors !21
  22. 22. !22 How about applying the very same principles to software development?
  23. 23. So, instead of using the web browser… !23
  24. 24. …we connect our IDEs: !24 project
 environment Clicks, Code Navigation, Search source code selected
 proposals stacktraces click
 feedback
  25. 25. Crowdsourcing inside the IDE !25 ❷ Mine data,
 extract patterns
 create recommendation models Knowledge base ❸ Deliver mined
 knowledge to developers ❶ You sharing information Software Development gets social again!
  26. 26. Crowdsourced Code Completion Developers that bought used a StringBuilder, typically… !26
  27. 27. A fairly trivial example… !27
  28. 28. What if we‘d just count calls...? !28 Codetrails Connect Community Edition,
 Install from http://www.codetrails.com/connect
  29. 29. ! 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. 30. !30 1 out of 302
  31. 31. ! void ctor() { ! List l = new A… } Use (costly) subtype checks !31 Codetrails Completion Tweaks for Eclipse,
 Install from http://download.codetrails.com/updates/connect/
  32. 32. 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/
  33. 33. public class MyDialog extends Dialog { ! | ! ! Crowdsourcing override completions...? !33
  34. 34. ! void quickfix() { ! List l = new A } How about fixing quick-fix? !34 Not fixed yet. But could be easily - when you start sharing your knowledge…
  35. 35. 39.000.000 clicks for a smarter IDE !35 Read 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 with
 30++ GB Java Bytecode. Powered by Maven Central and EclipseSource Yoxos.
  36. 36. 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
  37. 37. Trend: Events send per hour !37 Visit the Codetrails Connect live dashboard:
 http://download.codetrails.com/connect/dashboard/
  38. 38. How well does it work? !38 Numberofproposalsmade 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 Hit Miss not found
  39. 39. 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!
  40. 40. What get’s shared? !40
  41. 41. What is shared? !41 {! „type“: „StringBuilder“,! „completion“: „append(String)“! }
  42. 42. Sharing Preferences !42
  43. 43. 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. 44. !44 ANATIDAEPHOBIA IS THE FEAR
 THAT SOMEWHERE IN THE WORLD, THERE IS A DUCK WATCHING YOU.
  45. 45. !45 https://vaadin.com/blog/-/blogs/crowdsourcing-vaadin-with-codetrails-connect
  46. 46. Snipmatch „Stop searching Stackoverflow for code snippets“ !46
  47. 47. Eclipse Java Templates !47 42x Java Templates." 35x SWT Templates.
  48. 48. The rise of code snippet repositories !48 and many more...
  49. 49. Snipmatch !49 In Eclipse Code Recommenders 2.1 (for Eclipse Luna)
 Install from http://download.eclipse.org/recommenders.incubator/updates/milestones/
  50. 50. …going social !50 5 0
  51. 51. Connect Code Snippets #EarlyAccess !51 Codetrails Connect Snippets is an Early Access Preview
 Install from http://download.codetrails.com/updates/connect
  52. 52. Enriching API Documentation !52 Eclipse Code Recommenders Livedoc 0.8 Incubator
 Install from http://eclipse.org/recommenders/incubators
  53. 53. The Connect Portal !53 This is work in progress.
  54. 54. !54 Breaking News:! Words carry meaning! As leading scientists found out, words.... Rethinking Recommendation for Code Completion
  55. 55. A simple observation !55 You wouldn‘t expect a call to #dispose()
 in #createSomething(), right?
  56. 56. What you expect is... !56
  57. 57. How many words do you have for ‟create” ? !57
  58. 58. So, it works for #createSomething too! !58
  59. 59. Almost no difference! !59 Precision 0 25 50 75 100 Recall 0 10 20 30 40 50 60 70 80 90 100 Classic Verbs Interpolated Precision Recall Curves over 136.761 samples on JRE
  60. 60. What get‘s shared? !60 {! „method“: „create“! „type“: „Composite“,! „completion“: „setLayout(...)“! }
  61. 61. Let‘s back up here for a second! !61
  62. 62. We get (almost) language agnostic! !62
  63. 63. But all that only happens if you share… !63
  64. 64. !64 Yes, there is a duck somewhere.
  65. 65. !65But it probably doesn’t care what you are doing.
  66. 66. 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
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×