Auf Grundlage meiner Erfahrungen mit - auch kritischen - Projekten bevorzuge
ich Projekte nach den Grundsätzen der agilen Softwareentwicklung
und eXtrem Programming, gekoppelt an klaren und offenen formalen
Richtlinien.
Einer der wichtigsten Begriffe bei der Softwareentwicklung und
Projekt- und Entwicklungsleitung ist der der Angemessenheit.
Es gibt kein 'wahr' und 'falsch' beim Design von Software und
auch nicht bei der Auswahl von Methoden.
Einige Entscheidungen kann man nach dem Muster, soviel A wie möglich
und soviel B wie nötig bewerten. Zum Beispiel: So viel Freiheit und
Vertrauen in alle Beteiligten wie möglich und soviel Planung und
Kontrolle wie nötig.
Die folgenden Richtlinien sind somit nicht absolut zu sehen, sondern
resultieren aus meinen Erfahrungen aus früheren Projekten.
Nach Innen wirkende Richtlinien.
- Die Qualität des Softwareproduktes soll sich schon
zu einem frühen Zeitpunkt in Tests, Konfigurationsmanagement,
Logging, System- und Nutzerdokumentation
niederschlagen.
- Als Entwicklungsleiter muss man auch inhaltlich im Zentrum
der Softwareentwicklung stehen. Der Entwicklungsleiter muss
sämtliche Aspekte des Softwareprozesses verstehen.
- Design und wichtige technische Details werden innerhalb der
Entwicklergruppe diskutiert. Im Zweifelsfalle entscheidet
der Entwicklungsleiter.
- Der Einsatz von Unittests, die in einem automatischen Regressionstest eingebunden
werden können, ist unabdingbar.
- Der Einsatz einer Versionsverwaltung ist unabdingbar und sollte
alle projektrelevanten Dokumente umfassen.
- Designwerkzeugen und CASE-Tools (wie etwa Rational Rose)
sollen nicht die Softwareentwicklung determinieren, sondern
umgekehrt. Reine UML Diagramme überdecken oft die in dem Projekt
innewohnende zu lösende Probleme. Klare deutsche (oder englische)
Sätze, illustriert mit UML Diagrammen, Pseudocode oder Prototypen
müssen ein klares Verständnis innerhalb des Projektteams und
bei dem Kunden vermitteln.
Softwareentwicklung soll in media res geschehen.
- Entwicklung möglichst aus 'produktiven' Prototypen.
- Mit den Mitarbeitern (ggf. mit den Kunden) werden Wochen-
und Monatsziele vereinbart und jeweils nach Ablauf kontrolliert und
protokolliert.
Probleme können frühzeitig erkannt werden, unrealistische
Aufwandseinschätzungen können korrigiert werden.
- Externe Schulungen können die Aus- und Weiterbildung
innerhalb eines Teams nicht ersetzen, höchstens ergänzen.
Von der Projekt- und Entwicklungsleitung müssen die
Rahmenbedingungen geschaffen werden, damit die Weiterbildung
von Anfängern und Fortgeschrittenen den Erfahrenen nicht
als Last und Strafe vorkommt.
In der Vergangenheit habe ich zwischen 5 - 50% meiner Zeit
in Projekten mit Weiterbildung und Coaching verbracht.
- In komplexen Projekten, in denen keine adäquaten Aufgaben gefunden werden
können, haben Anfänger (Umschüler) nichts zu suchen.
- Vom Hinfallen lernt man das Laufen nicht. Einer der wichtigsten
Motivation eines Entwicklers ist der Erfolg des Projektes.
Nach Außen wirkende Richtlinien.
- Bei größeren Projekte, gestufte Pflichtenhefte mit
jeweiliger Beschreibung des Abnahmeprozesses.
- Dokumentation des Projektverlaufes mittels eines Projekttagebuches.
Das für Entwickler und Kunden möglichst offene Projekttagebuch enthält
folgende Elemente:
- Pflichtenhefte, Spezifikationen.
- Projektplanung und Personaleinsatzplanung.
- Kommunikationsprotokolle mit Kunden (Jour Fixe, Telefonate).
- Teambesprechungen mit Wochenzielen (siehe unten).
- Testprotokolle, Offene Punkte, Fehlerliste.
- Bei Produktionsbetreuung, wichtige Logfiles
Fehlerberichte.
Email und Word-Dateien haben oft den Charakter von
Write-only Dokumente. Im optimalen Fall ist das
Projekttagebuch ein Intranet, an dem sich alle Projektbeteiligten
einbringen können.
- Enger Kontakt zu Kunden, um Fehlentwicklungen zu vermeiden.
- Hierbei möglichst ehrlichen und offener Kommunikation mit Kunden.
- Eigentlich banal aber dennoch in der Praxis problematisch: Besprechungen
innerhalb des Projektes oder mit dem Kunden in möglichst kleinem
Kreis. Ergebnisse werden im Projekttagebuch festgehalten, die
für alle Beteiligten Pflichtlektüre sein sollte.
- Ein großes Problem bei Client-Server Projekten, bei
denen der Kunde mittels des Frontends mit dem Produkt in
Kontakt kommt, ist die relative lange Zeit in der das Projektteam
mit Backend und technischer Infrastruktur zu kämpfen hat und
aus Sicht des Kunden das Projekt scheinbar nicht vorankommt.
Mit einem Prototyp, dem Projekttagebuch mit einem transparenten
Projektplan kann vor Frustration vorgebeugt werden.
- Bei mittleren (> 3 Entwickler) und großen Projekten soll
die Rolle des Projektleiters (globale Steuerung des Projektes,
Kommunikation mit Geschäftsführung) und Entwicklungsleitung
(Leitung/Steuerung des Entwicklerteams, auch inhaltlicher Kopf
der Entwicklung) nicht durch die gleiche Person abgedeckt werden.
Projektleiter und Entwicklungsleiter haben in vielen Aspekten
gegensätzliche Interessen zu vertreten. Wenn beide Rollen von
einer Person abgedeckt werden, passiert es oft, dass eine der
Rollen zum Schaden des Projektes vernachlässigt wird.
Projekt- und Entwicklungsleiter müssen eine gemeinsame Strategie
entwickeln und in ihrem Wirkungskreis umsetzen.
Siehe auch ProjectForge.
|