SlideShare a Scribd company logo
1 of 49
Download to read offline
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
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
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
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
Unsere Toolbox   5
Zeitfresser
              6
Pomodoro Technique
        




                          (c) Staffan Nöteberg - Pomodoro Technique Illustrated
                                                                                 


                                                                                         7   
                                    
Pomodoro Technique

§  Ergebnisse
     §  Lernen Aktivitäten planen & schätzen
     §  Aufzeichnen & verbessern der Aktivitäten
     §  Störungen vermindern & vermeiden

§  Tools
     §  Pomodoro (Eieruhr)
     §  Focus Buster




                                                    8
Verschmutzter Code

                     9
Verschmutzter Code

§  String i = “Peter“!

§  public void doit(String it){...}!

§  Methoden über mehrere Bildschirmseiten

§  Keine Kommentare

§  Zu viele Kommentare

§  ...



                                             10
Clean Code
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
Projekt Lombok

§  Java Library – lombok.jar

§  Reduce Boilerplate Code

§  Annotationsbasiert

     @Getter, @Setter, @ToString,

     @Data, @EqualsAndHashCode, ...




                                      13
Projekt Lombok




                 14
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
Test schreiben
               Issue riskieren




Safer Coding

 BUGS!
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
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
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
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
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
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 java -jar jenkins.war

§  Plugin-Mechanismus
        §  Chuck-Norris
        §  Lava Lampe
        §  Ampel



                                           24
You broke the build!




                       25
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
Pausen machen




                27
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
Your Daily Comic Strip
Muskeln trainieren...




                        30
Code Reviews
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
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
Gerrit Workflow




                  34
Wiederkehrende Aufgaben
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
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
Mouse Junkies
                38
Shortcuts
§  Lösungen
    §  Eclipse Mousefeed-Plugin zeigt Shortcuts auf




    §  Save-Actions räumt Code auf
    §  Cheatsheets (für jegliche Tools)
                                                       39
Fokus
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
Guava

•  String Operationen




•  Functional Programming




                            42
Apache Commons – CLI

§  Command Line Programm mit Option „-h“




§  Programmausgabe



                                            43
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


                                                     44
Weiterkommen mit Spaß
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
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
...und sonst
§  Besuche...
     §  Konferenzen
     §  Hackathons / Hackergarten
     §  Java User Groups
§  Tausch dich aus
§  E-Learning
     §  Blogs
     §  Parleys (Offline-Client)
     §  InfoQ




                                     48
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

More Related Content

What's hot

WebLogic im Docker Container
WebLogic im Docker ContainerWebLogic im Docker Container
WebLogic im Docker ContainerAndreas Koop
 
Javaland 2016 - Flyway vs. LiquiBase - Battle der Datenbankmigrationstools
Javaland 2016 - Flyway vs. LiquiBase - Battle der DatenbankmigrationstoolsJavaland 2016 - Flyway vs. LiquiBase - Battle der Datenbankmigrationstools
Javaland 2016 - Flyway vs. LiquiBase - Battle der DatenbankmigrationstoolsStephan Kaps
 
Build Patterns - Patterns und Best Practices für den Build Prozess
Build Patterns - Patterns und Best Practices für den Build ProzessBuild Patterns - Patterns und Best Practices für den Build Prozess
Build Patterns - Patterns und Best Practices für den Build ProzessRalf Abramowitsch
 
Migration vom ZF1 zum ZF2 von einfach bis fies (IPC Spring 2013, Berlin)
Migration vom ZF1 zum ZF2 von einfach bis fies (IPC Spring 2013, Berlin)Migration vom ZF1 zum ZF2 von einfach bis fies (IPC Spring 2013, Berlin)
Migration vom ZF1 zum ZF2 von einfach bis fies (IPC Spring 2013, Berlin)Ralf Eggert
 
Wie skaliert man Software as a Service Applikationen in der Windows Azure Cloud
Wie skaliert man Software as a Service Applikationen in der Windows Azure CloudWie skaliert man Software as a Service Applikationen in der Windows Azure Cloud
Wie skaliert man Software as a Service Applikationen in der Windows Azure CloudPatric Boscolo
 
Kontinuierliches (Nicht)-Funktionales Testen von Microservices auf K8s
Kontinuierliches (Nicht)-Funktionales Testen von Microservices auf K8sKontinuierliches (Nicht)-Funktionales Testen von Microservices auf K8s
Kontinuierliches (Nicht)-Funktionales Testen von Microservices auf K8sQAware GmbH
 
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer Infrastruktur
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer InfrastrukturContinuous Delivery für Cloud-native Anwendungen auf Cloud-nativer Infrastruktur
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer InfrastrukturQAware GmbH
 
Punkt.de – Layout-Testing: was geht, was bringt´s, wer braucht´s?
Punkt.de – Layout-Testing: was geht, was bringt´s, wer braucht´s?Punkt.de – Layout-Testing: was geht, was bringt´s, wer braucht´s?
Punkt.de – Layout-Testing: was geht, was bringt´s, wer braucht´s?punkt.de GmbH
 
EntwicklerCamp 2014 - DOTS reloaded
EntwicklerCamp 2014 - DOTS reloadedEntwicklerCamp 2014 - DOTS reloaded
EntwicklerCamp 2014 - DOTS reloadedRené Winkelmeyer
 
DevOps der Triple-E Klasse - Eclipse DemoCamp
DevOps der Triple-E Klasse - Eclipse DemoCampDevOps der Triple-E Klasse - Eclipse DemoCamp
DevOps der Triple-E Klasse - Eclipse DemoCampWerner Keil
 
Docker und Kubernetes Patterns & Anti-Patterns
Docker und Kubernetes Patterns & Anti-PatternsDocker und Kubernetes Patterns & Anti-Patterns
Docker und Kubernetes Patterns & Anti-PatternsQAware GmbH
 
Automatischer Build mit Maven - OPITZ CONSULTING - Stefan Scheidt
Automatischer Build mit Maven - OPITZ CONSULTING - Stefan ScheidtAutomatischer Build mit Maven - OPITZ CONSULTING - Stefan Scheidt
Automatischer Build mit Maven - OPITZ CONSULTING - Stefan ScheidtOPITZ CONSULTING Deutschland
 
Gameduell Glassfish Migration
Gameduell Glassfish MigrationGameduell Glassfish Migration
Gameduell Glassfish Migrationdehms
 
Kaps - Es muss nicht immer Kubernetes sein
Kaps - Es muss nicht immer Kubernetes seinKaps - Es muss nicht immer Kubernetes sein
Kaps - Es muss nicht immer Kubernetes seinStephan Kaps
 

What's hot (20)

WebLogic im Docker Container
WebLogic im Docker ContainerWebLogic im Docker Container
WebLogic im Docker Container
 
Jenkins Acceleration
Jenkins AccelerationJenkins Acceleration
Jenkins Acceleration
 
WebLogic im Docker Container
WebLogic im Docker ContainerWebLogic im Docker Container
WebLogic im Docker Container
 
Javaland 2016 - Flyway vs. LiquiBase - Battle der Datenbankmigrationstools
Javaland 2016 - Flyway vs. LiquiBase - Battle der DatenbankmigrationstoolsJavaland 2016 - Flyway vs. LiquiBase - Battle der Datenbankmigrationstools
Javaland 2016 - Flyway vs. LiquiBase - Battle der Datenbankmigrationstools
 
Build Patterns - Patterns und Best Practices für den Build Prozess
Build Patterns - Patterns und Best Practices für den Build ProzessBuild Patterns - Patterns und Best Practices für den Build Prozess
Build Patterns - Patterns und Best Practices für den Build Prozess
 
Ant im Detail
Ant im DetailAnt im Detail
Ant im Detail
 
Migration vom ZF1 zum ZF2 von einfach bis fies (IPC Spring 2013, Berlin)
Migration vom ZF1 zum ZF2 von einfach bis fies (IPC Spring 2013, Berlin)Migration vom ZF1 zum ZF2 von einfach bis fies (IPC Spring 2013, Berlin)
Migration vom ZF1 zum ZF2 von einfach bis fies (IPC Spring 2013, Berlin)
 
Wie skaliert man Software as a Service Applikationen in der Windows Azure Cloud
Wie skaliert man Software as a Service Applikationen in der Windows Azure CloudWie skaliert man Software as a Service Applikationen in der Windows Azure Cloud
Wie skaliert man Software as a Service Applikationen in der Windows Azure Cloud
 
Kontinuierliches (Nicht)-Funktionales Testen von Microservices auf K8s
Kontinuierliches (Nicht)-Funktionales Testen von Microservices auf K8sKontinuierliches (Nicht)-Funktionales Testen von Microservices auf K8s
Kontinuierliches (Nicht)-Funktionales Testen von Microservices auf K8s
 
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer Infrastruktur
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer InfrastrukturContinuous Delivery für Cloud-native Anwendungen auf Cloud-nativer Infrastruktur
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer Infrastruktur
 
Punkt.de – Layout-Testing: was geht, was bringt´s, wer braucht´s?
Punkt.de – Layout-Testing: was geht, was bringt´s, wer braucht´s?Punkt.de – Layout-Testing: was geht, was bringt´s, wer braucht´s?
Punkt.de – Layout-Testing: was geht, was bringt´s, wer braucht´s?
 
Dockerize It - Mit apex in die amazon cloud
Dockerize It - Mit apex in die amazon cloudDockerize It - Mit apex in die amazon cloud
Dockerize It - Mit apex in die amazon cloud
 
EntwicklerCamp 2014 - DOTS reloaded
EntwicklerCamp 2014 - DOTS reloadedEntwicklerCamp 2014 - DOTS reloaded
EntwicklerCamp 2014 - DOTS reloaded
 
DevOps der Triple-E Klasse - Eclipse DemoCamp
DevOps der Triple-E Klasse - Eclipse DemoCampDevOps der Triple-E Klasse - Eclipse DemoCamp
DevOps der Triple-E Klasse - Eclipse DemoCamp
 
Arquillian
ArquillianArquillian
Arquillian
 
Docker und Kubernetes Patterns & Anti-Patterns
Docker und Kubernetes Patterns & Anti-PatternsDocker und Kubernetes Patterns & Anti-Patterns
Docker und Kubernetes Patterns & Anti-Patterns
 
Automatischer Build mit Maven - OPITZ CONSULTING - Stefan Scheidt
Automatischer Build mit Maven - OPITZ CONSULTING - Stefan ScheidtAutomatischer Build mit Maven - OPITZ CONSULTING - Stefan Scheidt
Automatischer Build mit Maven - OPITZ CONSULTING - Stefan Scheidt
 
Gameduell Glassfish Migration
Gameduell Glassfish MigrationGameduell Glassfish Migration
Gameduell Glassfish Migration
 
Einführung Maven
Einführung MavenEinführung Maven
Einführung Maven
 
Kaps - Es muss nicht immer Kubernetes sein
Kaps - Es muss nicht immer Kubernetes seinKaps - Es muss nicht immer Kubernetes sein
Kaps - Es muss nicht immer Kubernetes sein
 

Viewers also liked

Seminars Zwart
Seminars ZwartSeminars Zwart
Seminars ZwartFRALI
 
Trainingen Zwart
Trainingen ZwartTrainingen Zwart
Trainingen ZwartFRALI
 
Enzyklopädie der Images
Enzyklopädie der ImagesEnzyklopädie der Images
Enzyklopädie der ImagesJeannette Gusko
 
Campaign Bootcamp auf der Socialbar Berlin
Campaign Bootcamp auf der Socialbar BerlinCampaign Bootcamp auf der Socialbar Berlin
Campaign Bootcamp auf der Socialbar BerlinJeannette Gusko
 
Social Media Marketing für Unternehmer und Dienstleister
Social Media Marketing für Unternehmer und DienstleisterSocial Media Marketing für Unternehmer und Dienstleister
Social Media Marketing für Unternehmer und DienstleisterJeannette Gusko
 
Infos Zum Thema Reifegradentwicklung V1 1
Infos Zum Thema Reifegradentwicklung V1 1Infos Zum Thema Reifegradentwicklung V1 1
Infos Zum Thema Reifegradentwicklung V1 1brox IT Solutions GmbH
 
Storytelling in Investor Relations
Storytelling in Investor RelationsStorytelling in Investor Relations
Storytelling in Investor RelationsJeannette Gusko
 
Guttation - Aktivitäten in Sachen Poncho und C0
Guttation - Aktivitäten in Sachen Poncho und C0Guttation - Aktivitäten in Sachen Poncho und C0
Guttation - Aktivitäten in Sachen Poncho und C0MacWlem S
 
Cahier des-charges-pour-votre-site-internet
Cahier des-charges-pour-votre-site-internetCahier des-charges-pour-votre-site-internet
Cahier des-charges-pour-votre-site-internetLoukmane ABOUDOU BANOUFE
 
La Recommandation Personnalisée - Musicovery par Vincent Castaignet
La Recommandation Personnalisée - Musicovery par Vincent CastaignetLa Recommandation Personnalisée - Musicovery par Vincent Castaignet
La Recommandation Personnalisée - Musicovery par Vincent CastaignetLabo de l'édition
 
Présentation du métier
Présentation du métierPrésentation du métier
Présentation du métierolivierotton
 

Viewers also liked (20)

Seminars Zwart
Seminars ZwartSeminars Zwart
Seminars Zwart
 
SIC
SICSIC
SIC
 
Trainingen Zwart
Trainingen ZwartTrainingen Zwart
Trainingen Zwart
 
Enzyklopädie der Images
Enzyklopädie der ImagesEnzyklopädie der Images
Enzyklopädie der Images
 
Eccenca Einstieg Kurz
Eccenca Einstieg KurzEccenca Einstieg Kurz
Eccenca Einstieg Kurz
 
Bremen Kennziffern Kundenbefragung
Bremen Kennziffern KundenbefragungBremen Kennziffern Kundenbefragung
Bremen Kennziffern Kundenbefragung
 
Fliegen
FliegenFliegen
Fliegen
 
Vortrag Bremen Google R Vorkastner
Vortrag Bremen Google R VorkastnerVortrag Bremen Google R Vorkastner
Vortrag Bremen Google R Vorkastner
 
Campaign Bootcamp auf der Socialbar Berlin
Campaign Bootcamp auf der Socialbar BerlinCampaign Bootcamp auf der Socialbar Berlin
Campaign Bootcamp auf der Socialbar Berlin
 
Social Media Marketing für Unternehmer und Dienstleister
Social Media Marketing für Unternehmer und DienstleisterSocial Media Marketing für Unternehmer und Dienstleister
Social Media Marketing für Unternehmer und Dienstleister
 
Milieumarketing VHS
Milieumarketing VHSMilieumarketing VHS
Milieumarketing VHS
 
Patufet
PatufetPatufet
Patufet
 
Stelldirvor
StelldirvorStelldirvor
Stelldirvor
 
Infos Zum Thema Reifegradentwicklung V1 1
Infos Zum Thema Reifegradentwicklung V1 1Infos Zum Thema Reifegradentwicklung V1 1
Infos Zum Thema Reifegradentwicklung V1 1
 
Storytelling in Investor Relations
Storytelling in Investor RelationsStorytelling in Investor Relations
Storytelling in Investor Relations
 
Guttation - Aktivitäten in Sachen Poncho und C0
Guttation - Aktivitäten in Sachen Poncho und C0Guttation - Aktivitäten in Sachen Poncho und C0
Guttation - Aktivitäten in Sachen Poncho und C0
 
Cahier des-charges-pour-votre-site-internet
Cahier des-charges-pour-votre-site-internetCahier des-charges-pour-votre-site-internet
Cahier des-charges-pour-votre-site-internet
 
Aimee les enfants
Aimee les enfantsAimee les enfants
Aimee les enfants
 
La Recommandation Personnalisée - Musicovery par Vincent Castaignet
La Recommandation Personnalisée - Musicovery par Vincent CastaignetLa Recommandation Personnalisée - Musicovery par Vincent Castaignet
La Recommandation Personnalisée - Musicovery par Vincent Castaignet
 
Présentation du métier
Présentation du métierPrésentation du métier
Présentation du métier
 

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

JFS 2011 - Top 10 der Tools & Methoden - Baumgartner, Oehmichen
JFS 2011 - Top 10 der Tools & Methoden - Baumgartner, OehmichenJFS 2011 - Top 10 der Tools & Methoden - Baumgartner, Oehmichen
JFS 2011 - Top 10 der Tools & Methoden - Baumgartner, OehmichenOdilo Oehmichen
 
JFS 2011 - Top 10 Tools & Methoden - Baumgartner, Oehmichen
JFS 2011 - Top 10 Tools & Methoden - Baumgartner, OehmichenJFS 2011 - Top 10 Tools & Methoden - Baumgartner, Oehmichen
JFS 2011 - Top 10 Tools & Methoden - Baumgartner, OehmichenPatrick Baumgartner
 
JavaScript für Java-Entwickler W-JAX 2013
JavaScript für Java-Entwickler W-JAX 2013JavaScript für Java-Entwickler W-JAX 2013
JavaScript für Java-Entwickler W-JAX 2013Oliver Zeigermann
 
Einführung in Puppet und Vagrant
Einführung in Puppet und VagrantEinführung in Puppet und Vagrant
Einführung in Puppet und Vagrants0enke
 
JAX 2015 - Continuous Integration mit Java & Javascript
JAX 2015 - Continuous Integration mit Java & JavascriptJAX 2015 - Continuous Integration mit Java & Javascript
JAX 2015 - Continuous Integration mit Java & Javascriptdzuvic
 
Entwicklung mit Chef und Vagrant - PHPUG HH
Entwicklung mit Chef und Vagrant - PHPUG HHEntwicklung mit Chef und Vagrant - PHPUG HH
Entwicklung mit Chef und Vagrant - PHPUG HHFlorian Holzhauer
 
Softwarequalitätssicherung mit Continuous Integration Tools
Softwarequalitätssicherung mit Continuous Integration ToolsSoftwarequalitätssicherung mit Continuous Integration Tools
Softwarequalitätssicherung mit Continuous Integration ToolsGFU Cyrus AG
 
Day CQ 5.3 WCM - Was ist neu
Day CQ 5.3 WCM - Was ist neuDay CQ 5.3 WCM - Was ist neu
Day CQ 5.3 WCM - Was ist neuCédric Hüsler
 
GitLab: CI-Pipelines | PHP Usergroup Hamburg 20.03.2018
GitLab: CI-Pipelines | PHP Usergroup Hamburg 20.03.2018GitLab: CI-Pipelines | PHP Usergroup Hamburg 20.03.2018
GitLab: CI-Pipelines | PHP Usergroup Hamburg 20.03.2018Christian Mücke
 
SNoUG 2015 - Vaadin - XPages 2.0?
SNoUG 2015 - Vaadin - XPages 2.0?SNoUG 2015 - Vaadin - XPages 2.0?
SNoUG 2015 - Vaadin - XPages 2.0?René Winkelmeyer
 
Integration von Security-Checks in die CI-Pipeline
Integration von Security-Checks in die CI-PipelineIntegration von Security-Checks in die CI-Pipeline
Integration von Security-Checks in die CI-PipelineOPEN KNOWLEDGE GmbH
 
bccon-2014 adm01 tipps-und-skripts-aus-dem-leben-eines-ibm-connections-admins
bccon-2014 adm01 tipps-und-skripts-aus-dem-leben-eines-ibm-connections-adminsbccon-2014 adm01 tipps-und-skripts-aus-dem-leben-eines-ibm-connections-admins
bccon-2014 adm01 tipps-und-skripts-aus-dem-leben-eines-ibm-connections-adminsICS User Group
 
Tipps und Skripts aus dem Leben eines Connections Admins
Tipps und Skripts aus dem Leben eines Connections AdminsTipps und Skripts aus dem Leben eines Connections Admins
Tipps und Skripts aus dem Leben eines Connections AdminsKlaus Bild
 
Continuous Integration für PHP
Continuous Integration für PHPContinuous Integration für PHP
Continuous Integration für PHPSebastian Bauer
 
Docker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbH
Docker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbHDocker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbH
Docker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbHagilemethoden
 
Unit Tests für Totalverweigerer
Unit Tests für TotalverweigererUnit Tests für Totalverweigerer
Unit Tests für TotalverweigererPeter Hauke
 
Der Status Quo des Chaos Engineerings
Der Status Quo des Chaos EngineeringsDer Status Quo des Chaos Engineerings
Der Status Quo des Chaos EngineeringsQAware GmbH
 
Qualitätssicherung in Webprojekten
Qualitätssicherung in WebprojektenQualitätssicherung in Webprojekten
Qualitätssicherung in WebprojektenSebastian Springer
 

Similar to BED-Con - Tools für den täglichen Kampf als Entwickler (20)

JFS 2011 - Top 10 der Tools & Methoden - Baumgartner, Oehmichen
JFS 2011 - Top 10 der Tools & Methoden - Baumgartner, OehmichenJFS 2011 - Top 10 der Tools & Methoden - Baumgartner, Oehmichen
JFS 2011 - Top 10 der Tools & Methoden - Baumgartner, Oehmichen
 
JFS 2011 - Top 10 Tools & Methoden - Baumgartner, Oehmichen
JFS 2011 - Top 10 Tools & Methoden - Baumgartner, OehmichenJFS 2011 - Top 10 Tools & Methoden - Baumgartner, Oehmichen
JFS 2011 - Top 10 Tools & Methoden - Baumgartner, Oehmichen
 
JavaScript für Java-Entwickler W-JAX 2013
JavaScript für Java-Entwickler W-JAX 2013JavaScript für Java-Entwickler W-JAX 2013
JavaScript für Java-Entwickler W-JAX 2013
 
Einführung in Puppet und Vagrant
Einführung in Puppet und VagrantEinführung in Puppet und Vagrant
Einführung in Puppet und Vagrant
 
JAX 2015 - Continuous Integration mit Java & Javascript
JAX 2015 - Continuous Integration mit Java & JavascriptJAX 2015 - Continuous Integration mit Java & Javascript
JAX 2015 - Continuous Integration mit Java & Javascript
 
Entwicklung mit Chef und Vagrant - PHPUG HH
Entwicklung mit Chef und Vagrant - PHPUG HHEntwicklung mit Chef und Vagrant - PHPUG HH
Entwicklung mit Chef und Vagrant - PHPUG HH
 
Softwarequalitätssicherung mit Continuous Integration Tools
Softwarequalitätssicherung mit Continuous Integration ToolsSoftwarequalitätssicherung mit Continuous Integration Tools
Softwarequalitätssicherung mit Continuous Integration Tools
 
Day CQ 5.3 WCM - Was ist neu
Day CQ 5.3 WCM - Was ist neuDay CQ 5.3 WCM - Was ist neu
Day CQ 5.3 WCM - Was ist neu
 
GitLab: CI-Pipelines | PHP Usergroup Hamburg 20.03.2018
GitLab: CI-Pipelines | PHP Usergroup Hamburg 20.03.2018GitLab: CI-Pipelines | PHP Usergroup Hamburg 20.03.2018
GitLab: CI-Pipelines | PHP Usergroup Hamburg 20.03.2018
 
SNoUG 2015 - Vaadin - XPages 2.0?
SNoUG 2015 - Vaadin - XPages 2.0?SNoUG 2015 - Vaadin - XPages 2.0?
SNoUG 2015 - Vaadin - XPages 2.0?
 
Integration von Security-Checks in die CI-Pipeline
Integration von Security-Checks in die CI-PipelineIntegration von Security-Checks in die CI-Pipeline
Integration von Security-Checks in die CI-Pipeline
 
bccon-2014 adm01 tipps-und-skripts-aus-dem-leben-eines-ibm-connections-admins
bccon-2014 adm01 tipps-und-skripts-aus-dem-leben-eines-ibm-connections-adminsbccon-2014 adm01 tipps-und-skripts-aus-dem-leben-eines-ibm-connections-admins
bccon-2014 adm01 tipps-und-skripts-aus-dem-leben-eines-ibm-connections-admins
 
Tipps und Skripts aus dem Leben eines Connections Admins
Tipps und Skripts aus dem Leben eines Connections AdminsTipps und Skripts aus dem Leben eines Connections Admins
Tipps und Skripts aus dem Leben eines Connections Admins
 
Continuous Integration für PHP
Continuous Integration für PHPContinuous Integration für PHP
Continuous Integration für PHP
 
Docker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbH
Docker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbHDocker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbH
Docker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbH
 
Codeception VisualCeption
Codeception VisualCeptionCodeception VisualCeption
Codeception VisualCeption
 
objectiF extrem
objectiF extremobjectiF extrem
objectiF extrem
 
Unit Tests für Totalverweigerer
Unit Tests für TotalverweigererUnit Tests für Totalverweigerer
Unit Tests für Totalverweigerer
 
Der Status Quo des Chaos Engineerings
Der Status Quo des Chaos EngineeringsDer Status Quo des Chaos Engineerings
Der Status Quo des Chaos Engineerings
 
Qualitätssicherung in Webprojekten
Qualitätssicherung in WebprojektenQualitätssicherung in Webprojekten
Qualitätssicherung in Webprojekten
 

More from Patrick Baumgartner

Neo4j Introduction (for Techies)
Neo4j Introduction (for Techies)Neo4j Introduction (for Techies)
Neo4j Introduction (for Techies)Patrick Baumgartner
 
No Sql in Enterprise Java Applications
No Sql in Enterprise Java ApplicationsNo Sql in Enterprise Java Applications
No Sql in Enterprise Java ApplicationsPatrick Baumgartner
 
Daten natuerlich modellieren und verarbeiten mit Neo4j
Daten natuerlich modellieren und verarbeiten mit Neo4jDaten natuerlich modellieren und verarbeiten mit Neo4j
Daten natuerlich modellieren und verarbeiten mit Neo4jPatrick Baumgartner
 
How to use NoSQL in Enterprise Java Applications - NoSQL Roadshow Basel
How to use NoSQL in Enterprise Java Applications - NoSQL Roadshow BaselHow to use NoSQL in Enterprise Java Applications - NoSQL Roadshow Basel
How to use NoSQL in Enterprise Java Applications - NoSQL Roadshow BaselPatrick Baumgartner
 
How to use NoSQL in Enterprise Java Applications - NoSQL Roadshow Zurich
How to use NoSQL in Enterprise Java Applications - NoSQL Roadshow ZurichHow to use NoSQL in Enterprise Java Applications - NoSQL Roadshow Zurich
How to use NoSQL in Enterprise Java Applications - NoSQL Roadshow ZurichPatrick Baumgartner
 
OSGi für Praktiker - Web Applikationen und verteilte Systeme mit OSGi
OSGi für Praktiker - Web Applikationen und verteilte Systeme mit OSGiOSGi für Praktiker - Web Applikationen und verteilte Systeme mit OSGi
OSGi für Praktiker - Web Applikationen und verteilte Systeme mit OSGiPatrick Baumgartner
 
Pax – Tools für den OSGi Alltag
Pax – Tools für den OSGi AlltagPax – Tools für den OSGi Alltag
Pax – Tools für den OSGi AlltagPatrick Baumgartner
 

More from Patrick Baumgartner (10)

Customer is king
Customer is kingCustomer is king
Customer is king
 
Neo4j Introduction (for Techies)
Neo4j Introduction (for Techies)Neo4j Introduction (for Techies)
Neo4j Introduction (for Techies)
 
No Sql in Enterprise Java Applications
No Sql in Enterprise Java ApplicationsNo Sql in Enterprise Java Applications
No Sql in Enterprise Java Applications
 
Daten natuerlich modellieren und verarbeiten mit Neo4j
Daten natuerlich modellieren und verarbeiten mit Neo4jDaten natuerlich modellieren und verarbeiten mit Neo4j
Daten natuerlich modellieren und verarbeiten mit Neo4j
 
How to use NoSQL in Enterprise Java Applications - NoSQL Roadshow Basel
How to use NoSQL in Enterprise Java Applications - NoSQL Roadshow BaselHow to use NoSQL in Enterprise Java Applications - NoSQL Roadshow Basel
How to use NoSQL in Enterprise Java Applications - NoSQL Roadshow Basel
 
How to use NoSQL in Enterprise Java Applications - NoSQL Roadshow Zurich
How to use NoSQL in Enterprise Java Applications - NoSQL Roadshow ZurichHow to use NoSQL in Enterprise Java Applications - NoSQL Roadshow Zurich
How to use NoSQL in Enterprise Java Applications - NoSQL Roadshow Zurich
 
OSGi für Praktiker - Web Applikationen und verteilte Systeme mit OSGi
OSGi für Praktiker - Web Applikationen und verteilte Systeme mit OSGiOSGi für Praktiker - Web Applikationen und verteilte Systeme mit OSGi
OSGi für Praktiker - Web Applikationen und verteilte Systeme mit OSGi
 
Pax – Tools für den OSGi Alltag
Pax – Tools für den OSGi AlltagPax – Tools für den OSGi Alltag
Pax – Tools für den OSGi Alltag
 
OSGi with the Spring Framework
OSGi with the Spring FrameworkOSGi with the Spring Framework
OSGi with the Spring Framework
 
Whats New In Spring 3.0 ?
Whats New In Spring 3.0 ?Whats New In Spring 3.0 ?
Whats New In Spring 3.0 ?
 

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
  • 7. Pomodoro Technique  (c) Staffan Nöteberg - Pomodoro Technique Illustrated  7   
  • 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
  • 10. Verschmutzter Code §  String i = “Peter“! §  public void doit(String it){...}! §  Methoden über mehrere Bildschirmseiten §  Keine Kommentare §  Zu viele Kommentare §  ... 10
  • 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. Projekt Lombok §  Java Library – lombok.jar §  Reduce Boilerplate Code §  Annotationsbasiert @Getter, @Setter, @ToString, @Data, @EqualsAndHashCode, ... 13
  • 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. Test schreiben Issue riskieren Safer Coding BUGS!
  • 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
  • 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
  • 23. Works on my machine?! 23
  • 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. You broke the build! 25
  • 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
  • 39. Shortcuts §  Lösungen §  Eclipse Mousefeed-Plugin zeigt Shortcuts auf §  Save-Actions räumt Code auf §  Cheatsheets (für jegliche Tools) 39
  • 40. Fokus
  • 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. Guava •  String Operationen •  Functional Programming 42
  • 43. Apache Commons – CLI §  Command Line Programm mit Option „-h“ §  Programmausgabe 43
  • 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 44
  • 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