Baby Steps & Object Calisthenics - Verbessere dein OO-Design!

 
Tutorial Day - 22. Mai
 
9:30
 
Tutorial
 
Gutes Design will gelernt sein - doch wie lässt sich gutes Design praktisch üben? In diesem Workshop werden zwei Techniken vorgestellt und praktisch ausprobiert.

1.Taking Baby Steps:

Idee

Hast du dich jemals gefragt, wieviel sinnvollen Code du in 30 Minuten schreiben kannst? Und in 2 Minuten? Während diesem Teil des Workshops wirst du lernen, dich auf das absolut Wesentliche zu konzentrieren, indem du kleine Schritte in Richtung inkrementeller, iterativer Softwareentwicklung

Motivation

Es gibt viele gute Gründe beim Entwickeln von Software in kleinen Iterationen zu arbeiten. So schafft man es etwa, seinen Code wesentlich häufiger zu committen und damit in die restliche Codebasis zu integrieren. Häufig merkt man erst beim Entwickeln, dass man sich in eine falsche Richtung bewegt. Hat man erst vor kurzem eingecheckt, ist das kein Problem. Man kann ohne großen Verlust einfach auf den letzten funktionierenden Stand zurückrollen. Dieser Workshop treibt die Idee von kurzen Iterationen auf die Spitze. Das Prinzip lässt sich auf den Alltag übertragen, auch wenn man sich dann wohl etwas mehr als zwei Minuten pro Iteration gönnt.

Ziele

Finde heraus, warum kleine Schritte nützlich sind und wann man sie einsetzt. Lerne, wie man während des Schreibens von Code und während eines Refactorings kleine Schritte macht. Erfahre, wie du dich selbst dazu zwingen kannst, kleine, inkrementelle Schritte zu machen.

Beschreibung

Nachdem wir ein einfaches Problem bearbeitet haben, werden wir gemeinsam darüber reden, was dabei passiert ist, als wir Code in kleinen inkrementellen Schritten geschrieben haben. Wir werden mit Hilfe eines lokalen Versionskontrollsystems immer dann committen, wenn wir mit dem Schreiben und Implementieren eines Tests oder mit einem Refactoring innerhalb von 2 Minuten fertig geworden sind. Falls wir nicht innerhalb von 2 Minuten fertig geworden sind, rollen wir die Änderungen auf den vorherigen Stand zurück und versuchen es mit einem kleineren Schritt, da der zuvor versuchte Schritt offenbar zu groß war.

Es wird mehrere Durchläufe geben, in denen die Teilnehmer in Paaren arbeiten werden. Nach jedem Durchlauf nehmen wir uns ein paar Minuten Zeit um darüber zu reflektieren, wie wir unsere Prozesse verbessern.

2. Object Calistenics

Ziele

In diesem Teil des Workshops hast du die Möglichkeit deinen Programmierstil bezüglich Objektorientierung zu verbessern. Du wirst die 9 Regeln der Object Calistenics (Objekt-Gymnastik) von Jeff Bay kennenlernen und anschließend zur Vertiefung unter Einhaltung dieser strengen Regeln programmieren.

Beschreibung

Jeff Bay hat in the ThoughtWorks Anthology folgende Regeln veröffentlicht:
  • Use only one level of indentation per method
  • Don’t use the else keyword
  • Wrap all primitives and strings
  • Use only one dot per line
  • Don’t abbreviate
  • Keep all entities small
  • Don’t use any classes with more than two instance variables
  • Use first-class collections
  • Don’t use any getters/setters/properties

Anfangs wird sich das Einhalten dieser Regeln für dich höchstwahrscheinlich sehr ungewohnt und dogmatisch anfühlen. Mit etwas Übung erhälst du jedoch eine Auffrischung auf was du bei der objektorientierten Programmierung achten solltest. Du trainierst deine "Muskeln" für das alltägliche saubere Code-Design.

Nach einer kurzen Einführung legst du in der objektorientierten Sprache deiner Wahl im Pair los. Dabei ist es auch möglich bei weniger Vorerfahrung pro Iteration nur einen Teil der Regeln oder auch nur eine einzelne Regel anzuwenden. Wir werden mehrere Iterationen durchführen. Natürlich gibt es auch ausreichend Zeit für Diskussionen und gegenseitiges Feedback.

Voraussetzungen

Teilnehmer sollten
  • gute Kenntnisse in mindestens einer Programmiersprache haben,
  • ein Notebook mit fertig eingerichteter Entwicklungsumgebung, inklusive Testing-Framework und lokalem Versionskontrollsystem, mitbringen und
  • einen Wecker oder Zeitnehmer dabei haben (wobei ein Smartphone mit passender App völlig ausreicht).

Fabian Knittel

andrena objects ag

Fabian Knittel beschäftigt sich seit 2004 professionell mit Softwareentwicklung. Seit 2012, nach dem Abschluss seines Informatik-Studiums am Karlsruher Institut für Technologie, arbeitet er als agiler Softwareingenieur bei der andrena objects ag. Seine Begeisterung gilt der Entwicklung von Clean Code sowie der Anwendung von agilen Methoden wie XP und SCRUM. Seine gesammelten Erfahrungen gibt er in Form von Vorträgen und Workshops weiter.

Sabine Neubauer

andrena objects ag

Sabine Neubauer studierte an der Universität Karlsruhe (TH) Informatik und ist seit 2010 in der professionellen Software-Entwicklung tätig. Seit 2012 arbeitet sie bei der andrena objects ag. Ihr besonderes Interesse liegt im Bereich der Software-Qualitätssicherung sowie in der Verbesserung von Entwicklungsprozessen durch den Einsatz agiler Methoden.

Franziska Sauerwein

andrena objects ag

Franziska Sauerwein ist Softwareentwicklerin bei der andrena objects ag. In der täglichen Projektarbeit bringt sie besonders gerne Methodiken aus XP und Scrum ein. In ihrer Freizeit besucht sie Treffen der Softwerkskammer sowie Konferenzen für Software Craftsmenship und organisiert das andrena-interne Pizza & Code.

Simon Wagner

andrena objects ag

Simon Wagner arbeitet seit 2013 als Software-Entwickler für die andrena objects ag. Dabei setzt er gerne auf agile Methoden wie Scrum und XP. Er interessiert sich besonders für Clean Code und testgetriebene Entwicklung.