Post on 16-Jul-2015
Matthias Bohlen
Projekte richtig starten
Von Anfang an auf Erfolgskurs
Matthias Bohlen, unabhängiger Berater
mbohlen@mbohlen.de
http://www.mbohlen.de
Matthias Bohlen
Matthias Bohlen - Profil
• Freiberuflicher Berater
• Softwareentwicklung
• Objekttechnologie
• Komponententechnologie
• Dienstleistungsangebot
• Consulting: Architektur, Methoden
• Training: Analyse, Design, Programmierung
• Schulungen / Seminare / Workshops
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
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
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!
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!
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!
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
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
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
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!
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?
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
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!
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!
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!
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!
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
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!
Matthias Bohlen
Teamgröße
• klein beginnen, dann vergrößern
• Pattern: TeamWachsenLassen
• Pattern: NovizenLehrer
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"
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!
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"
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!
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!
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!
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!
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!
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)
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
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 2 3 F E 1 2 3 F ..... E 1 2 3 F E 1 2 3 F
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)
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"
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!
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
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!
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!
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!
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!
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!
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