Codequalität lehren und lernen: Erfahrungen aus 6 Jahren Programmierausbildung
Wir empfehlen Maßnahmen, um vor dem Berufseinstieg für eine bessere Ausbildung zu sorgen und eine sinnvolle Weiterbildung zu etablieren.
![Codequalität lehren und lernen: Erfahrungen aus 6 Jahren Programmierausbildung](https://heise.cloudimg.io/width/610/q85.png-lossy-85.webp-lossy-85.foil1/_www-heise-de_/imgs/18/2/9/1/7/7/7/0/shutterstock_1161966886-2eee4c771e43a79c.jpeg)
(Bild: Black Jack/Shutterstock.com)
- Linus Dietz
- Dr. Simon Harrer
Der Anspruch an Code sollte nicht nur sein, dass er seinen Zweck erfüllt. Qualitativ hochwertiger Code (sog. "Clean Code") ist nicht nur funktional korrekt, sondern auch gut lesbar, einfach testbar und leicht zu erweitern. Leider haben Berufseinsteiger*innen oftmals keine ausreichende Erfahrung oder das Bewusstsein dafür. Der Fokus in den Programmierkursen liegt meistens auf der Funktionalität, die üblicherweise die einzige Bewertungsgrundlage darstellt. Aus Zeitgründen gibt es nicht ausreichend Feedback für weitere Qualitätsaspekte, was Lernenden den Eindruck vermittelt, dass Codequalität zweitrangig sei. Wenn Absolvent*innen das nicht woanders erlernen, ist der Einstieg in den Beruf schwierig. Unternehmen sind dann gezwungen, in einem Thema in Weiterbildung zu investieren, von dem sie normalerweise erwarten würden, dass ihre Softwareentwickler*innen das schon können.
2011 hat die Universität Bamberg die Programmierausbildung überdacht. Auf der Erstsemestervorlesung "Einführung in der Informatik" aufbauend, sollten zwei weiterführende, praktische Programmierkurse geschaffen werden. Als junge Doktoranden hatten die Autoren dieses Artikels die Chance, ein neues Lehrkonzept [1] zu entwickeln, das den Studierenden nicht nur weiterführende Programmierkonzepte beibrachte, sondern den Fokus auf das Schreiben qualitativ hochwertigen Codes legte.
Das Lehrkonzept besteht aus einer Plenarübung im Rechnerraum, die zwischen dem Vermitteln neuer Programmierkonzepte und deren sofortiger Anwendung in kleinen Übungsbeispielen alteriert. Die Lösungsvorschläge werden im Plenum interaktiv begutachtet und so lange unter Moderation der Dozenten refaktoriert, bis es keine Verbesserungsvorschläge mehr gibt und die Vor- und Nachteile aller Alternativen abgewogen sind. Die Diskussionen sind essentiell, um den Studierenden nicht nur ein Gespür für Verbesserungen zu geben, sondern auch um die Erwartungshaltung in Bezug auf Codequalität in den Programmieraufgaben zu setzen.
Der zweite Pfeiler der Lehrveranstaltungen besteht aus mehreren Programmierprojekten, die innerhalb von zwei Wochen in Kleingruppen zu lösen sind. Die Dozenten bewerten die Projekte, die circa fünf bis 15 Java-Klassen mit bis zu 2000 Codezeilen umfassen, schriftlich hinsichtlich funktionaler Korrektheit, aber auch Architektur und Codequalität. Dabei teilen sie nicht nur die erreichte Punktzahl mit, sondern gehen wie in einem Codereview detailliert auf die Codequalität und Verbesserungsmöglichkeiten mit Verweis auf die Codestelle ein. Neben dem individuellen Feedback gibt es jeweils eine Sammlung gehäuft auftretender Fehler, die mitsamt ihrer Verbesserung an alle im Kurs verschickt werden. Aus der Sammlung der typischen Fehler entstand mit der Zeit das Buch "Java by Comparison" [2].
Die mündliche Prüfung am Ende des Semesters fragt schließlich den erlernten Stoff anhand des Codes aus den Projekten ab. Die Studierenden sind aufgefordert, in der IDE den eigenen Code zu erklären und kritisch zu bewerten. Zusätzlich bekommen sie unbekannte Codebeispiele vorgelegt, die sie wie in einem Codereview beurteilen sollen.
Im Folgenden stellen die Autoren die Maßnahmen zum Erreichen einer besseren Codequalität vor, wie wirksam sie waren und wie sie sich auch in Unternehmen für die gezielte Weiterbildung von Berufseinsteiger*innen nutzen lassen können.