BED-Con - Tools für den täglichen Kampf als Entwickler
1. BED-Con - Berlin
Toolbox für den täglichen Kampf
eines Entwicklers
Patrick Baumgartner – Senior Software Consultant
29. März 2012 Odilo Oehmichen – Senior Software Consultant
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. 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. 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
10. Verschmutzter Code
§ String i = “Peter“!
§ public void doit(String it){...}!
§ Methoden über mehrere Bildschirmseiten
§ Keine Kommentare
§ Zu viele Kommentare
§ ...
10
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. 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. 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. 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
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
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
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. 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
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. 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
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
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. 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. ...und sonst
§ Besuche...
§ Konferenzen
§ Hackathons / Hackergarten
§ Java User Groups
§ Tausch dich aus
§ E-Learning
§ Blogs
§ Parleys (Offline-Client)
§ InfoQ
48
49. Q&A
Patrick Baumgartner, Odilo Oehmichen
patrick.baumgartner [at] swiftmind [dot] com
odilo.oehmichen [at] swiftmind [dot] com
http://www.swiftmind.com http://www.twitter.com/swiftmind
49