Matthias Bohlen
Projekte richtig starten
Von Anfang an auf Erfolgskurs
Matthias Bohlen, unabhängiger Berater
mbohlen@mbohlen.de
http://www.mbohlen.de
Matthias Bohlen
Agenda
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
Grundlagen
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
Startvoraussetzungen
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
Erfolgsfaktoren
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 23 F E 1 23 F .....E 1 23 F E 1 23 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
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?" (su)
• 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
Zusammenfassung
Projekterfolg sicherstellen
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
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!
? ! 

Projekte richtig starten

  • 1.
    Matthias Bohlen Projekte richtigstarten Von Anfang an auf Erfolgskurs Matthias Bohlen, unabhängiger Berater mbohlen@mbohlen.de http://www.mbohlen.de
  • 2.
  • 3.
    Matthias Bohlen Matthias Bohlen- Profil • Freiberuflicher Berater • Softwareentwicklung • Objekttechnologie • Komponententechnologie • Dienstleistungsangebot • Consulting: Architektur, Methoden • Training: Analyse, Design, Programmierung • Schulungen / Seminare / Workshops
  • 4.
    Matthias Bohlen Kunden • Kleineund 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
  • 5.
  • 6.
    Matthias Bohlen Beteiligte undInteressen 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 zumErfolg • 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
  • 13.
  • 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 • EineVision, 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 • NehmenSie 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 • SorgenSie 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 • Orteder 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 undTools • 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!
  • 20.
  • 21.
    Matthias Bohlen Kommunikation undFeedback • 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 • Jegröß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 • IhrProjektteam 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!
  • 24.
    Matthias Bohlen Teamgröße • kleinbeginnen, dann vergrößern • Pattern: TeamWachsenLassen • Pattern: NovizenLehrer
  • 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 • StartenSie 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 zuNovizenLehrer • 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 getrenntv. 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 gemischtmit 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 • Beigroß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 • Risikensind 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 undEinkaufen • 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 imiterativen 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!
  • 41.
  • 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?" (su) • 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!
  • 46.
  • 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 • IhreFragen und Anregungen: • Projekterfolg durch Architekt und Coach unterstützen • Sie erreichen mich unter: <mbohlen@mbohlen.de> • Ich komme gern zu Ihnen ins Projekt! ? ! 