Was in der Ausbildung zum Softwareentwickler fehlt

Was Informatikstudenten über professionelles Programmieren lernen sollten

Mark Warren

© Shutterstock / Timofey_123

Viele der heutigen Informatik-Studenten verfügen am Ende ihrer Ausbildung nur unzureichend über die fundamentalen Fähigkeiten für professionelles Programmieren. Sie mögen viel von Algorithmen, Datenstrukturen und Kodierung verstehen, jedoch weniger davon, wie man ein Projekt zum Erfolg bringt.

Software-Entwicklung ist anders als die meisten Berufe, denn Entwickler müssen sowohl entwerfen als auch bauen. Programmierer werden zunehmend entlang des Technologie- Stacks eingebunden, um ihren wunderbaren Code in die Hände eines Users zu bekommen. Die Einführung einer „Full-stack-Entwicklung“ bedeutet, das Entwickler ein breites Spektrum an Fähigkeiten jenseits von Ruby oder JavaScript beherrschen müssen. Das ist, wie von einem Architekten zu verlangen, auch Mauern, Pflastern oder Schweißen zu beherrschen.

Es gibt ein schmutziges, kleines Geheimnis, das selten in der Öffentlichkeit diskutiert wird, oder gar an Universitäten: Programmierer müssen manchmal Bugs fixen (Natürlich nicht bei ihrem eigenen Code, der immer perfekt ist). Ob Einzel- oder Teamprojekt als Teil eines Kurses oder einer Dissertation, die Arbeit beginnt fast immer als ein sauberes Projekt. Der Code kann wunderschön strukturiert sein, regelmäßig umgestaltet werden, ohne von Ansprüchen wie Sicherheitstests oder Audit Trails beeinflusst zu werden. Abgesehen von dem üblichen Druck der Deadlines werden Studenten nie von einem gestressten Manager unterbrochen, der darauf besteht, dass sie alles stehen und liegen lassen, um sich um einen Programmabsturz eines zehn Jahre alten Live-Systems zu kümmern. Sie müssen niemals bei einem Systemadministrator darum betteln, eine einfache kleine Fehlerbehebung vornehmen zu dürfen.

Die wirkliche Welt ist ein chaotischer, lauter und oft frustrierender Ort

Viele Kurse bieten die Möglichkeit, Praktika in Unternehmen als Teil der Lehrveranstaltung zu absolvieren. Die Studenten haben danach ein viel tieferes Verständnis von dem Druck und der Realität des Programmierens in der wirklichen Welt. In meinen Unterhaltungen mit Studenten und Kursleitern wurde oft davon gesprochen, wie viel reifer die Studenten sind, wenn sie wiederkommen. Dem Schmerz ausgesetzt zu sein, ist oft eine positive Erfahrung, obwohl es für manche auch die Chance ist zu bemerken, dass ihre Träume anderswo liegen.

Ist es möglich, Kurse relevanter für das wahre Leben zu machen? Ich behaupte nicht, ein
Pädagoge zu sein, noch jemand der jemals einen Lehrplan geschrieben hat, aber basierend auf dem, was wir in der Branche beobachten, sind hier ein paar Bereiche, in denen der Informatik-Unterricht verbessert werden könnte.

Lesen Sie auch: 8 Gewohnheiten erfolgreicher Entwickler

Problemlösungsfähigkeiten aufbauen

Problemlösungsfähigkeiten aufzubauen ist eine der größten Herausforderungen, der sich Personen stellen, die in die Arbeitswelt eintreten – erst recht für Softwareentwickler. Während ihrer Ausbildung basierte ihre Erfahrung im Programmieren auf Aufgaben, die sich auf das Erlernen einer bestimmten Fähigkeit oder Unterrichtseinheit konzentrierten. Einen existierenden Code aufgreifen, Programmfehler kriminaltechnisch identifizieren und reparieren, Veränderungen validieren und Integrations- sowie Implementierungsphasen durchgehen: Das könnte angemessener die Herausforderungen simulieren, denen sich Studenten später stellen müssen.

Kollaboration und Kommunikation lernen

Software zu entwickeln ist wie Teil einer Sportmannschaft zu sein; mit verschiedenen Mitwirkenden, die zusammen die Fähigkeiten und Rollen haben, ein Endprodukt zu liefern. Software- Entwicklungskurse beinhalten oft Gruppenarbeiten, in denen die Studenten Erfahrungen im Programmieren neben anderen sammeln. Aber aus Erzählungen hören wir, dass zu oft der Hauptteil der Arbeit von nur ein oder zwei Personen ausgeführt wird.

Die Ausnahme dieser Beobachtung sind Lehrpläne, die sich auf die Spieleentwicklung konzentrieren. Denn zu lernen, wie man ein Teamplayer wird, ist fundamental für dieses Gebiet. Absolventen aus diesen Bildungseinrichtungen sind oft versiert in den grundlegenden Prinzipien agiler Entwicklung und Aufgabentracking, was es einfach macht, sie in Entwicklerteams zu stecken.

Auch Studenten, die schließlich in Mainstream-Unternehmen oder im öffentlichen Sektor arbeiten, werden genauso davon profitieren, Teamplayer zu sein. Ebenso müssen Entwickler lernen zu kommunizieren, was sie tun; nicht nur untereinander, sondern auch Kunden gegenüber, die auch Kollegen aus anderen, nicht-technischen Abteilungen sein können. In der Lage zu sein, seine Arbeit, was man von Kunden benötigt oder welche Hindernisse überwunden werden müssen, zu artikulieren, ist ein essenzieller Teil der Rolle des Software-Entwicklers.

Also müssen Kurse drei weitere Elemente betonen: Erstens die Teamplayer-Mentalität zu fördern, zweitens jedem zur Aufgabe zu machen auf bestimmbare, transparente Weise zu einem Projekt beizutragen und drittens Kommunikationsfähigkeiten. Dann kann definitiv nicht in Isolation gelernt werden.

Lesen Sie auch: Das Experiment: Ist Pair Programming wirklich sinnvoll?

Den Code eines anderen verstehen

Zu lernen, wie man den Code eines Anderen liest und entschlüsselt ist eine wichtige zu erlernende Fähigkeit, da es in der täglichen Arbeit des Entwicklers viel darum geht, existierende Codes zu modifizieren, die von jemand anderem geschrieben wurden. Das Problem ist, dass die Kurshausaufgaben sich meistens auf ein Individuum konzentrieren, das seinen eigenen Code erstellt. Dieser isolierte Ansatz kann die Entwicklung von Kodierungsverhalten fördern, die der Gruppenzusammenarbeit nicht  zuträglich ist. Zum Beispiel könnten unangebracht kreative Strategien penetrant und absolut nervig für zukünftige Kollegen sein.

Was ist also die Antwort? Das Absolvieren von Praktika fördern und die Studenten dabei unterstützen, die begrenzten Plätze zu bekommen. Dies ist auch an Aufruf an die Arbeitgeber. Praktikanten sind keine teure Zeitverschwendung (noch sind sie billige Arbeitskräfte). Sie sind eine Investition. Sie sind auch eine Chance, modernes, Up-to-date-Denken in ein Team zu bringen, das lange aus der Universität raus ist. Viele der talentiertesten Programmierer, mit denen ich gearbeitet habe, begannen ihre Karriere als Studenten im Rahmen eines Praktikums. Langzeit-Gruppenprojekte werden Studenten helfen zu lernen, wie man die Arbeit eines anderen interpretiert, besonders wenn ein vorher bestehender Legacy Code involviert ist. Eine andere Option ist, Studenten dazu zu ermutigen, Open-Source-Bibliotheken zu benutzen oder zu modifizieren, die sie anderen Kodierungsstilen aussetzen, um andere Entwicklungstools außerhalb des Lehrplans zu entdecken. Das Spielen mit APIs wird nicht nur das Allgemeinwissen der Studenten erweitern, sondern auch den Lern- und Arbeitsprozess mit neuen Technologien lehren. Das ist eine nützliche Fähigkeit, die sich in den folgenden Jahren bezahlt machen wird.

Es gibt keinen Ersatz für Erfahrungen in der wirklichen Welt. Aber der Bildungsprozess kann helfen, Studenten auf die Arbeitswelt vorzubereiten, wenn man sich auch Soft Skills zuwendet, wie Projektmanagement, Teamarbeit und Kommunikation. Wenn man dies in Angriff nimmt, werden zukünftige professionelle Software-Entwickler besser ausgerüstet ein, einen wunderbaren Code nicht nur zu entwerfen, sondern auch zu konstruieren.

Aufmacherbild: Web script engine von Shutterstock / Urheberrecht: Timofey_123

Verwandte Themen:

Geschrieben von
Mark Warren
Mark Warren
Mark Warren ist Product Marketing Director bei Perforce Software. Er verfügt über mehr als zwei Jahrzehnte an Erfahrung in der Softwareindustrie sowohl als Anbieter als auch Konsument von Entwicklungs-Tools. Die 1995 eingeführte skalierbare Source-Code-Management-Plattform Perforce Helix von Perforce Software ermöglicht es globalen Teams zusammenzuarbeiten – egal an welcher Datei oder Dateigröße.
Kommentare

Hinterlasse einen Kommentar

4 Kommentare auf "Was Informatikstudenten über professionelles Programmieren lernen sollten"

avatar
400
  Subscribe  
Benachrichtige mich zu:
Chris Jung
Gast

Klingt für mich nach „Ich finde es nicht gut, dass die Unis keine maßgeschneiderten Informatiker auf den Markt bringen. Und deshalb müssen wir soooo einen Aufwand treiben und selbst was tun-Gejammere. Sowas Ähnliches bringen die Arbeitgeberverbände auch.

Grüße

Simon Schneider
Gast

Ziel eines Universitätsstudiums ist es nicht, Absolventen auf den Berufsalltag vorzubereiten, sondern diese zu wissenschaftlicher Arbeit in ihrem Fachgebiet zu befähigen.

Marcel Mann
Gast
Meine Fachinformatiker Ausbildung zielte genau auf diese Aspekte ab. Vielleicht weil diese Ausbildung eben nicht wissenschaftlich ausgelegt ist? Ist denn Programmieren überhaupt wissenschaftlich? Ich bezweifele das! Es mag sicher Teile im IT Geschäft geben, wo wissenschaftliches Arbeiten gefordert ist. Aber im Alltagsgeschäft in den Firmen ist das meist nicht de Fall. Meiner Meinung nach ist das Kommunizieren das A und O, was ein „professioneller“ Entwickler beherrschen muss. Und damit meine ich keine technische Kommunikation, sondern die Kommunikation auf Businessseite. Auch das offene Ansprechen von misslichen Dingen muss mehr kultiviert werden. Den stillen Programmierer kann man sicher Aufgaben geben, die er… Read more »
Stefan Wolf
Gast
Das Programmieren an sich ist wenig wissenschaftlich. Dabei handelt es sich mehr um ein Handwerk, das man lernen muss – genau wie die fachkundige Benutzung des Handwerkszeugs. Das Programmieren ist in der Hochschulausbildung der Informatiker zwar häufig wichtig, aber trotzdem nicht der zentrale Inhalt des Studiums. Im Bereich der Softwareentwicklung sind Dinge wie das Modellieren, die Anforderungsanalyse, die Software-Architektur – also alles, was man unter Software-Engineering zusammenfassen kann, deutlich wichtiger. Und das sind durchaus Tätigkeiten, bei denen man wissenschaftlich vorgehen sollte. Ich finde die Analogie zum Maurer, etc. auf der einen Seite und dem Architekten auf der anderen ganz anschaulich.… Read more »