projekte richtig starten

48
Matthias Bohlen Projekte richtig starten Von Anfang an auf Erfolgskurs Matthias Bohlen, unabhängiger Berater [email protected] http://www.mbohlen.de

Upload: matthias-bohlen

Post on 16-Jul-2015

63 views

Category:

Business


0 download

TRANSCRIPT

Matthias Bohlen

Projekte richtig starten

Von Anfang an auf Erfolgskurs

Matthias Bohlen, unabhängiger Berater

[email protected]

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 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

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

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: <[email protected]>

• Ich komme gern zu Ihnen ins Projekt!

? !