BED-Con - Tools für den täglichen Kampf als Entwickler
-
Upload
patrick-baumgartner -
Category
Documents
-
view
984 -
download
1
description
Transcript of BED-Con - Tools für den täglichen Kampf als Entwickler
![Page 1: BED-Con - Tools für den täglichen Kampf als Entwickler](https://reader033.fdocument.pub/reader033/viewer/2022052507/55860336d8b42a90638b4659/html5/thumbnails/1.jpg)
Toolbox für den täglichen Kampf
eines Entwicklers
BED-Con - Berlin
Patrick Baumgartner – Senior Software Consultant Odilo Oehmichen – Senior Software Consultant 29. März 2012
![Page 2: BED-Con - Tools für den täglichen Kampf als Entwickler](https://reader033.fdocument.pub/reader033/viewer/2022052507/55860336d8b42a90638b4659/html5/thumbnails/2.jpg)
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
![Page 3: BED-Con - Tools für den täglichen Kampf als Entwickler](https://reader033.fdocument.pub/reader033/viewer/2022052507/55860336d8b42a90638b4659/html5/thumbnails/3.jpg)
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
![Page 4: BED-Con - Tools für den täglichen Kampf als Entwickler](https://reader033.fdocument.pub/reader033/viewer/2022052507/55860336d8b42a90638b4659/html5/thumbnails/4.jpg)
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
![Page 5: BED-Con - Tools für den täglichen Kampf als Entwickler](https://reader033.fdocument.pub/reader033/viewer/2022052507/55860336d8b42a90638b4659/html5/thumbnails/5.jpg)
5
Unsere Toolbox
![Page 6: BED-Con - Tools für den täglichen Kampf als Entwickler](https://reader033.fdocument.pub/reader033/viewer/2022052507/55860336d8b42a90638b4659/html5/thumbnails/6.jpg)
6
Zeitfresser
![Page 7: BED-Con - Tools für den täglichen Kampf als Entwickler](https://reader033.fdocument.pub/reader033/viewer/2022052507/55860336d8b42a90638b4659/html5/thumbnails/7.jpg)
7
Pomodoro Technique
(c) Staffan Nöteberg - Pomodoro Technique Illustrated
![Page 8: BED-Con - Tools für den täglichen Kampf als Entwickler](https://reader033.fdocument.pub/reader033/viewer/2022052507/55860336d8b42a90638b4659/html5/thumbnails/8.jpg)
8
Pomodoro Technique
§ Ergebnisse § Lernen Aktivitäten planen & schätzen § Aufzeichnen & verbessern der Aktivitäten § Störungen vermindern & vermeiden
§ Tools § Pomodoro (Eieruhr) § Focus Buster
![Page 9: BED-Con - Tools für den täglichen Kampf als Entwickler](https://reader033.fdocument.pub/reader033/viewer/2022052507/55860336d8b42a90638b4659/html5/thumbnails/9.jpg)
9
Verschmutzter Code
![Page 10: BED-Con - Tools für den täglichen Kampf als Entwickler](https://reader033.fdocument.pub/reader033/viewer/2022052507/55860336d8b42a90638b4659/html5/thumbnails/10.jpg)
10
Verschmutzter Code
§ String i = “Peter“!
§ public void doit(String it){...}!
§ Methoden über mehrere Bildschirmseiten
§ Keine Kommentare
§ Zu viele Kommentare
§ ...
![Page 11: BED-Con - Tools für den täglichen Kampf als Entwickler](https://reader033.fdocument.pub/reader033/viewer/2022052507/55860336d8b42a90638b4659/html5/thumbnails/11.jpg)
Clean Code
![Page 12: BED-Con - Tools für den täglichen Kampf als Entwickler](https://reader033.fdocument.pub/reader033/viewer/2022052507/55860336d8b42a90638b4659/html5/thumbnails/12.jpg)
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 § …
![Page 13: BED-Con - Tools für den täglichen Kampf als Entwickler](https://reader033.fdocument.pub/reader033/viewer/2022052507/55860336d8b42a90638b4659/html5/thumbnails/13.jpg)
13
Projekt Lombok
§ Java Library – lombok.jar
§ Reduce Boilerplate Code
§ Annotationsbasiert
@Getter, @Setter, @ToString,
@Data, @EqualsAndHashCode, ...
![Page 14: BED-Con - Tools für den täglichen Kampf als Entwickler](https://reader033.fdocument.pub/reader033/viewer/2022052507/55860336d8b42a90638b4659/html5/thumbnails/14.jpg)
14
Projekt Lombok
![Page 15: BED-Con - Tools für den täglichen Kampf als Entwickler](https://reader033.fdocument.pub/reader033/viewer/2022052507/55860336d8b42a90638b4659/html5/thumbnails/15.jpg)
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
![Page 16: BED-Con - Tools für den täglichen Kampf als Entwickler](https://reader033.fdocument.pub/reader033/viewer/2022052507/55860336d8b42a90638b4659/html5/thumbnails/16.jpg)
BUGS!
Issue riskieren
Test schreiben
Safer Coding
![Page 17: BED-Con - Tools für den täglichen Kampf als Entwickler](https://reader033.fdocument.pub/reader033/viewer/2022052507/55860336d8b42a90638b4659/html5/thumbnails/17.jpg)
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
![Page 18: BED-Con - Tools für den täglichen Kampf als Entwickler](https://reader033.fdocument.pub/reader033/viewer/2022052507/55860336d8b42a90638b4659/html5/thumbnails/18.jpg)
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
![Page 19: BED-Con - Tools für den täglichen Kampf als Entwickler](https://reader033.fdocument.pub/reader033/viewer/2022052507/55860336d8b42a90638b4659/html5/thumbnails/19.jpg)
19
Integration Testing
§ Testet Zusammenspiel einzelner Komponenten
• Einsatz von Dependency Injection Frameworks erleichtern Testing
Test-Setup Komplexität
Abhängigkeiten
Keine externen Systeme
Externen Systeme
Laufzeitumgebung
![Page 20: BED-Con - Tools für den täglichen Kampf als Entwickler](https://reader033.fdocument.pub/reader033/viewer/2022052507/55860336d8b42a90638b4659/html5/thumbnails/20.jpg)
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?
![Page 21: BED-Con - Tools für den täglichen Kampf als Entwickler](https://reader033.fdocument.pub/reader033/viewer/2022052507/55860336d8b42a90638b4659/html5/thumbnails/21.jpg)
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
![Page 22: BED-Con - Tools für den täglichen Kampf als Entwickler](https://reader033.fdocument.pub/reader033/viewer/2022052507/55860336d8b42a90638b4659/html5/thumbnails/22.jpg)
Where‘s the build?!
![Page 23: BED-Con - Tools für den täglichen Kampf als Entwickler](https://reader033.fdocument.pub/reader033/viewer/2022052507/55860336d8b42a90638b4659/html5/thumbnails/23.jpg)
23
Works on my machine?!
![Page 24: BED-Con - Tools für den täglichen Kampf als Entwickler](https://reader033.fdocument.pub/reader033/viewer/2022052507/55860336d8b42a90638b4659/html5/thumbnails/24.jpg)
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
![Page 25: BED-Con - Tools für den täglichen Kampf als Entwickler](https://reader033.fdocument.pub/reader033/viewer/2022052507/55860336d8b42a90638b4659/html5/thumbnails/25.jpg)
25
You broke the build!
![Page 26: BED-Con - Tools für den täglichen Kampf als Entwickler](https://reader033.fdocument.pub/reader033/viewer/2022052507/55860336d8b42a90638b4659/html5/thumbnails/26.jpg)
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
![Page 27: BED-Con - Tools für den täglichen Kampf als Entwickler](https://reader033.fdocument.pub/reader033/viewer/2022052507/55860336d8b42a90638b4659/html5/thumbnails/27.jpg)
27
Pausen machen
![Page 28: BED-Con - Tools für den täglichen Kampf als Entwickler](https://reader033.fdocument.pub/reader033/viewer/2022052507/55860336d8b42a90638b4659/html5/thumbnails/28.jpg)
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
![Page 29: BED-Con - Tools für den täglichen Kampf als Entwickler](https://reader033.fdocument.pub/reader033/viewer/2022052507/55860336d8b42a90638b4659/html5/thumbnails/29.jpg)
Your Daily Comic Strip
![Page 30: BED-Con - Tools für den täglichen Kampf als Entwickler](https://reader033.fdocument.pub/reader033/viewer/2022052507/55860336d8b42a90638b4659/html5/thumbnails/30.jpg)
30
Muskeln trainieren...
![Page 31: BED-Con - Tools für den täglichen Kampf als Entwickler](https://reader033.fdocument.pub/reader033/viewer/2022052507/55860336d8b42a90638b4659/html5/thumbnails/31.jpg)
Code Reviews
![Page 32: BED-Con - Tools für den täglichen Kampf als Entwickler](https://reader033.fdocument.pub/reader033/viewer/2022052507/55860336d8b42a90638b4659/html5/thumbnails/32.jpg)
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?!
![Page 33: BED-Con - Tools für den täglichen Kampf als Entwickler](https://reader033.fdocument.pub/reader033/viewer/2022052507/55860336d8b42a90638b4659/html5/thumbnails/33.jpg)
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
![Page 34: BED-Con - Tools für den täglichen Kampf als Entwickler](https://reader033.fdocument.pub/reader033/viewer/2022052507/55860336d8b42a90638b4659/html5/thumbnails/34.jpg)
34
Gerrit Workflow
![Page 35: BED-Con - Tools für den täglichen Kampf als Entwickler](https://reader033.fdocument.pub/reader033/viewer/2022052507/55860336d8b42a90638b4659/html5/thumbnails/35.jpg)
Wiederkehrende Aufgaben
![Page 36: BED-Con - Tools für den täglichen Kampf als Entwickler](https://reader033.fdocument.pub/reader033/viewer/2022052507/55860336d8b42a90638b4659/html5/thumbnails/36.jpg)
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
![Page 37: BED-Con - Tools für den täglichen Kampf als Entwickler](https://reader033.fdocument.pub/reader033/viewer/2022052507/55860336d8b42a90638b4659/html5/thumbnails/37.jpg)
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
![Page 38: BED-Con - Tools für den täglichen Kampf als Entwickler](https://reader033.fdocument.pub/reader033/viewer/2022052507/55860336d8b42a90638b4659/html5/thumbnails/38.jpg)
38
Mouse Junkies
![Page 39: BED-Con - Tools für den täglichen Kampf als Entwickler](https://reader033.fdocument.pub/reader033/viewer/2022052507/55860336d8b42a90638b4659/html5/thumbnails/39.jpg)
39
Shortcuts
§ Lösungen § Eclipse Mousefeed-Plugin zeigt Shortcuts auf
§ Save-Actions räumt Code auf § Cheatsheets (für jegliche Tools)
![Page 40: BED-Con - Tools für den täglichen Kampf als Entwickler](https://reader033.fdocument.pub/reader033/viewer/2022052507/55860336d8b42a90638b4659/html5/thumbnails/40.jpg)
Fokus
![Page 41: BED-Con - Tools für den täglichen Kampf als Entwickler](https://reader033.fdocument.pub/reader033/viewer/2022052507/55860336d8b42a90638b4659/html5/thumbnails/41.jpg)
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
![Page 42: BED-Con - Tools für den täglichen Kampf als Entwickler](https://reader033.fdocument.pub/reader033/viewer/2022052507/55860336d8b42a90638b4659/html5/thumbnails/42.jpg)
42
Guava
• String Operationen
• Functional Programming
![Page 43: BED-Con - Tools für den täglichen Kampf als Entwickler](https://reader033.fdocument.pub/reader033/viewer/2022052507/55860336d8b42a90638b4659/html5/thumbnails/43.jpg)
43
Apache Commons – CLI
§ Command Line Programm mit Option „-h“
§ Programmausgabe
![Page 44: BED-Con - Tools für den täglichen Kampf als Entwickler](https://reader033.fdocument.pub/reader033/viewer/2022052507/55860336d8b42a90638b4659/html5/thumbnails/44.jpg)
44
Apache Commons
Attributes, 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
![Page 45: BED-Con - Tools für den täglichen Kampf als Entwickler](https://reader033.fdocument.pub/reader033/viewer/2022052507/55860336d8b42a90638b4659/html5/thumbnails/45.jpg)
Weiterkommen mit Spaß
![Page 46: BED-Con - Tools für den täglichen Kampf als Entwickler](https://reader033.fdocument.pub/reader033/viewer/2022052507/55860336d8b42a90638b4659/html5/thumbnails/46.jpg)
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
![Page 47: BED-Con - Tools für den täglichen Kampf als Entwickler](https://reader033.fdocument.pub/reader033/viewer/2022052507/55860336d8b42a90638b4659/html5/thumbnails/47.jpg)
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
![Page 48: BED-Con - Tools für den täglichen Kampf als Entwickler](https://reader033.fdocument.pub/reader033/viewer/2022052507/55860336d8b42a90638b4659/html5/thumbnails/48.jpg)
48
...und sonst
§ Besuche... § Konferenzen § Hackathons / Hackergarten § Java User Groups
§ Tausch dich aus § E-Learning
§ Blogs § Parleys (Offline-Client) § InfoQ
![Page 49: BED-Con - Tools für den täglichen Kampf als Entwickler](https://reader033.fdocument.pub/reader033/viewer/2022052507/55860336d8b42a90638b4659/html5/thumbnails/49.jpg)
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