p.blog
Unternehmenskultur, Softwareentwicklung und Architektur

22. Juli 2020

Corona kann uns mal! Wie wir uns in der Pandemie weiterbilden.

3 Minuten Lesedauer

Eine Programmiersprache zu lernen, ist “eigentlich” nicht schwer. Die Grundlagen, Syntax und Eigenheiten sind schnell zusammengetragen und für weniger komplexe Szenarien reicht das oberflächliche Wissen meist aus. Als Einsteiger in der Softwarebranche steht man aber sehr schnell vor großen und komplexen Problemen und stellt fest: Vielleicht ist es doch nicht ganz so schnell gelernt.

Die ersten Wissenslücken schließen noch Fachbücher, Trial-and-Error-Prinzip und Stack Overflow, aber viele Medien sind veraltet oder für Anfänger zu komplex und unverständlich. Dabei werden auch Praktiken gelernt, welche so in der Produktivumgebung schon gar keine Anwendung mehr finden. Zumal auch bei manchen Problemen schon das Finden eines geeigneten Lösungsansatzes schwerfällt.

Um diese Probleme anzugehen, planten wir die Durchführung einer Java-Schulung, in welcher ein externer Lehrer unsere Werksstudenten, Junior Developer sowie Sprachneulinge mit Erfahrung in anderen Sprachen dabei anleiten sollte, vorhandenes Wissen in produktiven (Java-)Code umzusetzen.

Und Corona so …

Photo by Tim Mossholder on Unsplash

 

Planänderung: Das muss alles anders aufgezogen werden.

Wir haben eine Vielzahl an erfahrenen Programmierern, die ganz heiß darauf sind ihr Wissen weiterzugeben, und aufgrund der aktuellen Lage wurden auch einige Kapazitäten freigespielt. Warum also nicht das ganze als Chance sehen, unsere eigene interne Schulung aufzusetzen? Gesagt, getan. Ramon und Mirko (und später auch Andreas, der eigentlich nur aus Interesse teilnahm und später mehr lehren als lernen durfte) erklärten sich bereit, mehrere Schulungstage zu organisieren und diese daran zu orientieren, vorhandenes Wissen und Können mit unseren täglichen Aufgaben zu verbinden. Daraus entstand ein kleines Projekt, welches wir Teilnehmer innerhalb der Schulung bearbeiten sollten. Angefangen bei architekturellen Fragen und dem Herausfiltern wichtiger Informationen aus Kundengesprächen über Designentscheidungen bis hin zur Implementierung. Die Struktur der Schulung war angelehnt an dem Ablauf, wie er auch in realen Projekten auf uns wartet.

Nach einigen Stunden zur Ausarbeitung des Schulungskonzepts und vielen Tagen des Wartens bis vier gemeinsame Termine gefunden waren, startete unsere erste interne pentacor-Java-Schulung. Gemeinsam erfassten wir Requirements, entwickelten ein erstes Design und setzten mit Hilfe von SpringBoot eine RESTful API auf. Dabei begegnete uns auch der erste Stolperstein auf dem Weg zu einer laufenden Anwendung mit echter Logik in Form von unterschiedlicher Rechenleistung und verschiedenen Setups. Wer hätte ahnen können, dass das einfache Starten der Grundapplikation schon so lange dauern kann. Nichtsdestotrotz besaß jeder Teilnehmer bereits am Ende des ersten Tages einen funktionierenden Entwurf unseres Person-Services. Doch damit war es noch lange nicht getan. Mit jedem Tag wurden die Funktionalitäten und Endpunkte ausgebaut. Stück für Stück entstand so eine API mit ausgefeiltem Backend, einer darunterliegender Datenbank und einem [hier Adjektive einfügen, die diese Augenweide von Frontend beschreiben]* Frontend. Zusätzlich wurde unsere API um Monitoring mittels Grafana und Prometheus sowie eine Container-Verwaltung mittels Docker ergänzt.

Allerdings sollte unser Ziel nicht nur das reine Programmieren einer Applikation sein, sondern auch die Qualität und deren Sicherstellung. Doch wie genau machen wir das? Also erstmal einen Exkurs in Richtung Test-Arten inklusive der allseits bekannten Test-Pyramide einschlagen. Dazu noch ein paar Test-Frameworks eingepackt und schon geht die muntere Fahrt los …

Photo by Cami Talpone on Unsplash

 

… da gibt es Mockito, Hamcrest, Junit, Powermock und und und. Schnell wurde uns allen klar, dass es eine sehr umfangreiche Anzahl an verschiedenen Frameworks gibt, welche unterschiedliche Methodiken mitbringen und sich so für verschiedene Szenarien eignen. Daher erwies es sich als praktikabler genau zu überlegen, welche Funktionalität geprüft werden soll und welcher Ansatz sich hierfür besser eignet. Auf diese Weise entstand eine breite Basis an Test-Szenarien, die miteinander verglichen werden konnten.

Ein Grund für den Erfolg der Schulung liegt aus unserer Sicht in der persönlichen Beziehung zu unseren Kollegen, welche uns in einer lockeren Atmosphäre viel Wissen aus ihrem reichen Erfahrungsschatz vermitteln können. Zudem hat sich Mob Programming als ein motivierender Ansatz erwiesen, um die Spannung bei den Teilnehmern hoch zu halten. Denn hierbei übernehmen immer wieder neue Personen aus dem Teilnehmerkreis die Programmierung, während die anderen in einem offenen Diskussionsansatz die weitere Implementierung vorantreiben. Auf diese Weise konnte jeder seinen eigenen Programmierstil einbringen.

Mittlerweile sind bereits sechs Schulungstage erfolgreich durchgeführt und es begleitet uns das Gefühl, zwar bereits einiges gelernt zu haben, aber dass immer noch viel Wissenswertes unergründet vor uns liegt. Gerade deshalb ist die Gruppe nach wie vor sehr motiviert noch mehr zu lernen und die Nachfrage an weiteren Schulungseinheiten ist immens. Daher wurde der ursprüngliche Plan deutlich erweitert und wir sind schon gespannt auf den nächsten Termin!

*Für die Hartgesottenen: