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

Expand and Contract - Deep Dive en de

Tooling for Continuous Integration, Continuous Delivery and Infrastructure as Code has been improving over the last years. Most source control solutions offer pipelines, builds and depoloyements even if you only use their free version. One might think that with all those tools readily available, deploying to production several times an hour would be easy to accomplish. This is, however, not what most teams are experiencing - and tooling usually isn't the problem.

Expand and Contract is a mindest and a way of developing essential for Continuous Delivery. In this talk I want to show you with plenty of Live Coding and a little theory which way I have taken to learn this way of developing. It started with an aversion to insecure, manual work and we will arrive at a way of programming that allows you to stop and release your work at any time - an essential requirement for Continuous Delivery.

Requirements: You should be able to read an object-oriented programming language and know the basics of refactoring. My examples will be in Java.

Expand and Contract - Deep Dive en de

In den letzten Jahren hat sich das Tooling in den Bereichen Continuous Integration, Continuous Delivery und Infrastructure as Code erheblich verbessert. Pipelines, Builds und Deployments bekommt man oft schon mit der Source-Verwaltung geschenkt. Man sollte meinen, dass dank der neuen Tools jedes Team sofort mit mehreren Deployments pro Stunde direkt nach Production liefern könnte. Dem ist aber nicht so - und der Grund dafür liegt meistens nicht in den Tools.

Expand and Contract ist eine Denk- und Entwicklungsweise, die essenziell ist für Continuous Delivery. In diesem Vortrag zeigt euch Georg mit viel Live Coding und ein wenig Theorie, welchen Weg er dahin genommen hat. Er beginnt mit einer Abneigung für unsichere Handarbeit und führt zu einer jederzeit unterbrech- und releasebaren Arbeitsweise, der Grundlage für Continuous Delivery.

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

Bonsai and Software - Growing your Growth Mindset en de

When the pandemic hit, I wasn't able to go back to Japan, a trip I have been wanting to make again ever since I spent a year there at university. I missed my people and the wonderful nature in spring or fall and especially in Kyōto. So I picked up Bonsai as a hobby instead.

By now my Bonsai collection has grown to seven trees and to my surprise, developing and taking care of them has brought me inspiration for developing software.

In my talk I want to give you a very short introduction to Bonsai and talk about a few aspects of Bonsai philosophy that seem surprisingly applicable to software: How do software and Bonsai grow? How much control do we have there - and more.

I feel that those insights have changed my view on software and that I have found a different role for myself as a developer. What Bonsai have taught me has given me more peace in the middle of our hectic profession. My coaches later told me that I had, in fact, discovered the Growth Mindset. I hope that by telling you about my path, I can share it with you.

You should listen to my talk if
- you think that I am out of my mind
- this has piqued your interest in Bonsai
- you wonder if all of the stress in software development is necessary

Bonsai und Software - Growing your Growth Mindset en de

# Bonsai und Software - Growing your Growth Mindset

Zu Beginn der Pandemie habe ich Bonsai als Hobby für mich entdeckt. Eigentlich hatte ich nur meine Zeit in Japan und das Reisen dorthin vermisst, aber die Beschäftigung mit meinen inzwischen sieben Bäumchen hat mir überraschenderweise auch Inspiration für meine tägliche Arbeit als Softwareentwickler gegeben.

Ich werde zu Beginn kurz erklären, was Bonsai sind. Anschließend möchte ich auf einige Aspekte aus der Bonsai-Philosophie eingehen, die ich bei der Pflege meiner Bäumchen gelernt habe. Ich möchte dabei Parallelen zur Software zeigen, die mir aufgefallen sind: Wie wachsen Software und Bonsai? Wieviel Kontrolle haben wir dabei - und mehr.

Meine Sicht auf Software hat sich dank Bonsai verändert. Ich habe auch eine andere Rolle für mich als Entwickler gefunden und insgesamt bin ich zu etwas mehr Ruhe bei der Entwicklung gekommen. Später haben mir meine Coaches erklärt, dass sich mein Mindset zum Growth Mindset hin gewandelt hat. In diesem Talk hoffe ich, euch durch die Beschreibung meines Wegs etwas von alldem mitgeben zu können.

Ihr solltet euch meinen Vortrag anhören, wenn
- ihr denkt, dass ich komplett den Verstand verloren habe
- ihr neugierig auf Bonsai geworden seid
- ihr euch fragt, ob jeder Stress beim Entwickeln nötig ist

Branch by Abstraction - Deep Dive de en

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.

Branch by Abstraction - Deep Dive de en

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.

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.

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

Java Forum Nord 2023

September 2023 Hannover, Germany

Developer Week '22

July 2022 Nürnberg, Germany

Java Forum Nord 2019

September 2019 Hannover, Germany

Georg Berky

Developer

Dortmund, Germany