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. • 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
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
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
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. Being for Software Developers
How 39 million click events make your IDE a smarter place
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!
28. What if we‘d just count calls...?
!28
Codetrails Connect Community Edition,
Install from http://www.codetrails.com/connect
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 ?
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/
33. public class MyDialog extends Dialog {
!
|
!
!
Crowdsourcing override completions...?
!33
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. 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.
37. Trend: Events send per hour
!37
Visit the Codetrails Connect live dashboard:
http://download.codetrails.com/connect/dashboard/
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. 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!
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
51. Connect Code Snippets #EarlyAccess
!51
Codetrails Connect Snippets is an Early Access Preview
Install from http://download.codetrails.com/updates/connect