Inhaltsverzeichnis | 6 |
Vorwort | 12 |
Danke | 14 |
1 Einführung | 16 |
1.1 Fokus dieses Buches | 17 |
1.1.1 Projekterfahrung | 17 |
1.1.2 Wem hilft dieses Buch | 18 |
1.1.3 Was dieses Buch nicht beinhaltet | 18 |
1.2 Fahrplan für das Buch | 19 |
2 Agilität und verteilte Projekte | 22 |
2.1 Verteilte Entwicklung verstehen | 22 |
2.1.1 Beteiligung mehrerer Entwicklungsstandorte | 23 |
2.1.2 Verteilte und verstreute Teams | 23 |
2.1.3 Große Projekte | 24 |
2.1.4 Beteiligung verschiedener Firmen | 25 |
2.1.5 Verschiedene Strukturen | 26 |
2.1.6 Weit entfernte Kunden | 27 |
2.1.7 Zentrale Koordinierung oder globale Integration | 27 |
2.1.8 Distanz überwinden | 28 |
2.2 Agilität verstehen | 29 |
2.2.1 Wertesystem | 29 |
2.2.2 Systemische Vorgehensweise | 30 |
2.2.3 Risikoreduzierung | 31 |
2.2.4 Agil: Nicht notwendigerweise produktiver | 32 |
2.2.5 Mehr als nur Praktiken | 32 |
2.2.6 Weder chaotisch noch undiszipliniert | 32 |
2.3 Einfluss agiler Prinzipien auf verteilte Entwicklung | 33 |
2.4 Zusammenfassung | 36 |
3 Teambildung | 38 |
3.1 Featureteams | 40 |
3.1.1 Zusammensitzende oder standortübergreifende Teams | 41 |
3.1.2 Verstreute Teams | 43 |
3.1.3 Ein Team formen | 44 |
3.2 Rollen | 47 |
3.2.1 Konstellation eines Featureteams | 47 |
3.2.2 Architekt und Chefarchitekt | 49 |
3.2.3 Coach | 53 |
3.2.4 Product Owner oder Produktmanager | 55 |
3.2.5 Projektleiter | 58 |
3.2.6 Schlüsselrollen sitzen mit ihren Teams zusammen | 59 |
3.3 Konzeptionelle Integrität sicherstellen | 60 |
3.3.1 Startteam hat Vorbildfunktion | 60 |
3.3.2 Technisches Serviceteam | 60 |
3.4 Zusammenfassung | 61 |
4 Kommunikation und Vertrauen | 64 |
4.1 Vertrauen und gegenseitiger Respekt | 65 |
4.1.1 Grenzwert für vertrauensvolle Beziehungen | 66 |
4.1.2 Wechselnde Treffpunkte | 67 |
4.1.3 Vokabular | 67 |
4.2 Kommunikation | 69 |
4.2.1 Persönliche Teammeetings | 69 |
4.2.2 Persönliche Projektmeetings | 70 |
4.2.3 Mitarbeiterrotation | 71 |
4.2.4 Kommunikation hat ihren Preis | 71 |
4.2.5 Kenntnis des Kommunikationsflusses | 72 |
4.3 Kulturelle Unterschiede | 73 |
4.3.1 Fokus auf Gemeinsamkeiten | 74 |
4.3.2 Gestaltung einer Kultur | 75 |
4.3.3 Realistische Planung | 77 |
4.3.4 Verantwortung übernehmen | 77 |
4.3.5 Probleme ansprechen | 78 |
4.3.6 Ehrliches Feedback geben | 79 |
4.3.7 Lärm | 80 |
4.3.8 Humor | 81 |
4.3.9 Sorgfältige Auswahl der Kommunikationsmedien | 81 |
4.4 Zusammenfassung | 83 |
5 Standorte in Verbindung halten | 84 |
5.1 Kommunikationsvermittler | 85 |
5.1.1 Kommunikationsvermittler als Vertrauensperson | 86 |
5.1.2 Kompetenzen eines Kommunikationsvermittlers | 86 |
5.1.3 Management durch Herumfliegen | 86 |
5.2 Botschafter | 87 |
5.2.1 Standorte repräsentieren | 88 |
5.2.2 Eigenschaften und Kompetenzen eines Botschafters | 89 |
5.2.3 Terminplan | 90 |
5.2.4 Konkrete Aufgaben | 90 |
5.3 Soziale Verbindungen | 91 |
5.3.1 Gemeinsam feiern | 91 |
5.3.2 Die Kraft der Bilder | 91 |
5.3.3 Am Leben der anderen teilhaben | 92 |
5.3.4 Reisen angenehmer machen | 92 |
5.4 Werkzeuge | 93 |
5.4.1 Direkte Verbindungen | 93 |
5.4.2 Synchron versus asynchron | 94 |
5.4.3 Audio oder Video | 95 |
5.4.4 Instant Messaging | 96 |
5.4.5 E-Mail | 97 |
5.4.6 Virtueller Raum | 98 |
5.4.7 Gemeinsames Repository | 98 |
5.4.8 Wiki und andere Kollaborationsplattformen | 98 |
5.5 Zusammenfassung | 100 |
6 Entwickeln und Ausliefern | 102 |
6.1 Iterationen | 103 |
6.1.1 Iterationslänge | 103 |
6.1.2 Das Konzept von done-done | 104 |
6.1.3 Iterationen als Herzschlag | 105 |
6.1.4 Verzögern der Auslieferung | 105 |
6.2 Release | 107 |
6.2.1 Release-Iteration | 107 |
6.2.2 Releasestandort | 108 |
6.3 Integration und Build | 108 |
6.3.1 Lokal funktionierende Integration | 109 |
6.3.2 Integration erfordert Aufwand | 109 |
6.3.3 Ein fehlgeschlagener Build stoppt die Produktion | 111 |
6.3.4 Integration als Herz des Projekts | 112 |
6.4 Infrastruktur | 113 |
6.4.1 Prozesse und Werkzeuge für Integration und Build | 113 |
6.4.2 Konfigurationsmanagement | 115 |
6.4.3 Strom | 118 |
6.4.4 Netzwerk | 118 |
6.4.5 Sicherheit | 119 |
6.4.6 Werkzeuge | 120 |
6.5 Zusammenfassung | 120 |
7 Der Geschäftswert ist das Ziel | 122 |
7.1 Steuerung mithilfe wertvoller Funktionalitäten | 122 |
7.1.1 Verbindung zum realen Kunden | 123 |
7.1.2 Iterationsvorbereitung | 125 |
7.1.3 Anforderungen verstehen | 127 |
7.1.4 Benötigte Dokumentation als Anforderung behandeln | 128 |
7.2 Teamgeschwindigkeit | 129 |
7.2.1 Mit unbekannter Teamgeschwindigkeit planen | 129 |
7.2.2 Schätzeinheit | 131 |
7.2.3 Planungspoker | 132 |
7.2.4 Unterschiedliche Teamgeschwindigkeiten | 135 |
7.3 Iterationsplanung | 136 |
7.3.1 Featureteams planen individuell | 136 |
7.3.2 Planungstreffen | 137 |
7.3.3 Termin für das Planungstreffen | 138 |
7.3.4 Handfeste Planungswerkzeuge | 139 |
7.4 Iterationsverfolgung | 140 |
7.4.1 Planungs- und Nachverfolgungswerkzeuge | 140 |
7.4.2 Ziele im Fokus behalten | 141 |
7.5 Umgang mit Änderungen | 143 |
7.5.1 Die Iterationslänge bestimmt das Antwortzeitverhalten | 144 |
7.5.2 Mit Änderungswünschen umgehen | 144 |
7.5.3 Die Teamstruktur verändern | 145 |
7.6 Projektplan | 146 |
7.6.1 Releaseplanung | 146 |
7.6.2 Prognosen | 148 |
7.6.3 Release versus Meilenstein | 149 |
7.7 Zusammenfassung | 150 |
8 Feedback | 152 |
8.1 Den Kunden involvieren | 153 |
8.1.1 Wer ist der Kunde? | 153 |
8.1.2 Kunde auf Distanz | 154 |
8.1.3 Kundenpräsentation | 155 |
8.2 Rückblick | 155 |
8.2.1 Iterationsrückblick | 156 |
8.2.2 Rückblick - verteilt individuell versus gemeinsam persönlich | 156 |
8.2.3 Releaserückblick | 158 |
8.3 Retrospektive | 159 |
8.3.1 Individuelle Featureteamretrospektive | 161 |
8.3.2 Gemeinsame Projektteamretrospektive | 162 |
8.3.3 Gemeinsame Standortretrospektive | 164 |
8.3.4 Durchführung einer Retrospektive | 164 |
8.3.5 Virtuelle Retrospektive | 165 |
8.3.6 Teilnehmer | 167 |
8.3.7 Weniger ist mehr und andere Tricks | 168 |
8.3.8 Gegen die Langeweile - Moderationstechniken | 169 |
8.4 Metriken | 172 |
8.4.1 Fortschritt messen | 173 |
8.4.2 Schätzqualität messen | 175 |
8.4.3 Testbasis vergrößern | 176 |
8.5 Zusammenfassung | 176 |
9 Praktiken | 178 |
9.1 Entwicklungspraktiken | 178 |
9.1.1 Paarweises Programmieren | 179 |
9.1.2 Unit Test | 181 |
9.1.3 Refactoring | 181 |
9.1.4 Gemeinsame Verantwortlichkeit | 186 |
9.1.5 Gemeinsame Programmierrichtlinien | 186 |
9.1.6 Features durch Tests übermitteln | 187 |
9.1.7 Mühe mit Praktiken von der Stange | 191 |
9.2 Prozesspraktiken | 192 |
9.2.1 Tägliche Synchronisation | 192 |
9.2.2 Projektweite Synchronisation | 193 |
9.2.3 Verstreute Synchronisation | 195 |
9.3 Entwicklungskultur | 200 |
9.3.1 Gemeinsame Praktiken erfassen | 200 |
9.3.2 Vereinbarte Praktiken ändern | 201 |
9.3.3 Unterschiedliche Entwicklungskulturen | 202 |
9.3.4 Standortübergreifend den Prozess mit CMMI oder ISO harmonisieren | 203 |
9.3.5 Gleiches Recht für alle | 205 |
9.4 Zusammenfassung | 206 |
10 Agilität in ein verteiltes Projekt einführen | 208 |
10.1 Lokal beginnen - global wachsen | 209 |
10.1.1 Projektstart | 210 |
10.1.2 Frühzeitige Iterationen | 211 |
10.1.3 Ein Team - wechselnde Standorte | 212 |
10.2 Teams und Standorte vergrößern | 213 |
10.2.1 Projektstart in der Timebox | 214 |
10.2.2 Kick-off | 214 |
10.2.3 Die Projektkultur verbreiten | 216 |
10.2.4 Kulturelles Training | 216 |
10.2.5 Neue Mitarbeiter integrieren | 218 |
10.3 Einen agilen Prozess in ein existierendes Projekt einführen | 218 |
10.3.1 Einer nach dem anderen oder alle auf einmal | 219 |
10.3.2 Veränderung der Teamstruktur | 219 |
10.3.3 Mehr und bessere Coachs sind vonnöten | 220 |
10.3.4 Schätzungen und Geschwindigkeit | 221 |
10.3.5 Einzelkämpfer | 222 |
10.4 Zusammenfassung | 223 |
Nachwort | 224 |
Glossar | 226 |
Referenzen | 230 |
Index | 236 |