BED-Con - Berlin  Toolbox für den täglichen Kampf         eines Entwicklers                   Patrick Baumgartner – Senior...
Speaker Profiles§  Patrick Baumgartner    §    Senior Software Consultant | Partner    §    SpringSource Certified Trai...
Entwickler im Herzen§  Wir haben Spass am Entwicklen§  Sind begeistert, wenn etwas funktioniert§  Wollen Probleme optim...
Aber...Wir kämpfen täglich gegen:§  Legacy Code§  Arbeitsunterbrechungen§  Langweilige, immer wiederkehrende Tasks§  V...
Unsere Toolbox   5
Zeitfresser              6
Pomodoro Technique                                  (c) Staffan Nöteberg - Pomodoro Technique Illus...
Pomodoro Technique§  Ergebnisse     §  Lernen Aktivitäten planen & schätzen     §  Aufzeichnen & verbessern der Aktivit...
Verschmutzter Code                     9
Verschmutzter Code§  String i = “Peter“!§  public void doit(String it){...}!§  Methoden über mehrere Bildschirmseiten§...
Clean Code
Clean Code§  Software Craftsmanship§  Geprägt von Uncle Bob (Robert C. Martin)§  Code Smells    §    Klassen-, Methode...
Projekt Lombok§  Java Library – lombok.jar§  Reduce Boilerplate Code§  Annotationsbasiert     @Getter, @Setter, @ToStri...
Projekt Lombok                 14
Projekt Lombok§  Benötigt Java ≥ 6§  Java Agents hooken in Compile Prozess     javac –cp lombok.jar Person.java§  Eclip...
Test schreiben               Issue riskierenSafer Coding BUGS!
Recap: Unit Testing§    Testet isoliert§    Schnell aufgesetzt§    Unter Einsatz von dynamischen Mocks / Stubs§    Läu...
System Integration§  Moderne Systeme besitzen Schnittstellen zu    externen Komponenten:      SMTP, FTP, LDAP, RDBMS, ......
Integration Testing§  Testet Zusammenspiel einzelner Komponenten Test-Setup Komplexität                                  ...
Integration Testing§    Schnell§    Wiederholbar§    Automatisiert§    Leicht konfigurierbar§    Soll gute Abdeckung ...
Integration Testing§  Annäherung an Produktionsumgebung§  Simulation der Komponenten§  Open Source Frameworks für Embed...
Where‘s the build?!
Works on my machine?!                        23
Jenkins§    Alles was es braucht ist Java§    Gehe zu http://jenkins-ci.org§    Download War-File§    Command-Line jav...
You broke the build!                       25
CI Game§  „You broke the build“     §  Einzahlung in Build-Kasse     §  „<...> Developer of the week“     §  ...§  CI...
Pausen machen                27
Pausen machen§  Das Problem:    §  Wir vergessen oft Pausen zu machen!    §  Braucht Disziplin und ein bisschen Planung...
Your Daily Comic Strip
Muskeln trainieren...                        30
Code Reviews
Rubber Duck Debugging§  Setup   §  Gummiente besorgen   §  Ente vor dem PC platzieren§  Durchführung   §  Code der En...
Gerrit§  Entwickelt von Google für Android§  Basierend auf Git§  Verhält sich wie eine Firewall vor einem Git Repo§  W...
Gerrit Workflow                  34
Wiederkehrende Aufgaben
Redeploy Hell§  Problem     §  Code geschrieben -> Build -> Deploy auf Server     §  Über 15 % der Entwicklungszeit ist...
JRebel§  Integriert sich in JVM§  Richtiges Hotdeployment    §  Hinzufügen von Methoden    §  Ändern von Methodensigna...
Mouse Junkies                38
Shortcuts§  Lösungen    §  Eclipse Mousefeed-Plugin zeigt Shortcuts auf    §  Save-Actions räumt Code auf    §  Cheats...
Fokus
Do not re-invent the wheel§  Fokussierung auf die Businesslogik§  Einsatz von Open Source Libraries im Projekt     §   ...
Guava•  String Operationen•  Functional Programming                            42
Apache Commons – CLI§  Command Line Programm mit Option „-h“§  Programmausgabe                                          ...
Apache CommonsAttributes, BeanUtils, Betwixt, Chain, CLI, Codec,Collections, Compress, Configuration, Daemon,DBCP, DbUtils...
Weiterkommen mit Spaß
Softwerkskammer§  Dach für lokale Zusammenschluss von    Entwicklern die sich austauschen wollen    §  we care    §  we...
Softwerkskammer (Forts.)•  Inhalt:     §  Book Clubs     §  Coding Dojos     §  Lightning Talks     §  One Line of Cod...
...und sonst§  Besuche...     §  Konferenzen     §  Hackathons / Hackergarten     §  Java User Groups§  Tausch dich a...
Q&APatrick Baumgartner, Odilo Oehmichenpatrick.baumgartner [at] swiftmind [dot] comodilo.oehmichen [at] swiftmind [dot] co...
Nächste SlideShare
Wird geladen in …5
×

BED-Con - Tools für den täglichen Kampf als Entwickler

1.413 Aufrufe

Veröffentlicht am

Slides zum Vortrag von Patrick Baumgartner und Odilo Oehmichen an den Berliner Expert Days (29. März 2012)

0 Kommentare
1 Gefällt mir
Statistik
Notizen
  • Als Erste(r) kommentieren

Keine Downloads
Aufrufe
Aufrufe insgesamt
1.413
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
515
Aktionen
Geteilt
0
Downloads
22
Kommentare
0
Gefällt mir
1
Einbettungen 0
Keine Einbettungen

Keine Notizen für die Folie

BED-Con - Tools für den täglichen Kampf als Entwickler

  1. 1. BED-Con - Berlin Toolbox für den täglichen Kampf eines Entwicklers Patrick Baumgartner – Senior Software Consultant29. März 2012 Odilo Oehmichen – Senior Software Consultant
  2. 2. Speaker Profiles§  Patrick Baumgartner §  Senior Software Consultant | Partner §  SpringSource Certified Trainer §  Spring Framework, OSGi & agile Methoden §  Co-Autor von „OSGi für Praktiker“ (Hanser)§  Odilo Oehmichen §  Senior Software Consultant | Partner §  mehr als 10 Jahre Erfahrung im Java-Umfeld §  Spring, Spring MVC, Webflow, Security§  Swiftmind GmbH (http://www.swiftmind.com) §  Enterprise Java, Spring & OSGi Consulting §  Spring & OSGi Workshops/Trainings §  Agile Engineering Practices Workshops 2
  3. 3. Entwickler im Herzen§  Wir haben Spass am Entwicklen§  Sind begeistert, wenn etwas funktioniert§  Wollen Probleme optimal lösen§  Entwerfen Architekturen§  Diskutieren mit anderen Entwicklern§  Unterstützen im Entwicklungsprozess 3
  4. 4. Aber...Wir kämpfen täglich gegen:§  Legacy Code§  Arbeitsunterbrechungen§  Langweilige, immer wiederkehrende Tasks§  Verschiedene Auffassungen von Codequalität§  Langsame Rechner J Spaß am Entwickeln bleibt auf der Strecke 4
  5. 5. Unsere Toolbox 5
  6. 6. Zeitfresser 6
  7. 7. Pomodoro Technique  (c) Staffan Nöteberg - Pomodoro Technique Illustrated  7  
  8. 8. Pomodoro Technique§  Ergebnisse §  Lernen Aktivitäten planen & schätzen §  Aufzeichnen & verbessern der Aktivitäten §  Störungen vermindern & vermeiden§  Tools §  Pomodoro (Eieruhr) §  Focus Buster 8
  9. 9. Verschmutzter Code 9
  10. 10. Verschmutzter Code§  String i = “Peter“!§  public void doit(String it){...}!§  Methoden über mehrere Bildschirmseiten§  Keine Kommentare§  Zu viele Kommentare§  ... 10
  11. 11. Clean Code
  12. 12. Clean Code§  Software Craftsmanship§  Geprägt von Uncle Bob (Robert C. Martin)§  Code Smells §  Klassen-, Methoden-, Variablennamen §  Methodengrösse §  Comments §  Strong cohesion -> Single Responsibility §  … 12
  13. 13. Projekt Lombok§  Java Library – lombok.jar§  Reduce Boilerplate Code§  Annotationsbasiert @Getter, @Setter, @ToString, @Data, @EqualsAndHashCode, ... 13
  14. 14. Projekt Lombok 14
  15. 15. Projekt Lombok§  Benötigt Java ≥ 6§  Java Agents hooken in Compile Prozess javac –cp lombok.jar Person.java§  Eclipse, netbeans, maven Plugins§  Andere Tools: PMD, findbugs, checkstyle, Simian 15
  16. 16. Test schreiben Issue riskierenSafer Coding BUGS!
  17. 17. Recap: Unit Testing§  Testet isoliert§  Schnell aufgesetzt§  Unter Einsatz von dynamischen Mocks / Stubs§  Läuft schnell§  Meist mit JUnit oder TestNG§  Getestet wird nur eine einzelne Unit 17
  18. 18. System Integration§  Moderne Systeme besitzen Schnittstellen zu externen Komponenten: SMTP, FTP, LDAP, RDBMS, ...§  Abhängigkeiten zu Funktionalitäten welche vom Container bereitgestellt werden, wie: DataSource, ConnectionFactory, TransactionManager 18
  19. 19. Integration Testing§  Testet Zusammenspiel einzelner Komponenten Test-Setup Komplexität Laufzeitumgebung Externen Systeme Keine externen Systeme Abhängigkeiten•  Einsatz von Dependency Injection Frameworks erleichtern Testing 19
  20. 20. Integration Testing§  Schnell§  Wiederholbar§  Automatisiert§  Leicht konfigurierbar§  Soll gute Abdeckung von End-to-End Business Usecases bieten Wie kann man effektiv eine Java Anwendung integrationstesten, ohne die komplette Infrastruktur hochzufahren? 20
  21. 21. Integration Testing§  Annäherung an Produktionsumgebung§  Simulation der Komponenten§  Open Source Frameworks für Embedded Testing §  MockFtpServer §  FakeFtp / StubFtpServer §  Dumbster‘s SimpleSmtpServer §  Mailserver §  Jetty §  In-Memory Servlet-Container §  H2 / HSQL / Derby §  In-Memory Datenbank 21
  22. 22. Where‘s the build?!
  23. 23. Works on my machine?! 23
  24. 24. Jenkins§  Alles was es braucht ist Java§  Gehe zu http://jenkins-ci.org§  Download War-File§  Command-Line java -jar jenkins.war§  Plugin-Mechanismus §  Chuck-Norris §  Lava Lampe §  Ampel 24
  25. 25. You broke the build! 25
  26. 26. CI Game§  „You broke the build“ §  Einzahlung in Build-Kasse §  „<...> Developer of the week“ §  ...§  CI Game von Clint Shank §  Reward-System §  Jenkins-Plugin verfügbar 26
  27. 27. Pausen machen 27
  28. 28. Pausen machen§  Das Problem: §  Wir vergessen oft Pausen zu machen! §  Braucht Disziplin und ein bisschen Planung§  Pausen (10-15 min) verbessern die Produktivität§  Augen entspannen, Bewegung, steife Muskeln strecken, mehr Blut- und Sauerstofffluss ins Gehirn, komplexe Probleme entwirren 28
  29. 29. Your Daily Comic Strip
  30. 30. Muskeln trainieren... 30
  31. 31. Code Reviews
  32. 32. Rubber Duck Debugging§  Setup §  Gummiente besorgen §  Ente vor dem PC platzieren§  Durchführung §  Code der Ente erklären§  Resultat Entspricht der Code der Beschreibung?! 32
  33. 33. Gerrit§  Entwickelt von Google für Android§  Basierend auf Git§  Verhält sich wie eine Firewall vor einem Git Repo§  Web-basierendes Review Tool§  SSH & Git Server 33
  34. 34. Gerrit Workflow 34
  35. 35. Wiederkehrende Aufgaben
  36. 36. Redeploy Hell§  Problem §  Code geschrieben -> Build -> Deploy auf Server §  Über 15 % der Entwicklungszeit ist Warten auf Redeploy §  Frißt Nerven, Zeit und Geld§  Lösungen §  Funktionalitäten ausgliedern §  Abhängigkeiten zu Laufzeit-Umgebungen reduzieren §  Unittests §  Tools §  Debugger §  JRebel 36
  37. 37. JRebel§  Integriert sich in JVM§  Richtiges Hotdeployment §  Hinzufügen von Methoden §  Ändern von Methodensignaturen §  Konfigfile Änderung (Spring, Hibernate, JSF, Wicket,…)§  Verbindet sich direkt mit IDE-Workspace§  Unterstützt alle gängigen Appserver§  Nachteil: Kommerziell 37
  38. 38. Mouse Junkies 38
  39. 39. Shortcuts§  Lösungen §  Eclipse Mousefeed-Plugin zeigt Shortcuts auf §  Save-Actions räumt Code auf §  Cheatsheets (für jegliche Tools) 39
  40. 40. Fokus
  41. 41. Do not re-invent the wheel§  Fokussierung auf die Businesslogik§  Einsatz von Open Source Libraries im Projekt §  Bessere Applikations-Architektur §  Source Code von der Community benutzt §  Gut (Unit-)getestet §  Schnelleres Entwickeln mit kleineren Team§  Libraries §  Guava §  Apache Commons §  FluentJava §  Spring 41
  42. 42. Guava•  String Operationen•  Functional Programming 42
  43. 43. Apache Commons – CLI§  Command Line Programm mit Option „-h“§  Programmausgabe 43
  44. 44. Apache CommonsAttributes, BeanUtils, Betwixt, Chain, CLI, Codec,Collections, Compress, Configuration, Daemon,DBCP, DbUtils, Digester, Discovery, EL, Email, Exec,FileUpload, IO, JCI, Jelly, Jexl, JXPath, Lang,Launcher, Logging, Math, Modeler, Net, Pool,Primitives, Proxy, Sanselan, SCXML, Transaction,Validator, VFS 44
  45. 45. Weiterkommen mit Spaß
  46. 46. Softwerkskammer§  Dach für lokale Zusammenschluss von Entwicklern die sich austauschen wollen §  we care §  we practice §  we learn §  we share§  Software Craftsmanship§  Nicht an Sprache gebunden 46
  47. 47. Softwerkskammer (Forts.)•  Inhalt: §  Book Clubs §  Coding Dojos §  Lightning Talks §  One Line of Code §  Code Retreats§  Über den Tellerrand schauen§  Mehr Infos unter www.softwerkskammer.de 47
  48. 48. ...und sonst§  Besuche... §  Konferenzen §  Hackathons / Hackergarten §  Java User Groups§  Tausch dich aus§  E-Learning §  Blogs §  Parleys (Offline-Client) §  InfoQ 48
  49. 49. Q&APatrick Baumgartner, Odilo Oehmichenpatrick.baumgartner [at] swiftmind [dot] comodilo.oehmichen [at] swiftmind [dot] comhttp://www.swiftmind.com http://www.twitter.com/swiftmind 49

×