Softwareentwicklung

Der schönste Job der Welt

24.03.2009 von Alexandra Mesmer
Entwickler sollen kreativ und kommunikativ sein. Ein frommer Wunsch? In einem Software- und Beratungshaus wie Skytec gelingt der Spagat zwischen Code und Kunde.

Manchmal beneidet Thomas Geyer seine Entwickler. "Der Beruf ist einer der schönsten auf der Welt. Entwickler sehen sofort, ob das, was sie getan haben, auch funktioniert." Im Gegensatz dazu müssten Vertriebsprofis länger auf ein Erfolgserlebnis warten, etwa bis der Vertrag mit dem Kunden unter Dach und Fach ist. Als Vorstandschef des Münchner Software- und Beratungshauses Skytec weiß Geyer, wovon er spricht, da auch er regelmäßig mit Kunden verhandelt.

Die Entwicklung redet von Anfang an mit

Mit dem Kunden und seinen Wünschen soll sich nach Geyers Auffassung auch der Entwickler intensiv beschäftigen: "Leider werden heutzutage viele Entwicklerteams isoliert, und der Kontakt zum Kunden läuft nur über den Projektleiter." Das funktioniert bei Skytec anders. Noch bevor dem Kunden ein konkretes Angebot unterbreitet wird, stimmen sich Presales und Technikabteilung ab. Zusammen listen sie die Anforderungen an die Software auf, angefangen von der Geschwindigkeit des Systems bis hin zur Sicherheit. In einem Grobkonzept stecken die Entwickler ab, welche Technologien sie einsetzen werden und wie die einzelnen Module ausschauen sollen. "Wir müssen die Lizenzkosten für Hard- und Software ermitteln und unseren Entwicklungsaufwand in Manntagen abschätzen", erklärt Martin Roeder, der bei Skytec eine Gruppe von Entwicklern leitet.

Thomas Geyer, Skytec: Leider werden heute viele Entwicklerteams isoliert, und der Kontakt zum Kunden läuft nur über den Projektleiter.

Auf dieser Basis kalkuliert Geyer den Preis für die Dienstleistung. Allerdings erst, nachdem er die Aufwandsschätzung hinterfragt hat. Warum sind für die Entwicklung eines zentralen Leitsystems für Bahnhofsanlagen bei den Essenern Verkehrsbetrieben zweieinhalb Mannjahre nötig? Roeder muss seinem Chef erst erklären, dass die Anforderungen nicht auf einem Framework programmiert werden können: "Die Einarbeitung in bestimmte Frameworks braucht Zeit, außerdem entwickeln sich die Frameworks ständig weiter." Im Projekt für die Essener Verkehrbetriebe haben die Skytec-Entwickler die Web-Oberfläche mit dem Framework "Tapestry" gewählt, obwohl die Einarbeitung aufwändig war. "Wir haben uns aufgrund der Flexibilität für diese Entwicklungsumgebung entschieden", sagt Roeder.

Auch das Testen der Software gestaltet sich oft aufwändiger, als Chef und vor allem Kunden es annehmen. Dazu Roeder: "In einem Großprojekt bauen sehr viele Leute ständig neue, voneinander unabhängige, aber miteinander funktionierende Module. Man muss darum jedes Modul testen, was etwa 30 Prozent der Zeit und damit genauso viel Zeit beansprucht wie die eigentliche Entwicklung." Die restlichen 40 Prozent der Projektdauer entfallen auf Konzept, Kommunikation, Abstimmung, Rollout-Planung und Installation. Wichtig sei auch die Versionskontrolle, in der überprüft wird, ob alle Abhängigkeiten stimmen. Im so genannten Bugtracking-Mechanismus tragen Entwickler und Softwaretester diejenigen Fehler rein, die sie entdeckt haben. Selbst den Kunden könne man hier einbeziehen, erklärt Roeder: "Das bedeutet aber, dass Entwicklerteams ihre Arbeit offenlegen und dem Kunden sehr nahe kommen."

Teamrollen in der Entwicklung

Hat der Kunde den Kaufvertrag unterschrieben, erstellen die Entwickler ein Pflichtenheft, das zur verpflichtenden Messlatte ihrer späteren Arbeit wird. Skytec favorisiert ein visuelles Pflichtenheft, so Geyer: "Wer die Funktionen nur beschreibt, lässt zu viel Raum für Interpretationen. Wir bauen für den Kunden eine grafische Oberfläche, über die er auf Screenshots klicken kann, die die einzelnen Funktionen darstellen." Zudem legt man sich im Pflichtenheft auf die Entwicklungsmethode, den Test- und Abnahmezyklus, einzelne Meilensteine, den Projektleiter sowie die Kommunikationswege zum Kunden fest. Zu Letzteren gehört auch ein gemeinsamer Workspace, in den Entwickler und Kunde Informationen stellen können.

Kommunikation ist alles: Die Skytec-Entwickler Michael Reinermann (links) und Martin Roeder müssen untereinander, mit Verkauf und Kunden reden.

Teamarbeit heißt auch die Devise in der eigentlichen Programmierphase, in der weit mehr Aufgaben zu erledigen sind als das reine Schreiben des Codes. Programmierer, Code-Reviewer, die aus der Sicht des ahnungslosen Anwenders die Lesbarkeit der Codes überprüfen, Softwaretester und Qualitätssicherer erfüllen verschiedene Rollen, müssen aber Hand in Hand arbeiten. "Unter Entwicklern sind immer noch viele Individualisten anzutreffen, die ihren Code nicht dokumentieren oder sich mit dem Team nicht abstimmen mögen", räumt Skytec-Chef Geyer ein. Das führe vor allem in großen Projekten manchmal zu Schwierigkeiten. Zu den Aufgaben eines Entwicklers gehört es laut Roeder, seinen Code nach den zum Projektstart beschlossenen Regeln zu dokumentieren und zu den festgelegten Zeiten die neu geschriebenen Codes einzuchecken. Insbesondere bei der agilen Softwareentwicklung, in der die Module nacheinander entwickelt werden, ist es nötig, sich täglich abzustimmen und jede Woche ein Teilergebnis zu präsentieren.

Wenn dann der Kunde Änderungen will, bleibt ein solcher "Change Request" nicht ohne Folgen für Verkauf und Technik. Während die Verkäufer mit dem Kunden verhandeln müssen, damit er die geforderten Änderungen auch bezahlt, müssen die Entwickler die Auswirkungen auf das gesamte Projekt prüfen, neue Testszenarien aufbauen und das Feinkonzept ändern.

Die Rollout-Phase beginnt mit einem Werkstest vor dem Kunden. Bei Bedarf können noch Kleinigkeiten korrigiert werden, bevor das System beim Kunden installiert wird. Anschließend gilt es, die Mitarbeiter in der neuen Software zu schulen, die Dokumentation zu übergeben und die Abnahme zu besiegeln.

Kreativ und kommunikativ als Traumkombination

Risiken können Entwicklungsprojekte viele bergen: Angefangen von der falsch kalkulierten Zeit über den Code, der sich als nicht wartbar entpuppt, bis hin zur Fluktuation der Entwickler. "Softwareentwicklung hat viel mit Kreativität, Leidenschaft und Kommunikation zu tun", sagt Thomas Geyer. "Ein guter Entwickler schaut immer über die reine Programmierung hinaus und deckt Schnittstellen ab." Der Skytec-Chef weiß aber auch, dass es die Traumkombination kreativ und kommunikativ selten gibt. Manchmal sind es gerade die kreativsten Köpfe, die sich lieber zurückziehen, als sich ins Team einzubringen.

Mehr zum Thema Entwickler