Speaker

Georg Berky

Georg Berky

Developer

Developer

Dortmund, Germany

I'm a programmer, mostly in JVM languages like Java, Groovy, Kotlin or Clojure.

Programming is my craft and passion but that also includes topics like build and deployment automation, CLI scripting and agility on my team.

For some years I have been co-organizing two Software Crafting communities in Germany, one in Düsseldorf, one in Dortmund.

I love to pamper my Bonsai, practice Aikido or play the trumpet in my free time.

Ich bin leidenschaftlicher Programmier und hauptsächlich in JVM-Sprachen, z.B. Java, Groovy oder Clojure unterwegs.

Programmieren ist mein Handwerk, aber dazu gehören auch Themen wie die Automatisierung von Builds oder Deployments und Scripting in der Shell und Agilität im Team.

Seit einigen Jahren bin ich Co-Organisator der Software Craftsmanship Communities im Ruhrgebiet und in Düsseldorf

Wenn ich mal nicht programmiere, pflege ich meine Bonsai, praktiziere Aikido oder spiele Trompete.

Area of Expertise

  • Information & Communications Technology

Topics

  • java
  • groovy
  • Refactoring
  • Software Crafting
  • Software Craftsmanship
  • Clean Code
  • Code Quality
  • Continuous Integration
  • Continuous Delivery
  • Softwarequalität

Sessions

Green patches in your brownfield en de

"Key lesson is, you can always (read: most of the time) do greenfield in a legacy code base."
-- Michael Feathers

Legacy code is not an easy setting to work in. It will unnerve you and drain a lot of your energy just to get the smallest feature to production. Things have gotten a bit better with modern IDEs and their refactoring tools. They make our lives a bit easier when working in brownfield projects but there are refactoring techniques the IDE cannot perform for us in the semi-automatic fashion we have become so used to.

Michael Feathers' quote has motivated to dig deeper into a few of those techniques. I want to show them to you mainly by coding live. You will be able to see how you can use these refactorings even in brownfield settings. You will be able to plant green patches of test-driven code which will spread over your codebase in the long run and improve the whole project.

I will use Emily Bache's "Gilded Rose" kata as an example to show you how to apply these techniques in tiny steps. My tests will stay green at all times and I will be ready to ship on command.

background knowlege: some Java and Refactoring skills will be beneficial but you don't need to be an expert in either to be able to follow my talk.

Grüne Inseln im Brownfield-Schlamm en de

"Key lesson is, you can always (read: most of the time) do greenfield in a legacy code base."
-- Michael Feathers

Legacy Code ist eine der größten Herausforderungen für Entwickler überhaupt. Er kostet Nerven und fordert oft all unsere Kräfte, um auch nur ein kleines Feature in Produktion zu bringen. Aktuelle IDEs bringen viele Refactoring-Werkzeuge mit, die uns das Leben und Arbeiten im Brownfield erleichtern. Weniger bekannt sind aber Refactorings, die nicht vollautomatisch von unserer IDE übernommen werden können.

Motiviert von Michael Feathers' Zitat möchte ich einige Refactorings und Legacy-Code-Techniken live vorführen, die die IDE nicht automatisch für uns ablaufen lassen kann, die man dafür auch tief im Schlamm des Brownfields einsetzen kann. So pflanzt man testgetriebene, grüne Inseln, die sich Schritt für Schritt vergrößern und so das ganze Projekt verbessern.

Als Beispielprojekt nehme ich die Gilded Rose Kata von Emily Bache und zeige damit systematisch, wie die Techniken in der Praxis eingesetzt werden können. Die Tests bleiben dabei immer grün und die Techniken werden so kleinschrittig wie möglich ausgeführt.

Vorkenntnisse: Etwas Java- und Refactoring-Erfahrung sind von Vorteil. Man muss aber kein Experte darin sein, um dem Vortrag folgen zu können.

Branch by Abstraction - Deep Dive en de

Branch by Abstraction is an advanced technique you can use to safely perform long-term refactorings on your codebase without losing the ability to ship your project.

Most teams would use branches in such cases. However, these come with their distinct disadvantages.

In this talk I want to show you why I try to avoid branches for long-term refactoring and demonstrate "Branch by Abstraction" as a safer and more flexible alternative to what is commonly used today. With this approach, you will not lose your ability to ship or to work on other things in your codebase.

background knowledge: you should be able to read Java to follow the code examples and be familiar with the basics of object-oriented programming.

Making Shell Scripts Groovy en de

Groovy's ecosystem has grown to fantastic dimensions over the last years. There are libraries and frameworks for virtually every job you can imagine.

What is less commonly known is that Groovy can serve as a very efficient and convenient tool on the commandline as well.

Most of my talk will be live coding. We will begin with a very brief introduction how to run Groovy on the command line. We will then move on to topics like pipes and FIFOs for command line tools interop, XML/JSON handling, dependency management and testing.

In the end you will know the tools required to write effective and well-tested shell scripts in Groovy that can utilize the full power of the JVM's library ecosystem.

Making Shell Scripts Groovy en de

Groovy ist eigentlich eine universell einsetzbare Programmiersprache auf der JVM. Oft wird sie in Banken eingesetzt oder erweitert Java Projekte um Testing Tools wie Spock oder Geb.

Weniger bekannt ist, dass Groovy auch Funktionalität mitbringt, die es auch in Zeiten von Kotlin und JShell zu einem mächtigen Tool auf der Kommandozeile machen.

Mein Vortrag besteht zum größten Teil aus Live Coding.

Ich möchte einen extrem kurzen Einstieg in Groovy anhand eines in Java geschriebenen "Hello World" geben, der dank der syntaktischen Ähnlichkeit zu Java schnell gelingt.

Anschließend wechseln wir sofort auf die Shell und ich zeige unter anderem:
- Integration mit Linux Tools
- Argumente parsen
- Dependencies
- Testing
- XML/JSON

Branch by Abstraction - Deep Dive en de

Branch by Abstraction ist eine Technik, mit der sich große und langfristige Umbauten an der eigenen Codebase sicher und ohne Verlust der Lieferfähigkeit realisieren lassen. Oft sind für solche Vorhaben Branches das Mittel der Wahl, um die Stabilität der Codebase nicht zu gefährden und andere Änderungen nicht zu beeinflussen.

In diesem Talk zeigt euch Georg mit etwas Theorie und viel Live-Coding, wie solche Umbauten ohne Branches und die damit verbundenen Risiken vollzogen werden können.

Nötige Vorkenntnisse: eine objektorientierte Programmiersprache lesen können. Refactoring-Grundlagen sind von Vorteil. Die Beispiele werden in Java sein.

Developer Week '22

July 2022 Nürnberg, Germany

Georg Berky

Developer

Dortmund, Germany