Dienstag, 17. Juni 2008

Erfolg!

Erfolg! Was genau heisst das? Traditionell definiert sich Erfolg durch Lieferung on time, on budget und gemäss Spezifikation.

Doch an dieser Definition ist ganz richtig! Man kann Projekte on time, on bugdet und gemäss Spezifikation abwickeln und mit dem Ergebnis verdient man keinen Cent. Andererseits gibt es Projekte, die über Budget, über den Deadlines und mit weniger Funktionen als spezifiziert abgeschlossen werden und man verdient damit viele hundert Dollar.

Es muss also noch etwas geben, ausser Deadlines einzuhalten. Was?

Als ich noch studierte habe ich oft nebenbei Websites mit PHP programmiert, viel herumgespielt, ausprobiert und umgebaut, bzw. weggeworfen. Solange ich Spass hatte, war ich erfolgreich, auch wenn etwas nicht funktioniert hatte. Mein Definition von Erfolg beruhte auf persönlichen Erfolgserlebnissen, he - Programmieren macht Spass!

Später, bei meiner ersten Anstellung als Software Engineer, wurde die Codebasis schnell sehr gross. Teilweise wusste man garnicht, warum oder wo etwas überhaupt funktioniert. Plötzlich wurde Wart-, Pfleg-, und Integrierbarkeit von Code wichtig. Ich musste lernten sauberen, eleganten und pflegbaren Programmcode in einem Team zu schreiben. Erfolg definiert sich nun so: technisch hervorrangend.

Trotz technisch hervorrangendem Programmcode wurden viele Projekte ein Desaster! Ich musste feststellen, dass Software neben mir und dem Team noch viele andere Stakeholder hatte, dessen Bedürfnisse es zu befriedigen galt - Endbenutzer, Betrieb'ler, Projektleiter, Controller und natürlich mein Chef, der mir meinen Lohn zahlt. Ich lernte, dass der Wert einer Software die gesamten Kosten abdecken muss. Erfolg hatte plötzlich eine unternehmerische Dimension!

Alle drei Dimensionen von Erfolg schliessen sich nicht aus, vielmehr sind alle besonders wichtig, denn nur im Zentrum findet man die Antwort auf die Frage, was neben Deadlines noch wichtig ist.

Ohne persöhnlichen Erfolg ist man schwer motivierbar. Ohne technischen Erfolg gleicht die Codebasis häufig einem Teller Spagetti und ohne unternehmerischen Erfolg wird sich das Team vom Unternehmen abwenden und eine neue Herausforderung suchen.

Der unternehmerische Erfolg wird von Softwareentwicklern oft zu Gunsten des persönlichen und technischen Erfolgs vernachlässigt, denn die sind einfacher zu erbringen und dafür ist jeder Softwareengineer letztendlich auch verantwortlich. Absurder Weise erwartet man aber, dass sich die Softwareentwickler dem übergeordneten Ziel - unternehmerischer Erfolg - unterordnen. Manager und Entscheidungsträger interessieren sich nicht für sauberen, eleganten und pflegbaren Code und die persönlichen Vorlieben der Entwickler - sie sind an Ergebnissen interessiert, am Return of Investment von einem Projekt.

Leider gibt das Management den Teams den Weg nicht vor, man erwarten dass das Team die Details klärt und einen richtigen Weg wählt. Wenn das erhoffte Ergebnis ausbleibt, werden Massnahmen eingeleitet, die sicherstellen, dass Entwicklerteams die gewünschten Erfolge bringen. Die Kosten sind an der Stelle ein beliebtes (Streit)Thema. Es gibt dann aus Managementsicht drei Ansätze:
  • Vorgabe harter Deadlines um Entwicklungzeit zu reduzieren
  • Outsourcing der Entwicklung in scheinbar billigere Länder
  • beides
Wenn einem diese drei Punkte bekannt vorkommen, ist es vielleicht Zeit den unternehmerischen Erfolg bei Entwicklungsteams überhaupt ins Spiel zu bringen.

Kommentare:

Benny hat gesagt…

Danke für den Artikel! Den muss ich mir ausdrucken und neben meinen Monitor hängen... ;)

jp hat gesagt…

Hallo Benny, ich arbeite gerade an einem anderen Post zu den agilen Werten und Prinzpien, das sollte auch an jedem Monitor hängen ;-)

Danke füers Feedback, jp