Sonntag, 4. März 2007

Untugenden der Softwareentwicklung

Gerade bin ich bei Google über einen interessanten Text gestolpert: Die 7 Untugenden des Informatik-Studenten. Da habe ich geschmunzelt, denn ich war ja auch einmal Informatik-Student.

Auf der anderen Seite aber... Leider hat der Text nichts von seiner Aktualität eingebüßt. In unserer Branche ist ja vieles sehr flüchtig, aber manches hat auch Bestand. Und so erkenne ich einige der beschriebenen Untugenden auch bei den professionellen Softwareentwicklern wieder.

Vernachlässigung der Theorie

Professionelle Softwareentwickler interessieren sich selten für theoretische Aspekte der Softwareentwicklung.  Komplexitätsabschätzungen von Algorithmen, Graphentheorie, Endliche Automaten... das alles und mehr halten viele für irrelevant. Sie sehen keinen praktischen Nutzen in solchen theoretischen Konzepten. Brauchbar ist, was Microsoft in eine Technologie gegossen hat. C#/VB lernen, .NET Framework Klassenbibliothek lernen, SQL Server/Oracle lernen. Was braucht man mehr fürs Tagesgeschäft? Das höchste der theoretischen Gefühle scheinen heute Datenbanknormalisierung und Entwurfsmuster zu sein.

Vernachlässigung des Handwerks

Was gehört zum Handwerk eines Softwareentwicklers? Das Programmieren, klar. Softwareentwickler sollen vor allem Code schreiben, um Probleme zu lösen. Aber so wie es aussieht, ist die Fähigkeit dazu doch nicht so weit verbreitet, wie sie sein sollte. Liegt das daran, dass solche Berichte sich auf ferne Länder beziehen? Leider nein, denn während der Assessments, die das Professional Developer College zur Unterstützung von Personalentscheidungen in Softwarefirmen durchführt, sind wir ähnlich überrascht worden.

Aber es geht nicht nur darum, dass viele Stellenbewerber selbst einfachste Programmierprobleme nur unter Mühen lösen können. Zum Handwerkszeug gehört es eben nicht nur, Code zu schreiben, sondern diese Tätigkeit als Teil eines Prozesses zu sehen. Softwareentwickler sollten nicht nur Techologieexperten sein, sondern auch Code grundsätzlich modellieren und systematisch testen können. Da aber hapert es.

Modellierungsaufgaben bereiten immer wieder großes Unbehagen und führen nicht zielstrebig zu einem Ergebnis. Über systematisches und automatisches Testen wird lange debattiert und am Ende bleibt der kursorische manuelle Test. Die Planung der Codierung und die Überprüfung des Codes als grundlegendes Handwerkszeug sind im Bewusstsein vieler Entwickler einfach nicht verankert.

Zu späte Spezialisierung

Während der Text eine zu frühe Spezialisierung beklagt, sehe ich das Problem im Gegenteil. Entwickler spezialisieren sich zu spät oder gar nicht, sondern verharren in einem Anspruch von Generalistentum, den sie selbst nicht einlösen können. Das verhindert den systematischen Erwerb von Tiefenwissen und lässt daher die Qualität der Produkte sinken, weil technologische Optionen nicht oder nur suboptimal ausgenutzt werden.

Der Employability ist dieses Denken auch nicht zuträglich, den der Wert am Arbeitsmarkt wird sich zukünftig mehr danach richten, wie gut einer in 1-2 Spezialgebieten ist. Bewerbungen, in denen von Smalltalk über Java bis C# alles drin ist, verlieren an Wert. Mehr als eine Entwicklungsplattform wie .NET wirklich (!) zu beherrschen, halte ich für schlicht unmöglich. Und innerhalb von .NET wirklich (!) gut in mehr als 2-3 Spezialgebieten zu sein, ebenfalls.

Wer diese Spezialgebiete für sich aber nicht bewusst findet und seine Fortbildung darauf fokussiert, der verliert den Anschluss.

Vernachlässigung der Soft Skills

Softwareentwicklung ist mehr als einsames Codieren. Software entsteht immer mehr im Dialog: im Dialog mit Kollegen, mit Beratern, mit Kunden, mit Peers.

Im Dialog zu bleiben und ihn zu nutzen, erfordert jedoch andere Fähigkeiten, als die fachliche Problemlösung. Neben den üblichen Hard Skills sind dafür Soft Skills nötig. Die aber erwerben Softwareentwickler nicht in der Ausbildung und auch nicht systematisch am Arbeitsplatz.

Die Qualität der Produkte wird daher durch Friktionen in den sozialen Systemen beschränkt.

Fazit

Das mag alles bitter klingen. Und, ja, das Schmunzeln ist mir schon ein Stück vergangen. Aber es geht ja nicht um eine Schuldzuschreibung und Verdammung, sondern nur um die Schilderung eines Eindrucks, dessen ich mich nicht erwehren kann.

Die Gründe dafür, dass es so ist, liegen ja auch nicht vollständig bei den Entwicklern. Die Ausbildung, die Heterogenität der Hintergründe, der hohe Projektdruck, erfolgsgetriebene Chefs... es kommt viel zusammen.

Aber nur weil es so ist, muss es ja nicht so bleiben.  An all diesen "Fronten" bemühen wir uns beim Professional Developer College zu helfen.

Die Grundausbildung zum .NET Softwareentwickler, die wir gerade erarbeiten, wird auch Theorie und "erweitertes" Handwerkszeug vermitteln. Und unsere Soft-Skill-Seminare, bei denen wir mit dem Rhetoriktraining einen Anfang gemacht haben, nehmen sich der "weicheren" Aspekte der Programmierung an.

Wir hoffen, wir können mithelfen, etwas zu bewegen...

Keine Kommentare: