Über verschiedene Möglichkeiten zur Verbesserung unserer Programmierfähigkeiten spreche ich mit Dennis Dierkes in der einhundertsechsundzwanzigsten Episode des Anwendungsentwickler-Podcasts.
TL;DR
Ich zeige dir gemeinsam mit Dennis Dierkes, wie du als IT-Azubi deine Programmierfähigkeiten durch Coding Dojos, Fachbücher und kleine eigene Projekte weiterentwickelst und über Meetups Kontakte knüpfst. Dabei gehören Zeit zum Lernen im Betrieb und konkretes Feedback durch dein:e Ausbilder:in ebenso dazu wie deine eigene Neugier, die dich auch nach der Ausbildung begleitet.
Kapitelmarken
[00:00:01] Einführung in Continuous Improvement
[00:01:36] Dennis Dierkes und sein Weg in die Softwareentwicklung
[00:02:49] Spring, Kotlin und aktuelle Projekte
[00:05:26] Warum du nach der Ausbildung weiterlernst
[00:06:35] Eigeninitiative und Zeit zum Lernen im Betrieb
[00:08:09] Tech Fridays und gemeinsame Lernformate
[00:10:58] Lebenslang lernen und neugierig bleiben
[00:12:05] Kotlin mit Übungen und Pair Programming lernen
[00:13:14] Coding Katas und Coding Dojos
[00:14:09] Eigene Lernprojekte überschaubar halten
[00:15:18] Fachbücher lesen und bestehenden Code prüfen
[00:17:19] Dojos und Bücher miteinander verbinden
[00:18:19] Lösungen vergleichen und Design Patterns ausprobieren
[00:19:41] Wie ein Open Space abläuft
[00:22:02] Meetups und die Java User Group
[00:23:56] Programmieren mit den Bielefelder Software Kids
[00:28:08] Anschluss bei Veranstaltungen finden
[00:29:21] Treffen suchen oder selbst organisieren
[00:30:58] Auf Workshops und Meetups vorbereiten
[00:32:06] Notizen, Beispielcode und Sketchnotes
[00:33:17] Fachbücher und Buchclubs in der IT-Ausbildung
[00:36:12] Growing Object-Oriented Software, Guided by Tests
[00:37:49] Pair Programming und konkrete Code Reviews
[00:39:30] Dennis online erreichen
[00:40:50] Weitere Anregungen und Links zur Episode
Inhalt
Allgemeines zur Person
Wie ist dein Name und wo arbeitest du?
Dennis Dierkes, 21 Jahre alt, Prüfung zum Fachinformatiker Anwendungsentwicklung vor 2 Wochen bestanden.
An welchen Projekten arbeitest du zur Zeit in deinem Tagesjob?
Java-lastige Sachen wie Spring, Kotlin und funktionale Programmierung mit Vavr, aber auch SOAP, Bootstrap, AWS, Vue.js.
Wie bist du zur Informatik bzw. Softwareentwicklung gekommen?
Klassisch über Computerspiele.
Welche Ausbildung bzw. welches Studium hast du im Bereich der Informatik absolviert?
Ausbildung FIAE, vorher Realschule.
Mit welcher/n Programmiersprache/n arbeitest du im Alltag?
Java, Kotlin
Was ist deine Lieblingsprogrammiersprache und warum?
Kotlin bietet enorm viele coole Möglichkeiten für Entwickler.
Continuous Improvement
Warum sollte ich meine Fähigkeiten als Softwareentwickler ständig ausbauen?
Ich kann höhere Qualität abliefern, schneller entwickeln und Probleme lösen, langfristig Zeit sparen.
Liegt Weiterbildung in meiner eigenen Verantwortung oder in der meines Arbeitgebers?
Es sollte Eigeninitiative vorhanden sein, die dann optimalerweise Unterstützung durch das Unternehmen bekommt. Ich persönlich habe auch nach einem vollen Arbeitstag noch Lust, nach Feierabend weiter zu programmieren und zu lernen.
Die Motivation steigt, wenn der Arbeitgeber unterstützt. Wir machen z.B. Coding Dojos gemeinsam mit den Kollegen.
Ist man irgendwann auch mal "fertig" mit der Weiterbildung?
Hoffentlich nicht! Ich würde gerne lebenslang lernen! Ich finde es nicht gut, wenn Kollegen, die kurz vor der Rente stehen, nicht mehr mitmachen.
Womit verbesserst du deine (Programmier-)Fähigkeiten?
Kotlin habe ich über ein Tutorial bei GitHub gelernt. Pair Programming hilft sehr beim Wissenstransfer. In Side Projects kann man ohne Druck lernen und sich ausprobieren.
Aktuell habe ich ein Side Project für die Arbeit erstellt mit Vue.js.
Das Side Project sollte nicht zu groß werden, damit es weiter Spaß macht.
Was ist ein Coding Dojo/Barcamp/Code Retreat und was macht man da konkret?
Coding Katas sind kleine Übungsaufgaben für Programmierer.
Coding Dojos sind Treffen in einer Gruppe, um die Katas gemeinsam zu bearbeiten.
Ich persönlich mag das "Hands On" im Coding Dojo und nehme dann noch ein Buch zur Vertiefung.
Sehr spannend war z.B. das Bearbeiten der Katas von mehreren Programmierpaaren und der anschließende Vergleich der Lösungen. Dabei haben wir dann z.B. Design Pattern angewendet und ihre Vor- und Nachteile besprochen.
Welche Ressourcen verwendest du zur persönlichen Weiterbildung?
Bücher. Mit neuem Wissen auf alten Code schauen. Retrospektiven durchführen.
Kannst du konkrete Bücher/Kurse/Veranstaltungen empfehlen?
Clean Code*, Growing Object-Oriented Software, Guided by Tests*
Was ist ein Open Space?
Eine "Unkonferenz" mit mehreren Räumen. Es gibt eine Tafel für die Themenwahl. Jeder darf eine Session mitbringen oder sich eine wünschen. Man kann jederzeit Vorträge verlassen ("Gesetz der zwei Füße").
Welche Veranstaltungen (für Entwickler) hast du bislang besucht?
Verschiedene Treffen über Meetup.com im Raum Bielefeld, Java User Group (JUG), CloudLab, Socramob.
Ich organisiere auch selbst eine Veranstaltung, um Kinder und Jugendliche an die Programmierung heranzuführen, z.B. mit Little Bits oder dem Calliope. Wir haben auch schonmal einen Minecraft-Bot programmiert.
Wo findest du die Kinder/Jugendlichen, die mitmachen?
Es gab eine Info an die Teilnehmer des Open Spaces, die ihre Kinder angesprochen haben. Außerdem schreibe ich Schulen an.
Was mache ich, wenn ich eher schüchtern/zurückhaltend bin?
Das sind doch alle! Einfach hingehen und mitmachen. Die Teilnehmer sind alle ganz offen. Zur Not einen Kollegen mitnehmen, mit dem man quatschen kann.
Wie findet man Veranstaltungen für Entwickler?
Meetup.com, Softwerkskammer.
Was mache ich, wenn in meiner Region keine Veranstaltungen stattfinden?
Selbst eine organisieren oder halt weiter fahren. Die Softwerkskammer hilft vielleicht.
Wie bereitest du dich auf Veranstaltungen vor?
Meistens gar nicht so viel. Ich gehe einfach hin. Manchmal wird aber empfohlen, etwas mitzubringen (z.B. Repo von GitHub klonen, IDE installieren). Es ist aber immer gut, einen Laptop mitzunehmen.
Wie nimmst du das Optimum aus den Veranstaltungen mit (z.B. Notizen, Ziele setzen)?
Ich nutze eine Notizen-App. Nebenbei probiere ich meist live das Gezeigte aus. Im Nachhinein lade ich den Beispielcode herunter und mache selbst weiter. Aktuell probiere ich Sketchnotes aus.
Aus- und Weiterbildung
Bildest du selbst Entwickler-Nachwuchs aus und wenn ja, wie ist das Vorgehen?
Zum 01.08. bekommen wir unseren ersten Azubi zum Fachinformatiker Anwendungsentwicklung.
Hast du Tipps für Ausbilder/-innen im IT-Bereich?
Nehmt euch ausreichend Zeit für eure Azubis! Macht z.B. Pair Programming mit ihnen. Wichtig sind auch intensive Code Reviews, bei denen alles angemerkt werden soll, was euch auffällt. Schaut euch detailliert den Code an und nickt nicht einfach alles ab. Nur durch Feedback lernt man.
Abschluss
Wo können die Hörer mehr über dich erfahren bzw. dich kontaktieren?
Bei Twitter (@deenerin0), Xing, GitHub oder Instagram.
Ansonsten einfach zu einem Meetup im Raum Bielefeld kommen! :-)
Literaturempfehlungen
Robert C. Martin - Clean Code: A Handbook of Agile Software Craftsmanship*
*
Growing Object-Oriented Software, Guided by Tests*
*
Java By Comparison: Become a Java Craftsman in 70 Examples (Affiliate)*. Den erwähnten Podcast zum Buch gibt es hier: InnoQ-Podcast: Java by Comparison.
*
Die Sketchnote Starthilfe: Über 200 Strich-für-Strich-Anleitungen und Schriften zum Nachzeichnen*
*
Links
Permalink zu dieser Podcast-Episode
RSS-Feed des Podcasts
Meetup.com
Cloud Lab Bielefeld
Java User Group Bielefeld (Bielefeld, Deutschland) | Meetup
Softwerkskammer
Münster/Osnabrück/Bielefeld
Oldenburger Münsterland
Bielefelder Software Kids
littleBits (Lernprojekt für den Arduino)
CALLIOPE mini* (Microcontroller zum Lernen)
JetBrains Kotlin Workshop Material
Zusammenfassung
Deine Programmierfähigkeiten weiterentwickeln
Dennis Dierkes hat seine Ausbildung zum/zur Fachinformatiker:in für Anwendungsentwicklung gerade abgeschlossen und arbeitet inzwischen in einem kleinen Unternehmen. Dort entwickelt er Webanwendungen mit Spring und beschäftigt sich für kommende Projekte mit Kotlin und Vue.js. Im Gespräch mit ihm greife ich auf, wie du auch nach deinem Abschluss weiterlernst.
Wenn du neue Technologien kennenlernst und deine Fähigkeiten ausbaust, kannst du hochwertigere Software schreiben. Was du lernst, hilft dir auch, wenn du bestehenden Code später erweiterst oder überarbeitest. Für mögliche Arbeitgeber:innen wirst du durch zusätzliche Kenntnisse interessanter.
Dennis möchte seine Neugier über das gesamte Berufsleben behalten. Wie viel Zeit du dafür aufbringen kannst, hängt auch von deinen Lebensumständen ab.
Zeit zum Lernen im Betrieb
Dennis lernt während der Arbeitszeit und beschäftigt sich aus eigenem Interesse auch abends mit Softwareentwicklung. Sein Unternehmen stellt Zeit bereit, um neue Themen kennenzulernen. Persönliche Initiative und die Unterstützung durch den Betrieb gehören dabei zusammen.
Für Technologien, die du bei der Arbeit brauchst, sollte dein:e Arbeitgeber:in Zeit zum Lernen einräumen. Ob du dich zusätzlich in deiner Freizeit damit beschäftigst, entscheidest du selbst.
In Dennis’ Unternehmen wurde ein früherer Tech Friday verändert, nachdem einigen Kolleg:innen Ideen oder Interesse fehlten. Freitags finden inzwischen gemeinsame Coding Dojos und Vorträge aus dem Team statt, etwa zu Vue.js. Auch für neue Themen außerhalb eines konkreten Projekts gibt es Zeit. Die Teilnahme ist freiwillig.
Bei mir im Unternehmen arbeiten sich Kolleg:innen während der Arbeitszeit in Technologien ein, die ein Projekt erfordert. Bei Bedarf sind auch Kurse möglich. Ein festes Format für frei gewählte Lernthemen gibt es zum Zeitpunkt des Gesprächs noch nicht.
Mit Coding Katas und Pair Programming üben
...