SlideShare ist ein Scribd-Unternehmen logo
1 von 64
Downloaden Sie, um offline zu lesen
NEXT GENERATION IDE 
HOW CROWDSOURCING (IN) YOUR IDE SPEEDS UP 
YOUR SOFTWARE DEVELOPMENT PROCESSES
About me 
• Project Lead of Eclipse Code Recommenders 
• Eclipse Committer since 2010 
• Plug-in Developer for 10 years (Eclipse 2.1) 
• Member of the Eclipse Architecture Council 
• Co-Lead of Java User Group Darmstadt 
• Speaker at JUGs, EclipseCon, JAX, JavaOne… 
• PhD in Computer Science 
• 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. 
2 
Marcel Bruch 
@marcelbruch
About Codetrails 
• The company behind Eclipse Code Recommenders 
• Software Tool Developers 
• Data Mining Specialists 
• Eclipse RCP Experts & Consultants 
• Research Spin-off Darmstadt University of Technology 
3
NEXT GENERATION IDE 
HOW CROWDSOURCING (IN) YOUR IDE SPEEDS UP 
YOUR SOFTWARE DEVELOPMENT PROCESSES
Back in 1995… 
5
6 
{ — Your Software —– } 
Developer
——— 7 
{ — Your Software 
—– } 
Developer
{ ——– } 
8 
Your Software 
{ — —– } 
Developer 
Your Software
Your Software 
Your Software 
9 
Framework 
Developer 
? 
{ ——– } 
{ — —– } 
ADpepvleicloaptioenr 
Developer 
!
Here the problems begin… 
Documentation 
10 
{ ——– } 
docs are 
missing! 
there are 
no code 
examples! 
docs are 
outdated! 
api is 
bloated! 
code has 
many bugs! 
is the api 
easy? 
is 
documentation 
good? 
does it work? 
are there 
bugs? 
where to 
improve? 
where do 
you struggle? 
what do you 
use? 
what can I 
remove?
How to leverage the crowd? 
11 
Documentation 
Framework 
Developer 
{ ——— } 
{ — —— { } ——— } 
Application 
Developers 
{ — —— }
How to leverage the crowd? 
12 
Framework 
Developer 
——— { —— — { } 
——— —— — } 
{ — —— } 
{ — —— } 
Application 
Developers 
{ — — —} 
{ — — —} 
{ — — —} 
{ — — —}
By integrating with your IDE… 
13 
Debugging 
instructions 
Source code 
Used 
frameworks 
Selected 
proposals 
Viewed 
documentation 
Runtime errors 
and stacktraces
Bad Javadoc 
In good documentation we trust…
In API documentation we trust 
15 
/** 
* Rollsback the transaction if any and clears different lists to 
* start with an empty resource again. 
* Note that the super.doUnload is not called because that clears 
* the list resulting in all kinds of undesirable inverseremoves. 
*/ 
@Override 
protected void doUnload() { 
super.doUnload(); 
} 
No? Are you sure?
In those situations you wish you could… 
16 
/** 
* Rollsback the transaction if any and clears different lists to 
* start with an empty resource again. 
* Note that the super.doUnload is not called because that clears 
* the list resulting in all kinds of undesirable inverseremoves. 
*/ 
@Override 
protected void doUnload() { 
super.doUnload(); 
}
…and let the committers know… 
17 
Hello committers, 
we received a user feedback for TYPE «com.your.class». The user rated the 
overall documentation quality as «NOT_AT_ALL_HELPFUL». In particular 
he/she said: 
1. UNCLEAR_INFORMATION 
The user provided the following comment: 
«The class is deprecated but no pointers are given which other class to use 
instead. Please provide a hint in the class javadoc. Thanks, Frederik» 
Thank you for caring. 
Your friendly 
Javadoc Feedback Inbox 
The class is deprecated but no pointers are given which other 
class to use instead. Please provide a hint in the class javadoc. 
Thanks, Frederik 
Customer case study & prototype at Codetrails.
No examples 
A snippet says more than thousand words
These I’ve a great idea moments… 
19 
{ ——– } 
Application 
Developer 
Product 
Manager
How we learn about it… 
20 
{ ——– } 
Application 
Developer
But if we just could have asked Eclipse… 
public class HelpExample extends WizardPage 
{ 
| 
21 
Eclipse Code Recommenders Snipmatch 
See http://eclipse.org/recommenders/manual/#snipmatch
Creating snippets for the community… 
22
Sharing with the community… 
23
Integrating Snippets into API docs 
24 
public class MyDialog extends Dialog { 
(automatically, of course) 
@Override 
protected Control createDialogArea(Composite parent) {
Codesearch reloaded 
More than just ”Find References in your Workspace”…
How do I… 
26 
void showHelp() { 
// How do I get the help system? 
IWorkbenchHelpSystem help = | 
}
You should ask your IDE…
… obtain an instance of X? 
28 
void showHelp() { 
// How do I get the help system? 
IWorkbenchHelpSystem help = |
…which arguments to fill in? 
29
…about frequent usage patterns? 
30
Where does that data come from? 
(i) eclipse workspace (ii) maven repository 
Codetrails Connect Codesearch, currently closed beta 31
Overwhelming APIs 
What do you think of when you hear “bloated API”?
One example… 
33 
@Override 
public void create(JPanel parent) { 
JButton button = new JButton(); 
button.| 
Which method will you 
call next in this situation?
1 of 389?
A fairly trivial example… 
StringBuilder sb = new StringBuilder(); 
sb.| 
35
What if we’d just count clicks…? 
StringBuilder sb = new StringBuilder(); 
sb.| 
36 
{ ——– } 
Application 
Developer 
{ 
„type“: „StringBuilder“, 
„completion“: „append(String)“ 
}
We could crowdsource code completion! 
37 
StringBuilder sb = new StringBuilder(); 
sb.| 
Codetrails Connect Community Edition, 
Install from http://www.codetrails.com/connect
How about argument completions? 
38 
@Override 
protected Control createControl(final Composite parent) { 
textWidget = new Text(parent, SWT.BORDER); 
textWidget.addListener(eventType, listener) 
Codetrails Connect Community Edition, 
Install from http://www.codetrails.com/connect
And when extending a framework base class? 
39 
public class MyDialog extends Dialog { 
| 
Codetrails Connect Community Edition, 
Install from http://www.codetrails.com/connect
Successfully concluded sessions 
40 
crowdsourced 
79,5 
JDT 
66,5 
JDT as-is vs. crowdsourced 
13% less terminated sessions, 
measured in over 400.000 
sessions
Bug detection, crowd-style 
99.5% of all developers didn’t do it like you. So…
Costs fixing a bug between code and production 
42 
Relative cost of a bugfix 
25x 
10x 
0x 0x 1x 
Req Design Code Acceptance Production 
http://www.abeacha.com/NIST_press_release_bugs_cost.htm
What’s wrong with this code? 
43 
@Override 
public void createControl(Composite parent) { 
Composite container = new Composite(parent, SWT.NONE); 
container.setLayout(new GridLayout()); 
TableViewer tableViewer = new TableViewer(container); 
tableViewer.setUseHashlookup(false); 
tableViewer.addSelectionChangedListener(listener); 
Table table = tableViewer.getTable(); 
tableViewer.setCellEditors(editors); 
tableViewer.setColumnProperties(columnProperties); 
tableViewer.setLabelProvider(labelProvider); 
tableViewer.setInput(input); 
tableViewer.setContentProvider(provider); 
}
Findbugs’ crowd ed. would find it… 
Codetrails Findbugs, currently closed alpha 44
If no one dared to do it like this… 
45
Rethinking Stacktraces 
“People who ‘bought’ this NullPointerException typically fixed this by...”
Automated Error Reporting in Eclipse Mars 
https://www.eclipse.org/community/eclipse_newsletter/2014/november/article1.php 47
48
Committers get notified about new bugs… 
49
Reporters get immediate feedback 
50 
Your report has been matched against an existing bug which 
was closed as FIXED with comment: 
Please update to the latest version. 
See Bug 446841 for details.
Eclipse Committer Dashboard of the Automated Error Reports plugin 51
Finding similar errors (aka duplicates) 
org.eclipse.swt.SWTException: Invalid Thread access 
at org.eclipse.swt.SWT.error(SWT.java:3884) 
at org.eclipse.swt.SWT.error(SWT.java:3799) 
at org.eclipse.swt.SWT.error(SWT.java:3770) 
at org.eclipse.swt.widgets.Widget.error(Widget.java:463) 
at org.eclipse.swt.widgets.Widget.checkWidget(Widget.java:355) 
at org.eclipse.swt.widgets.ProgressBar.setSelection(ProgressBar.java:317) 
at org.eclipse.recommenders.stacktraces.Demo.run(Demo.java:23) 
at java.lang.Thread.run(Thread.java:619) 
52 
+ java version 
+ bundle/jar versions 
+ installed extensions 
+ thread dumps 
+ …
Automated error reporting is nice, but… 
How can we support you in writing software? 
53
Debugging – the old way 
54 
Exception in thread “Thread-0” org.eclipse.swt.SWTException: Invalid Thread access 
at org.eclipse.swt.SWT.error(SWT.java:3884) 
at org.eclipse.swt.SWT.error(SWT.java:3799) 
at org.eclipse.swt.SWT.error(SWT.java:3770) 
at org.eclipse.swt.widgets.Widget.error(Widget.java:463) 
at org.eclipse.swt.widgets.Widget.checkWidget(Widget.java:355) 
at org.eclipse.swt.widgets.ProgressBar.setSelection(ProgressBar.java:317) 
at org.eclipse.recommenders.stacktraces.Demo.run(Demo.java:23) 
at java.lang.Thread.run(Thread.java:619)
Getting help – the old way 
55
But usually you get… 
56
How about sharing exceptions that 
occurred at development time? 
57 
Exception in thread “Thread-0” org.eclipse.swt.SWTException: Invalid Thread access 
at org.eclipse.swt.SWT.error(SWT.java:3884) 
at org.eclipse.swt.SWT.error(SWT.java:3799) 
at org.eclipse.swt.SWT.error(SWT.java:3770) 
at org.eclipse.swt.widgets.Widget.error(Widget.java:463) 
at org.eclipse.swt.widgets.Widget.checkWidget(Widget.java:355) 
at org.eclipse.swt.widgets.ProgressBar.setSelection(ProgressBar.java:317) 
at org.eclipse.recommenders.stacktraces.Demo.run(Demo.java:23) 
at java.lang.Thread.run(Thread.java:619)
Telling your users what went wrong 
Found a match! 
We found a knowledge base entry that matches your stacktrace. 
The SWTException “Invalid thread access” you experienced 
is caused by calling an UI widget’s methods from a non-ui 
thread. See knowledge base entry #341 for further details. 
A concept yet, no prototype. 58
How about stacktraces.org? 
59
Take aways? 
60
The crowd is here to stay! 
61
The IDE is your browser - let’s learn to use it as such 
62 
Debugging 
instructions 
Source code 
Used 
frameworks 
Selected 
proposals 
Viewed 
documentation 
Runtime errors 
and stacktraces
Thank You. 
marcelbruch marcel.bruch@codetrails.com 
@marcelbruch
Contact Us 
64 
Codetrails GmbH 
Robert-Bosch-Str. 7 
64293 Darmstadt, Germany 
www: codetrails.com 
phone: 06151 / 2767 092 
email: info@codetrails.com 
Dr. Marcel Bruch 
CEO 
mobile: 0179 / 1317 721 
email: marcel.bruch@codetrails.com

Weitere ähnliche Inhalte

Ähnlich wie Need 4 Speed FI

JUG Münster 2014 - Code Recommenders & Codetrails - Wissenstransfer 2.0
JUG Münster 2014 - Code Recommenders & Codetrails - Wissenstransfer 2.0JUG Münster 2014 - Code Recommenders & Codetrails - Wissenstransfer 2.0
JUG Münster 2014 - Code Recommenders & Codetrails - Wissenstransfer 2.0Marcel Bruch
 
2010 06-24 karlsruher entwicklertag
2010 06-24 karlsruher entwicklertag2010 06-24 karlsruher entwicklertag
2010 06-24 karlsruher entwicklertagMarcel Bruch
 
JavaScript Interview Questions with Answers
JavaScript Interview Questions with AnswersJavaScript Interview Questions with Answers
JavaScript Interview Questions with AnswersAK Deep Knowledge
 
Java Programming
Java ProgrammingJava Programming
Java ProgrammingTracy Clark
 
Working Effectively With Legacy Code
Working Effectively With Legacy CodeWorking Effectively With Legacy Code
Working Effectively With Legacy CodeNaresh Jain
 
Lunch and learn as3_frameworks
Lunch and learn as3_frameworksLunch and learn as3_frameworks
Lunch and learn as3_frameworksYuri Visser
 
Introduction to Software Development
Introduction to Software DevelopmentIntroduction to Software Development
Introduction to Software DevelopmentZeeshan MIrza
 
Analysis of bugs in Orchard CMS
Analysis of bugs in Orchard CMSAnalysis of bugs in Orchard CMS
Analysis of bugs in Orchard CMSPVS-Studio
 
Inria Tech Talk : Comment améliorer la qualité de vos logiciels avec STAMP
Inria Tech Talk : Comment améliorer la qualité de vos logiciels avec STAMPInria Tech Talk : Comment améliorer la qualité de vos logiciels avec STAMP
Inria Tech Talk : Comment améliorer la qualité de vos logiciels avec STAMPStéphanie Roger
 
Microservices Chaos Testing at Jet
Microservices Chaos Testing at JetMicroservices Chaos Testing at Jet
Microservices Chaos Testing at JetC4Media
 
DevSecCon SG 2018 Fabian Presentation Slides
DevSecCon SG 2018 Fabian Presentation SlidesDevSecCon SG 2018 Fabian Presentation Slides
DevSecCon SG 2018 Fabian Presentation SlidesFab L
 
To ∞ (~65K) and beyond! - Sebastiano Gottardo - Codemotion Milan 2016
To ∞ (~65K) and beyond! - Sebastiano Gottardo - Codemotion Milan 2016To ∞ (~65K) and beyond! - Sebastiano Gottardo - Codemotion Milan 2016
To ∞ (~65K) and beyond! - Sebastiano Gottardo - Codemotion Milan 2016Codemotion
 
Making Steaks from Sacred Cows
Making Steaks from Sacred CowsMaking Steaks from Sacred Cows
Making Steaks from Sacred CowsKevlin Henney
 
Test-Driven Design Insights@DevoxxBE 2023.pptx
Test-Driven Design Insights@DevoxxBE 2023.pptxTest-Driven Design Insights@DevoxxBE 2023.pptx
Test-Driven Design Insights@DevoxxBE 2023.pptxVictor Rentea
 
OpenDaylight Developer Experience 2.0
 OpenDaylight Developer Experience 2.0 OpenDaylight Developer Experience 2.0
OpenDaylight Developer Experience 2.0Michael Vorburger
 
Front-End Modernization for Mortals
Front-End Modernization for MortalsFront-End Modernization for Mortals
Front-End Modernization for Mortalscgack
 
Front end-modernization
Front end-modernizationFront end-modernization
Front end-modernizationdevObjective
 

Ähnlich wie Need 4 Speed FI (20)

JUG Münster 2014 - Code Recommenders & Codetrails - Wissenstransfer 2.0
JUG Münster 2014 - Code Recommenders & Codetrails - Wissenstransfer 2.0JUG Münster 2014 - Code Recommenders & Codetrails - Wissenstransfer 2.0
JUG Münster 2014 - Code Recommenders & Codetrails - Wissenstransfer 2.0
 
2010 06-24 karlsruher entwicklertag
2010 06-24 karlsruher entwicklertag2010 06-24 karlsruher entwicklertag
2010 06-24 karlsruher entwicklertag
 
JavaScript Interview Questions with Answers
JavaScript Interview Questions with AnswersJavaScript Interview Questions with Answers
JavaScript Interview Questions with Answers
 
Java Programming
Java ProgrammingJava Programming
Java Programming
 
Csharp dot net
Csharp dot netCsharp dot net
Csharp dot net
 
Responsible JavaScript
Responsible JavaScriptResponsible JavaScript
Responsible JavaScript
 
Working Effectively With Legacy Code
Working Effectively With Legacy CodeWorking Effectively With Legacy Code
Working Effectively With Legacy Code
 
Lunch and learn as3_frameworks
Lunch and learn as3_frameworksLunch and learn as3_frameworks
Lunch and learn as3_frameworks
 
Introduction to Software Development
Introduction to Software DevelopmentIntroduction to Software Development
Introduction to Software Development
 
Analysis of bugs in Orchard CMS
Analysis of bugs in Orchard CMSAnalysis of bugs in Orchard CMS
Analysis of bugs in Orchard CMS
 
Inria Tech Talk : Comment améliorer la qualité de vos logiciels avec STAMP
Inria Tech Talk : Comment améliorer la qualité de vos logiciels avec STAMPInria Tech Talk : Comment améliorer la qualité de vos logiciels avec STAMP
Inria Tech Talk : Comment améliorer la qualité de vos logiciels avec STAMP
 
Microservices Chaos Testing at Jet
Microservices Chaos Testing at JetMicroservices Chaos Testing at Jet
Microservices Chaos Testing at Jet
 
DevSecCon SG 2018 Fabian Presentation Slides
DevSecCon SG 2018 Fabian Presentation SlidesDevSecCon SG 2018 Fabian Presentation Slides
DevSecCon SG 2018 Fabian Presentation Slides
 
To ∞ (~65K) and beyond! - Sebastiano Gottardo - Codemotion Milan 2016
To ∞ (~65K) and beyond! - Sebastiano Gottardo - Codemotion Milan 2016To ∞ (~65K) and beyond! - Sebastiano Gottardo - Codemotion Milan 2016
To ∞ (~65K) and beyond! - Sebastiano Gottardo - Codemotion Milan 2016
 
Making Steaks from Sacred Cows
Making Steaks from Sacred CowsMaking Steaks from Sacred Cows
Making Steaks from Sacred Cows
 
Test-Driven Design Insights@DevoxxBE 2023.pptx
Test-Driven Design Insights@DevoxxBE 2023.pptxTest-Driven Design Insights@DevoxxBE 2023.pptx
Test-Driven Design Insights@DevoxxBE 2023.pptx
 
OpenDaylight Developer Experience 2.0
 OpenDaylight Developer Experience 2.0 OpenDaylight Developer Experience 2.0
OpenDaylight Developer Experience 2.0
 
Front-End Modernization for Mortals
Front-End Modernization for MortalsFront-End Modernization for Mortals
Front-End Modernization for Mortals
 
Front end-modernization
Front end-modernizationFront end-modernization
Front end-modernization
 
Front end-modernization
Front end-modernizationFront end-modernization
Front end-modernization
 

Mehr von Marcel Bruch

The Sin City of Code - No Images
The Sin City of Code - No ImagesThe Sin City of Code - No Images
The Sin City of Code - No ImagesMarcel Bruch
 
Being Amazon for Software Developers - IDE 2.0: Crowdsourcing mal anders #Jav...
Being Amazon for Software Developers - IDE 2.0: Crowdsourcing mal anders #Jav...Being Amazon for Software Developers - IDE 2.0: Crowdsourcing mal anders #Jav...
Being Amazon for Software Developers - IDE 2.0: Crowdsourcing mal anders #Jav...Marcel Bruch
 
DWX 2013 Nuremberg
DWX 2013 NurembergDWX 2013 Nuremberg
DWX 2013 NurembergMarcel Bruch
 
2013-06 - Eclipse Kepler Democamps
2013-06 - Eclipse Kepler Democamps2013-06 - Eclipse Kepler Democamps
2013-06 - Eclipse Kepler DemocampsMarcel Bruch
 
Eclipse Democamp Zurich
Eclipse Democamp ZurichEclipse Democamp Zurich
Eclipse Democamp ZurichMarcel Bruch
 
Eclipse Code Recommenders @ MAJUG 2011
Eclipse Code Recommenders @ MAJUG 2011Eclipse Code Recommenders @ MAJUG 2011
Eclipse Code Recommenders @ MAJUG 2011Marcel Bruch
 
Eclipse Code Recommenders @ cross-event Deutsche Telekom Developer Garden Tec...
Eclipse Code Recommenders @ cross-event Deutsche Telekom Developer Garden Tec...Eclipse Code Recommenders @ cross-event Deutsche Telekom Developer Garden Tec...
Eclipse Code Recommenders @ cross-event Deutsche Telekom Developer Garden Tec...Marcel Bruch
 
IDE 2.0 & Research at Eclipse - ECOOP 2011
IDE 2.0 & Research at Eclipse - ECOOP 2011IDE 2.0 & Research at Eclipse - ECOOP 2011
IDE 2.0 & Research at Eclipse - ECOOP 2011Marcel Bruch
 
Eclipse Indigo DemoCamp Walldorf 2011
Eclipse Indigo DemoCamp Walldorf 2011Eclipse Indigo DemoCamp Walldorf 2011
Eclipse Indigo DemoCamp Walldorf 2011Marcel Bruch
 

Mehr von Marcel Bruch (9)

The Sin City of Code - No Images
The Sin City of Code - No ImagesThe Sin City of Code - No Images
The Sin City of Code - No Images
 
Being Amazon for Software Developers - IDE 2.0: Crowdsourcing mal anders #Jav...
Being Amazon for Software Developers - IDE 2.0: Crowdsourcing mal anders #Jav...Being Amazon for Software Developers - IDE 2.0: Crowdsourcing mal anders #Jav...
Being Amazon for Software Developers - IDE 2.0: Crowdsourcing mal anders #Jav...
 
DWX 2013 Nuremberg
DWX 2013 NurembergDWX 2013 Nuremberg
DWX 2013 Nuremberg
 
2013-06 - Eclipse Kepler Democamps
2013-06 - Eclipse Kepler Democamps2013-06 - Eclipse Kepler Democamps
2013-06 - Eclipse Kepler Democamps
 
Eclipse Democamp Zurich
Eclipse Democamp ZurichEclipse Democamp Zurich
Eclipse Democamp Zurich
 
Eclipse Code Recommenders @ MAJUG 2011
Eclipse Code Recommenders @ MAJUG 2011Eclipse Code Recommenders @ MAJUG 2011
Eclipse Code Recommenders @ MAJUG 2011
 
Eclipse Code Recommenders @ cross-event Deutsche Telekom Developer Garden Tec...
Eclipse Code Recommenders @ cross-event Deutsche Telekom Developer Garden Tec...Eclipse Code Recommenders @ cross-event Deutsche Telekom Developer Garden Tec...
Eclipse Code Recommenders @ cross-event Deutsche Telekom Developer Garden Tec...
 
IDE 2.0 & Research at Eclipse - ECOOP 2011
IDE 2.0 & Research at Eclipse - ECOOP 2011IDE 2.0 & Research at Eclipse - ECOOP 2011
IDE 2.0 & Research at Eclipse - ECOOP 2011
 
Eclipse Indigo DemoCamp Walldorf 2011
Eclipse Indigo DemoCamp Walldorf 2011Eclipse Indigo DemoCamp Walldorf 2011
Eclipse Indigo DemoCamp Walldorf 2011
 

Kürzlich hochgeladen

TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Kaya Weers
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersNicole Novielli
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationKnoldus Inc.
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterMydbops
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Alkin Tezuysal
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...Nikki Chapple
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality AssuranceInflectra
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Hiroshi SHIBATA
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024TopCSSGallery
 
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical InfrastructureVarsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructureitnewsafrica
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesMuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesManik S Magar
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Strongerpanagenda
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 

Kürzlich hochgeladen (20)

TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog Presentation
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL Router
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024
 
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical InfrastructureVarsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesMuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 

Need 4 Speed FI

  • 1. NEXT GENERATION IDE HOW CROWDSOURCING (IN) YOUR IDE SPEEDS UP YOUR SOFTWARE DEVELOPMENT PROCESSES
  • 2. About me • Project Lead of Eclipse Code Recommenders • Eclipse Committer since 2010 • Plug-in Developer for 10 years (Eclipse 2.1) • Member of the Eclipse Architecture Council • Co-Lead of Java User Group Darmstadt • Speaker at JUGs, EclipseCon, JAX, JavaOne… • PhD in Computer Science • 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. 2 Marcel Bruch @marcelbruch
  • 3. About Codetrails • The company behind Eclipse Code Recommenders • Software Tool Developers • Data Mining Specialists • Eclipse RCP Experts & Consultants • Research Spin-off Darmstadt University of Technology 3
  • 4. NEXT GENERATION IDE HOW CROWDSOURCING (IN) YOUR IDE SPEEDS UP YOUR SOFTWARE DEVELOPMENT PROCESSES
  • 6. 6 { — Your Software —– } Developer
  • 7. ——— 7 { — Your Software —– } Developer
  • 8. { ——– } 8 Your Software { — —– } Developer Your Software
  • 9. Your Software Your Software 9 Framework Developer ? { ——– } { — —– } ADpepvleicloaptioenr Developer !
  • 10. Here the problems begin… Documentation 10 { ——– } docs are missing! there are no code examples! docs are outdated! api is bloated! code has many bugs! is the api easy? is documentation good? does it work? are there bugs? where to improve? where do you struggle? what do you use? what can I remove?
  • 11. How to leverage the crowd? 11 Documentation Framework Developer { ——— } { — —— { } ——— } Application Developers { — —— }
  • 12. How to leverage the crowd? 12 Framework Developer ——— { —— — { } ——— —— — } { — —— } { — —— } Application Developers { — — —} { — — —} { — — —} { — — —}
  • 13. By integrating with your IDE… 13 Debugging instructions Source code Used frameworks Selected proposals Viewed documentation Runtime errors and stacktraces
  • 14. Bad Javadoc In good documentation we trust…
  • 15. In API documentation we trust 15 /** * Rollsback the transaction if any and clears different lists to * start with an empty resource again. * Note that the super.doUnload is not called because that clears * the list resulting in all kinds of undesirable inverseremoves. */ @Override protected void doUnload() { super.doUnload(); } No? Are you sure?
  • 16. In those situations you wish you could… 16 /** * Rollsback the transaction if any and clears different lists to * start with an empty resource again. * Note that the super.doUnload is not called because that clears * the list resulting in all kinds of undesirable inverseremoves. */ @Override protected void doUnload() { super.doUnload(); }
  • 17. …and let the committers know… 17 Hello committers, we received a user feedback for TYPE «com.your.class». The user rated the overall documentation quality as «NOT_AT_ALL_HELPFUL». In particular he/she said: 1. UNCLEAR_INFORMATION The user provided the following comment: «The class is deprecated but no pointers are given which other class to use instead. Please provide a hint in the class javadoc. Thanks, Frederik» Thank you for caring. Your friendly Javadoc Feedback Inbox The class is deprecated but no pointers are given which other class to use instead. Please provide a hint in the class javadoc. Thanks, Frederik Customer case study & prototype at Codetrails.
  • 18. No examples A snippet says more than thousand words
  • 19. These I’ve a great idea moments… 19 { ——– } Application Developer Product Manager
  • 20. How we learn about it… 20 { ——– } Application Developer
  • 21. But if we just could have asked Eclipse… public class HelpExample extends WizardPage { | 21 Eclipse Code Recommenders Snipmatch See http://eclipse.org/recommenders/manual/#snipmatch
  • 22. Creating snippets for the community… 22
  • 23. Sharing with the community… 23
  • 24. Integrating Snippets into API docs 24 public class MyDialog extends Dialog { (automatically, of course) @Override protected Control createDialogArea(Composite parent) {
  • 25. Codesearch reloaded More than just ”Find References in your Workspace”…
  • 26. How do I… 26 void showHelp() { // How do I get the help system? IWorkbenchHelpSystem help = | }
  • 27. You should ask your IDE…
  • 28. … obtain an instance of X? 28 void showHelp() { // How do I get the help system? IWorkbenchHelpSystem help = |
  • 29. …which arguments to fill in? 29
  • 30. …about frequent usage patterns? 30
  • 31. Where does that data come from? (i) eclipse workspace (ii) maven repository Codetrails Connect Codesearch, currently closed beta 31
  • 32. Overwhelming APIs What do you think of when you hear “bloated API”?
  • 33. One example… 33 @Override public void create(JPanel parent) { JButton button = new JButton(); button.| Which method will you call next in this situation?
  • 35. A fairly trivial example… StringBuilder sb = new StringBuilder(); sb.| 35
  • 36. What if we’d just count clicks…? StringBuilder sb = new StringBuilder(); sb.| 36 { ——– } Application Developer { „type“: „StringBuilder“, „completion“: „append(String)“ }
  • 37. We could crowdsource code completion! 37 StringBuilder sb = new StringBuilder(); sb.| Codetrails Connect Community Edition, Install from http://www.codetrails.com/connect
  • 38. How about argument completions? 38 @Override protected Control createControl(final Composite parent) { textWidget = new Text(parent, SWT.BORDER); textWidget.addListener(eventType, listener) Codetrails Connect Community Edition, Install from http://www.codetrails.com/connect
  • 39. And when extending a framework base class? 39 public class MyDialog extends Dialog { | Codetrails Connect Community Edition, Install from http://www.codetrails.com/connect
  • 40. Successfully concluded sessions 40 crowdsourced 79,5 JDT 66,5 JDT as-is vs. crowdsourced 13% less terminated sessions, measured in over 400.000 sessions
  • 41. Bug detection, crowd-style 99.5% of all developers didn’t do it like you. So…
  • 42. Costs fixing a bug between code and production 42 Relative cost of a bugfix 25x 10x 0x 0x 1x Req Design Code Acceptance Production http://www.abeacha.com/NIST_press_release_bugs_cost.htm
  • 43. What’s wrong with this code? 43 @Override public void createControl(Composite parent) { Composite container = new Composite(parent, SWT.NONE); container.setLayout(new GridLayout()); TableViewer tableViewer = new TableViewer(container); tableViewer.setUseHashlookup(false); tableViewer.addSelectionChangedListener(listener); Table table = tableViewer.getTable(); tableViewer.setCellEditors(editors); tableViewer.setColumnProperties(columnProperties); tableViewer.setLabelProvider(labelProvider); tableViewer.setInput(input); tableViewer.setContentProvider(provider); }
  • 44. Findbugs’ crowd ed. would find it… Codetrails Findbugs, currently closed alpha 44
  • 45. If no one dared to do it like this… 45
  • 46. Rethinking Stacktraces “People who ‘bought’ this NullPointerException typically fixed this by...”
  • 47. Automated Error Reporting in Eclipse Mars https://www.eclipse.org/community/eclipse_newsletter/2014/november/article1.php 47
  • 48. 48
  • 49. Committers get notified about new bugs… 49
  • 50. Reporters get immediate feedback 50 Your report has been matched against an existing bug which was closed as FIXED with comment: Please update to the latest version. See Bug 446841 for details.
  • 51. Eclipse Committer Dashboard of the Automated Error Reports plugin 51
  • 52. Finding similar errors (aka duplicates) org.eclipse.swt.SWTException: Invalid Thread access at org.eclipse.swt.SWT.error(SWT.java:3884) at org.eclipse.swt.SWT.error(SWT.java:3799) at org.eclipse.swt.SWT.error(SWT.java:3770) at org.eclipse.swt.widgets.Widget.error(Widget.java:463) at org.eclipse.swt.widgets.Widget.checkWidget(Widget.java:355) at org.eclipse.swt.widgets.ProgressBar.setSelection(ProgressBar.java:317) at org.eclipse.recommenders.stacktraces.Demo.run(Demo.java:23) at java.lang.Thread.run(Thread.java:619) 52 + java version + bundle/jar versions + installed extensions + thread dumps + …
  • 53. Automated error reporting is nice, but… How can we support you in writing software? 53
  • 54. Debugging – the old way 54 Exception in thread “Thread-0” org.eclipse.swt.SWTException: Invalid Thread access at org.eclipse.swt.SWT.error(SWT.java:3884) at org.eclipse.swt.SWT.error(SWT.java:3799) at org.eclipse.swt.SWT.error(SWT.java:3770) at org.eclipse.swt.widgets.Widget.error(Widget.java:463) at org.eclipse.swt.widgets.Widget.checkWidget(Widget.java:355) at org.eclipse.swt.widgets.ProgressBar.setSelection(ProgressBar.java:317) at org.eclipse.recommenders.stacktraces.Demo.run(Demo.java:23) at java.lang.Thread.run(Thread.java:619)
  • 55. Getting help – the old way 55
  • 56. But usually you get… 56
  • 57. How about sharing exceptions that occurred at development time? 57 Exception in thread “Thread-0” org.eclipse.swt.SWTException: Invalid Thread access at org.eclipse.swt.SWT.error(SWT.java:3884) at org.eclipse.swt.SWT.error(SWT.java:3799) at org.eclipse.swt.SWT.error(SWT.java:3770) at org.eclipse.swt.widgets.Widget.error(Widget.java:463) at org.eclipse.swt.widgets.Widget.checkWidget(Widget.java:355) at org.eclipse.swt.widgets.ProgressBar.setSelection(ProgressBar.java:317) at org.eclipse.recommenders.stacktraces.Demo.run(Demo.java:23) at java.lang.Thread.run(Thread.java:619)
  • 58. Telling your users what went wrong Found a match! We found a knowledge base entry that matches your stacktrace. The SWTException “Invalid thread access” you experienced is caused by calling an UI widget’s methods from a non-ui thread. See knowledge base entry #341 for further details. A concept yet, no prototype. 58
  • 61. The crowd is here to stay! 61
  • 62. The IDE is your browser - let’s learn to use it as such 62 Debugging instructions Source code Used frameworks Selected proposals Viewed documentation Runtime errors and stacktraces
  • 63. Thank You. marcelbruch marcel.bruch@codetrails.com @marcelbruch
  • 64. Contact Us 64 Codetrails GmbH Robert-Bosch-Str. 7 64293 Darmstadt, Germany www: codetrails.com phone: 06151 / 2767 092 email: info@codetrails.com Dr. Marcel Bruch CEO mobile: 0179 / 1317 721 email: marcel.bruch@codetrails.com