Ob ein Softwareprojekt erfolgreich wird oder nicht, entscheidet sich schon fast am Projektanfang. Definition von Projektumfang und Endtermin, zusammen mit der ausgewählten Teamgröße, können das Projekt bereits in Richtung Erfolg oder Misserfolg ausrichten. Sie lernen im Vortrag “Best Practices” für einen guten Projektstart kennen und erfahren die Erfolgsfaktoren, um ein Gewinnerteam zu formen.
1. Matthias Bohlen
Projekte richtig starten
Von Anfang an auf Erfolgskurs
Matthias Bohlen, unabhängiger Berater
mbohlen@mbohlen.de
http://www.mbohlen.de
4. Matthias Bohlen
Kunden
• Kleine und große Unternehmen
• Teams zwischen 7 und 70 Leuten
• Starten Softwareprojekte
• mit neuen oder unbekannten Technologien
• mit unklaren Methoden oder Prozessen
• mit engen Terminvorgaben
• mit sich schnell ändernden Anforderungen
• ohne Architektur bzw. „Bauplan“
• Insgesamt: hoher Beratungsbedarf
6. Matthias Bohlen
Beteiligte und Interessen
Kunden Chefs Entwickler Benutzer Wartungs-
personal
• Kurze
Realisie-
rungszeit
• Geringe
Kosten
• Alles im Plan!
• Keine Über-
raschungen
• Erfolgreiches
Projekt
• Interessante
Arbeit
• Erforschen
neuer Gebiete
• Stressarmes
Arbeiten
• Leben zu
Hause
• Viele Features
• Benutzer-
freundlichkeit
• Schnelle,
robuste
Software
• Null Fehler
• Gute Dokumen-
tation
• Leichte
Änderbarkeit
Nach Steve McConnell: Rapid Development
7. Matthias Bohlen
Erfolgreiche Projekte
• Wann ist ein Projekt erfolgreich?
• Erfolg ist eine Kombination aus…
• Das Projekt produziert ein werthaltiges Ergebnis
(sprich: lauffähiges System und Dokumentation)
• Alle Beteiligten sind zufrieden und möchten am
liebsten sofort zusammen das nächste Projekt
angehen!
8. Matthias Bohlen
Weg zum Erfolg
• Balancieren Sie die Kräfte aus, die aus den
Interessen der Beteiligten entstehen
• Machen Sie aus jedem Beteiligten einen
Gewinner!
9. Matthias Bohlen
Projektdefinition: Kräfte (1)
• Projektverlauf = f(s, u, t, q)
• s = Teamgröße
• u = Funktionsumfang
• t = Zeit bzw. Termin
• q = Qualität
• Vier Parameter, die sich gegenseitig nicht-
linear, zeitverzögert beeinflussen!
10. Matthias Bohlen
Projektdefinition: Kräfte (2)
• Umfang beeinflusst Zeit
• Je mehr Features zu realisieren sind, desto mehr
Zeit wird benötigt
• Koppelnde Größe: "Schlagzahl" des Teams
• Zeit beeinflusst Qualität
• Zu knapp gesetzte Zeit: Fehler und Workarounds
• Zu großzügig gesetzte Zeit: "Goldene Lösungen", die
teuer, komplex oder überflüssig sind
11. Matthias Bohlen
Projektdefinition: Kräfte (3)
• Qualität beeinflusst Teamgröße
• Gute Leute wollen gute Arbeit abliefern
• Leute werden kündigen, wenn die Qualität zu
schlecht wird
• Zeit beeinflusst Teamgröße
• Zeit zu knapp Entwickler gestresst
• Leute werden kündigen, wenn sie zu sehr gestresst
werden
12. Matthias Bohlen
Projektdefinition: Kräfte (4)
• Qualität beeinflusst Zeit
• Je schlechter die Qualität, desto höher der
Zusatzaufwand bei Änderungen
• Workarounds machen das Entwicklerteam langsamer
• Bei schlechter Qualität wird mehr Zeit benötigt
14. Matthias Bohlen
Menschen
• Qualifikation: Sie brauchen gute Leute!
• Pragmatisch und lösungsbezogen arbeitend
• Disziplin und Sportsgeist sind essenziell
• Führungsqualitäten bei den Managern
• Entschlossenheit und Teamgeist bei allen
• Und: Ohne den Kunden wird alles nix!
15. Matthias Bohlen
Ziel
• Eine Vision, die zieht!
• Jeder muss wissen, wo er steht und wo es hingeht
• Begeistert auf das gezeigte Ziel hinarbeiten
• Business-Case
• Geldgeber wollen Geld verdienen
• Zeigen Sie ihnen, wie das Geld fließt!
• Ziele
• genau beschrieben: was wollen wir?
• abgegrenzt: was wollen wir eben nicht?
16. Matthias Bohlen
Geld
• Nehmen Sie das Geld ohne zu zögern
• Zeigen Sie, was Sie damit tun wollen
• Planen Sie häufige Releases, um weiteres
Budget zu motivieren
17. Matthias Bohlen
Zeit
• Sorgen Sie für angemessene Zeit für das Projekt
• Zu wenig?
• verlangen Sie mehr oder…
• schränken Sie den Funktionsumfang ein
• Zu reichlich?
• Gehen Sie sorgsam damit um
• Verhindern Sie "vergoldete" Lösungen
• Genießen Sie die überzählige Zeit, um Qualität zu
produzieren!
18. Matthias Bohlen
Ort
• Orte der Kommunikation
• Im selben Zimmer ist optimal
• Über den Flur ist schon schlechter
• Ins nächste Stockwerk oder Haus? Vergessen Sie's!
• Schaffen Sie "Attraktoren", z.B. Espressomaschine!
• Geographie beeinflusst Architektur
• In zwei Städten dasselbe System entwickeln?
• Bauen Sie lieber zwei Systeme und koppeln Sie über
definierte Schnittstellen!
19. Matthias Bohlen
Technologien und Tools
• Nehmen Sie Technik, die Sie beherrschen!
• Planen Sie Zeit für das reine Aufsetzen der
Technik ein!
• Verlangen Sie Infrastruktur als Service
• neue Rechner installieren sollte nicht Ihr Job sein
• Sie legen nicht die Schienen, sondern bauen den
Zug, der darauf fahren soll!
21. Matthias Bohlen
Kommunikation und Feedback
• Das System richtig entwickeln ist eine Sache…
• Das richtige System entwickeln eine andere!
• Sprechen Sie mit dem Kunden!
• Fragen Sie ihn oft genug:
"Ist es das, was Du wolltest?"
• Holen Sie Feedback ein, sooft Sie können
• "Kunde vor Ort" ist ein Erfolgsmuster!
22. Matthias Bohlen
Architektur
• Je größer das Produkt und das Team, desto
wichtiger ist die Architektur
• Ein Gartenhaus schafft man mit 4 Leuten an einem
Wochenende, ohne großen Bauplan
• Ein Hotel schafft man nur mit vielen Leuten und
einem sehr guten Bauplan
• Machen Sie Baupläne nicht im Kämmerlein!
• Prototypen zur Verifikation
• ständige Verbesserung durch Feedback aus der
Entwicklung
23. Matthias Bohlen
Zulieferer
• Ihr Projektteam ist auf Zulieferungen aus
anderen Projekten (z.B. Frameworks)
angewiesen?
• Managen Sie Erwartungen von Anfang an!
• Sagen Sie den anderen Projekten, was Sie wollen:
"Dieses Jahr werden wir voraussichtlich mit 30 nicht-
trivialen Change Requests auf Euch zukommen.
Könntet Ihr das im Frameworkteam bitte einplanen?"
• Messen und verfolgen Sie ständig die Performance
der Zulieferprojekte – reagieren Sie vorausschauend!
25. Matthias Bohlen
Pattern: TeamWachsenLassen
• Problem
• Ermitteln der richtigen
Teamgröße
• Kontexte
• Softwareprojekt, das
gerade startet
• Softwareprojekt, das
schon eine Weile
unterwegs ist
• Kräfte
• Anforderungen und
Design anfangs unklar
Entwickler sitzen
herum, also wenig
Leute benötigt!
• Viele Features in
kurzer Zeit mehr
Leute benötigt!
Nach Jim Coplien: "SizeTheOrganization"
26. Matthias Bohlen
TeamWachsenLassen
• Starten Sie mit ein paar Experten
• Domänenwissen und Analysemethodik
• Architektur- und Designwissen
• Wenige, exzellente "Prototyper"
• Experten stellen Größe und Komplexität des
Projektes / Produktes fest
• Nutzen Sie danach dieses Wissen und planen
Sie sofort Wachstumsphasen im Projekt ein!
27. Matthias Bohlen
Pattern: NovizenLehrer
• Problem
• Experten sollen
Novizen unterrichten
und trotzdem zum
Projekt beitragen
• Kontext
• Softwareteam, in
Wachstum und
Reorganisation
begriffen
• Kräfte
• Experten allein sind zu
wenig, um das System zu
entwickeln
• Produktivitätszuwachs
durch neue Leute
erforderlich
• Produktiv.-Minderung
durch Unterricht ist aber
schmerzhaft
Nach Jim Coplien: "DayCare"
28. Matthias Bohlen
Lösung zu NovizenLehrer
• Halten Sie die Novizen raus
aus dem Expertenteam
• Stellen Sie einen Experten für die Novizen ab
und lassen Sie die anderen in Ruhe das
System weiterentwickeln
• Das ist besser als Experten und Novizen
gleichmäßig zu mischen!
29. Matthias Bohlen
Woran liegt's?
• Ein bisschen Mathematik
• Annahme: Ein Experte hat normalerweise eine
Performance von 1.
• Unterrichtet er einen Novizen, so fällt seine
Produktivität auf ½, bei zwei Novizen auf 1/3,
bei dreien auf ¼, bei m auf 1/(m+1).
• Wie sieht also die Team-Performance aus,
wenn Novizen hereinkommen?
skip!
30. Matthias Bohlen
Experten getrennt v. Novizen
• X Experten
• schaffen normalerweise X*1 = X
• N Novizen
• jeder schafft n mit n<<1, z.B. n=1/10
• Ein Experte abgestellt für die Novizen
• Team-Performance nur noch
TP = (X-1) + N*n
Beispiel: X=5, N=10, n=0,1
TP = (5-1)+10*0,1 = 5 skip!
31. Matthias Bohlen
Experten gemischt mit Nov.
• Die Performance jedes Experten geht zurück
auf 1/(m+1), wobei m die Anzahl der
Novizen pro Experte ist
• also m = N / X
• Team-Performance ist also jetzt
• TP = X / ( N/X + 1 ) + N*n
Beispiel: X=5, N=10, n=0,1
TP = 5 / (2+1) + 10*0,1 = 2,7
skip!
32. Matthias Bohlen
Vorgaben
• Bei großem Projekt: Kernteam aufsetzen, das
Vorstudien macht, daraus Vorgaben entwickelt
und dem Rest des Teams bekanntmacht
• Einspareffekt: Nicht alle müssen dieselben Fehler
noch einmal machen!
• Nur so viel Vorgaben wie nötig
• Architekt als Koordinator
• immer sofort dem werdenden Chaos anpassen,
ehe es überhand nimmt!
33. Matthias Bohlen
Risikomanagement
• Risiken sind normal! Managen Sie sie!
• Fehler im Application Server
• Animositäten im Team
• Jemand wird krank
• Festplatte des CVS-Servers crasht
• Aufgaben werden unterschätzt
• Neuer Vorstand kommt
• Zulieferer gerät in Verzug, etc. etc.
• Erstellen und pflegen Sie eine Risikoliste!
(Liste mit Risiken und Gegenmaßnahmen)
34. Matthias Bohlen
Iteratives Vorgehen
• Starten Sie mit dem einfachsten, was
möglicherweise funktioniert – bauen Sie dann
langsam aus
• Besetzen Sie die Rollen genau
• Planen Sie iterativ
• Pattern: ZeitplanAushandeln
35. Matthias Bohlen
Planen und Einkaufen
• Kaufen Sie Lebensmittel ...
• Für ein ganzes Jahr im Voraus?
Einkaufen Woche-1 Woche-... Woche-52
Feedback
(Inventur)
.....
... oder für die folgende Woche?
E 1 23 F E 1 23 F .....E 1 23 F E 1 23 F
36. Matthias Bohlen
Rollen im iterativen Vorgehen
• Kunde
• am besten Fachleute, sonst Projektleiter oder QS als Proxy
• trifft Geschäftsentscheidung („dies ist wichtiger als jenes“)
• Coach
• Unterstützt (Entwicklungs-)Team bei Entscheidungen
• Methodische Führung
• Unterstützung beim (technischen) Risikomanagement
• Entwickler
• Bewerten Features nach Risiko und Umfang
• trifft technische Entscheidungen
• Projektleiter
• Bleiben zentrale Ansprechpartner des echten Kunden und des
Managements
• QS
• Unterstützt bei übergreifenden Tests (Systemtests)
37. Matthias Bohlen
Pattern: ZeitplanAushandeln
• Problem
• Aushandeln eines
Zeitplans, dem alle
zustimmen können
• Kontext
• Softwareprojekt, das
gerade startet
• Thema verstanden
• Umfang ungefähr
definiert
• Kräfte
• Kunde: Schnell
realisieren,
geringe Kosten
• Benutzer: Viele Features
• Entwickler: Stressarmes,
interessantes Arbeiten
Nach Jim Coplien: "SizeTheSchedule"
38. Matthias Bohlen
Lösung: ZeitplanAushandeln
• Qualität q ganz hoch halten
• Termin(e) t festsetzen
• Teamgröße s als gegeben annehmen
• Umfang u anpassen
• Alle paar Wochen:
• Verhältnis u,s,t überdenken!
Schlagzahl des Teams ist eine gute
Rechengrundlage für u-Anpassung!
39. Matthias Bohlen
ZeitplanAushandeln
• Voraussetzungen
• Vertrauensverhältnis zwischen Kunde und
Entwicklungsorganisation
• Wichtigsten Teil des Umfangs in den ersten
Iterationen realisieren
• Kunde wird Umfangsanpassung eher für
möglich halten als Vertröstung auf
imaginären Folgetermin
40. Matthias Bohlen
Anforderungsmanagement
• User-Interviews
• Sprechen Sie mit den tatsächlichen Anwendern
• Spezifikation
• Schreiben Sie die Anforderungen strukturiert auf
• Schöne Vorlage: VOLERE-Template
(Atlantic Systems Guild)
• Demo-Prototyp
• Verifizieren Sie damit, ob alles auch so gemeint war
• Änderungen
• Konsequent managen, nicht einfach einbauen!
42. Matthias Bohlen
Gegenwind aushalten (1)
• Analyse-Paralyse
• Problem: Das Team hört nicht auf, zu analysieren
• Lösung: Entwickeln, sobald genug Informationen für
eine erste Lösung vorliegen! Danach: Lernen!
• Meetings über Meetings
• Gehen Sie sparsam damit um – werfen Sie am Anfang
des Meetings möglichst viele Teilnehmer hinaus
• Überdenken Sie alle regelmäßigen Meetings
• Toolprobleme
• Vermeiden Sie komplexe Tools – nehmen Sie die, die
Ihr Team versteht!
43. Matthias Bohlen
Gegenwind aushalten (2)
• Politik
• Manager: Haltet alles Politische vom Team fern!
Lasst die Leute arbeiten!
• Unentschlossener Kunde
• Durch frühestmögliche Prototypen zur Entscheidung
motivieren
• Plötzliche, "fremde" Termine
• Manager: Stellen Sie eine Person ab, die sich um
solch einen Termin kümmert – lassen Sie das Team
ungehindert weiterarbeiten!
44. Matthias Bohlen
Gegenwind aushalten (3)
• Budget-Einschränkungen
• Fragen Sie den Kunden: "Welche zu entwickelnden
Features sind entbehrlich, so dass der neue
Budgetrahmen eingehalten werden kann?" (su)
• Umzug
• So wenige wie möglich, doch so viele wie nötig
• Ziehen Sie um, wenn die örtliche Verteilung nicht
mehr zu den Kommunikationsbedürfnissen passt!
45. Matthias Bohlen
Gegenwind aushalten (4)
• Technologiewechsel
• Ist immer ein Risiko – prototypen Sie!
• Kapseln Sie Technologien in separaten
Architekturschichten
• Verwenden Sie MDA, um Technologie und Fachlogik
zu trennen
• Betriebliche Umorganisation
• Teamname, Vorgesetzter, Abteilungsstruktur – alles
kann sich ändern
• Manager: Achtet darauf, dass Euer Team die
Identität behält!
47. Matthias Bohlen
Projekterfolg sicherstellen
• Früh anfangen
• Grundvoraussetzungen schaffen
• Nicht warten, bis alles feststeht!
• Mit kleinem Team mutig starten
• Ständig dazulernen
• Beschlüsse so spät wie möglich fassen
• auf Basis gesicherter Informationen
• Früh und häufig ausliefern
• hält den Kunden bei der Stange
Nach Mary Poppendieck: Lean Development and the Predictability Paradox
48. Matthias Bohlen
Diskussion
• Ihre Fragen und Anregungen:
• Projekterfolg durch Architekt und Coach
unterstützen
• Sie erreichen mich unter: <mbohlen@mbohlen.de>
• Ich komme gern zu Ihnen ins Projekt!
? !