Heute werden viele Softwareprojekte unter Zuhilfenahme von Outsourcing, Offshoring oder einer sonstigen Form von Verteilung durchgeführt. Dies ist stets mit einer Distanz zwischen den Projektmitarbeitern verbunden, die sich auf Raum, Zeit, Kultur, Sprache oder Politik beziehen kann. Ein weiterer Trend wird immer deutlicher: der Aufschwung der agilen Softwareentwicklung. Dieses Buch zeigt, wie auch bei verteilten Projekten erfolgreich agil gearbeitet werden kann. Es richtet sich an Entwickler und Manager, die auch in einer verteilten Umgebung die Vorteile agiler Entwicklung nutzen möchten.
Jutta Eckstein ist Beraterin und Trainerin für agile Softwareentwicklung, Kommunikations-Managerin sowie Partner von IT Communications. Ihr Wissen über agile Prozesse basiert auf mehr als zehn Jahre langer Erfahrung bei der Entwicklung objektorientierter Anwendungen. In Projekten mit bis zu 300 Personen lag ihr Schwerpunkt auf der Einführung und Umsetzung angemessener (agiler) Prozesse. Sie ist Mitglied der Agile Alliance und unterstützt das Agile Manifest. Sie hält Seminare und ist Vortragende auf mehreren Konferenzen (z.B. OOP, Jax). Mehr Informationen findet man unter www.jeckstein.de oder http://www.it-communication.de.
Sprache
Verlagsort
Dateigröße
ISBN-13
978-3-86491-083-8 (9783864910838)
Schweitzer Klassifikation
1 - Inhaltsverzeichnis [Seite 6]
2 - Vorwort [Seite 12]
3 - Danke [Seite 14]
4 - 1 Einführung [Seite 16]
4.1 - 1.1 Fokus dieses Buches [Seite 17]
4.1.1 - 1.1.1 Projekterfahrung [Seite 17]
4.1.2 - 1.1.2 Wem hilft dieses Buch [Seite 18]
4.1.3 - 1.1.3 Was dieses Buch nicht beinhaltet [Seite 18]
4.2 - 1.2 Fahrplan für das Buch [Seite 19]
5 - 2 Agilität und verteilte Projekte [Seite 22]
5.1 - 2.1 Verteilte Entwicklung verstehen [Seite 22]
5.1.1 - 2.1.1 Beteiligung mehrerer Entwicklungsstandorte [Seite 23]
5.1.2 - 2.1.2 Verteilte und verstreute Teams [Seite 23]
5.1.3 - 2.1.3 Große Projekte [Seite 24]
5.1.4 - 2.1.4 Beteiligung verschiedener Firmen [Seite 25]
5.1.5 - 2.1.5 Verschiedene Strukturen [Seite 26]
5.1.6 - 2.1.6 Weit entfernte Kunden [Seite 27]
5.1.7 - 2.1.7 Zentrale Koordinierung oder globale Integration [Seite 27]
5.1.8 - 2.1.8 Distanz überwinden [Seite 28]
5.2 - 2.2 Agilität verstehen [Seite 29]
5.2.1 - 2.2.1 Wertesystem [Seite 29]
5.2.2 - 2.2.2 Systemische Vorgehensweise [Seite 30]
5.2.3 - 2.2.3 Risikoreduzierung [Seite 31]
5.2.4 - 2.2.4 Agil: Nicht notwendigerweise produktiver [Seite 32]
5.2.5 - 2.2.5 Mehr als nur Praktiken [Seite 32]
5.2.6 - 2.2.6 Weder chaotisch noch undiszipliniert [Seite 32]
5.3 - 2.3 Einfluss agiler Prinzipien auf verteilte Entwicklung [Seite 33]
5.4 - 2.4 Zusammenfassung [Seite 36]
6 - 3 Teambildung [Seite 38]
6.1 - 3.1 Featureteams [Seite 40]
6.1.1 - 3.1.1 Zusammensitzende oder standortübergreifende Teams [Seite 41]
6.1.2 - 3.1.2 Verstreute Teams [Seite 43]
6.1.3 - 3.1.3 Ein Team formen [Seite 44]
6.2 - 3.2 Rollen [Seite 47]
6.2.1 - 3.2.1 Konstellation eines Featureteams [Seite 47]
6.2.2 - 3.2.2 Architekt und Chefarchitekt [Seite 49]
6.2.3 - 3.2.3 Coach [Seite 53]
6.2.4 - 3.2.4 Product Owner oder Produktmanager [Seite 55]
6.2.5 - 3.2.5 Projektleiter [Seite 58]
6.2.6 - 3.2.6 Schlüsselrollen sitzen mit ihren Teams zusammen [Seite 59]
6.3 - 3.3 Konzeptionelle Integrität sicherstellen [Seite 60]
6.3.1 - 3.3.1 Startteam hat Vorbildfunktion [Seite 60]
6.3.2 - 3.3.2 Technisches Serviceteam [Seite 60]
6.4 - 3.4 Zusammenfassung [Seite 61]
7 - 4 Kommunikation und Vertrauen [Seite 64]
7.1 - 4.1 Vertrauen und gegenseitiger Respekt [Seite 65]
7.1.1 - 4.1.1 Grenzwert für vertrauensvolle Beziehungen [Seite 66]
7.1.2 - 4.1.2 Wechselnde Treffpunkte [Seite 67]
7.1.3 - 4.1.3 Vokabular [Seite 67]
7.2 - 4.2 Kommunikation [Seite 69]
7.2.1 - 4.2.1 Persönliche Teammeetings [Seite 69]
7.2.2 - 4.2.2 Persönliche Projektmeetings [Seite 70]
7.2.3 - 4.2.3 Mitarbeiterrotation [Seite 71]
7.2.4 - 4.2.4 Kommunikation hat ihren Preis [Seite 71]
7.2.5 - 4.2.5 Kenntnis des Kommunikationsflusses [Seite 72]
7.3 - 4.3 Kulturelle Unterschiede [Seite 73]
7.3.1 - 4.3.1 Fokus auf Gemeinsamkeiten [Seite 74]
7.3.2 - 4.3.2 Gestaltung einer Kultur [Seite 75]
7.3.3 - 4.3.3 Realistische Planung [Seite 77]
7.3.4 - 4.3.4 Verantwortung übernehmen [Seite 77]
7.3.5 - 4.3.5 Probleme ansprechen [Seite 78]
7.3.6 - 4.3.6 Ehrliches Feedback geben [Seite 79]
7.3.7 - 4.3.7 Lärm [Seite 80]
7.3.8 - 4.3.8 Humor [Seite 81]
7.3.9 - 4.3.9 Sorgfältige Auswahl der Kommunikationsmedien [Seite 81]
7.4 - 4.4 Zusammenfassung [Seite 83]
8 - 5 Standorte in Verbindung halten [Seite 84]
8.1 - 5.1 Kommunikationsvermittler [Seite 85]
8.1.1 - 5.1.1 Kommunikationsvermittler als Vertrauensperson [Seite 86]
8.1.2 - 5.1.2 Kompetenzen eines Kommunikationsvermittlers [Seite 86]
8.1.3 - 5.1.3 Management durch Herumfliegen [Seite 86]
8.2 - 5.2 Botschafter [Seite 87]
8.2.1 - 5.2.1 Standorte repräsentieren [Seite 88]
8.2.2 - 5.2.2 Eigenschaften und Kompetenzen eines Botschafters [Seite 89]
8.2.3 - 5.2.3 Terminplan [Seite 90]
8.2.4 - 5.2.4 Konkrete Aufgaben [Seite 90]
8.3 - 5.3 Soziale Verbindungen [Seite 91]
8.3.1 - 5.3.1 Gemeinsam feiern [Seite 91]
8.3.2 - 5.3.2 Die Kraft der Bilder [Seite 91]
8.3.3 - 5.3.3 Am Leben der anderen teilhaben [Seite 92]
8.3.4 - 5.3.4 Reisen angenehmer machen [Seite 92]
8.4 - 5.4 Werkzeuge [Seite 93]
8.4.1 - 5.4.1 Direkte Verbindungen [Seite 93]
8.4.2 - 5.4.2 Synchron versus asynchron [Seite 94]
8.4.3 - 5.4.3 Audio oder Video [Seite 95]
8.4.4 - 5.4.4 Instant Messaging [Seite 96]
8.4.5 - 5.4.5 E-Mail [Seite 97]
8.4.6 - 5.4.6 Virtueller Raum [Seite 98]
8.4.7 - 5.4.7 Gemeinsames Repository [Seite 98]
8.4.8 - 5.4.8 Wiki und andere Kollaborationsplattformen [Seite 98]
8.5 - 5.5 Zusammenfassung [Seite 100]
9 - 6 Entwickeln und Ausliefern [Seite 102]
9.1 - 6.1 Iterationen [Seite 103]
9.1.1 - 6.1.1 Iterationslänge [Seite 103]
9.1.2 - 6.1.2 Das Konzept von done-done [Seite 104]
9.1.3 - 6.1.3 Iterationen als Herzschlag [Seite 105]
9.1.4 - 6.1.4 Verzögern der Auslieferung [Seite 105]
9.2 - 6.2 Release [Seite 107]
9.2.1 - 6.2.1 Release-Iteration [Seite 107]
9.2.2 - 6.2.2 Releasestandort [Seite 108]
9.3 - 6.3 Integration und Build [Seite 108]
9.3.1 - 6.3.1 Lokal funktionierende Integration [Seite 109]
9.3.2 - 6.3.2 Integration erfordert Aufwand [Seite 109]
9.3.3 - 6.3.3 Ein fehlgeschlagener Build stoppt die Produktion [Seite 111]
9.3.4 - 6.3.4 Integration als Herz des Projekts [Seite 112]
9.4 - 6.4 Infrastruktur [Seite 113]
9.4.1 - 6.4.1 Prozesse und Werkzeuge für Integration und Build [Seite 113]
9.4.2 - 6.4.2 Konfigurationsmanagement [Seite 115]
9.4.3 - 6.4.3 Strom [Seite 118]
9.4.4 - 6.4.4 Netzwerk [Seite 118]
9.4.5 - 6.4.5 Sicherheit [Seite 119]
9.4.6 - 6.4.6 Werkzeuge [Seite 120]
9.5 - 6.5 Zusammenfassung [Seite 120]
10 - 7 Der Geschäftswert ist das Ziel [Seite 122]
10.1 - 7.1 Steuerung mithilfe wertvoller Funktionalitäten [Seite 122]
10.1.1 - 7.1.1 Verbindung zum realen Kunden [Seite 123]
10.1.2 - 7.1.2 Iterationsvorbereitung [Seite 125]
10.1.3 - 7.1.3 Anforderungen verstehen [Seite 127]
10.1.4 - 7.1.4 Benötigte Dokumentation als Anforderung behandeln [Seite 128]
10.2 - 7.2 Teamgeschwindigkeit [Seite 129]
10.2.1 - 7.2.1 Mit unbekannter Teamgeschwindigkeit planen [Seite 129]
10.2.2 - 7.2.2 Schätzeinheit [Seite 131]
10.2.3 - 7.2.3 Planungspoker [Seite 132]
10.2.4 - 7.2.4 Unterschiedliche Teamgeschwindigkeiten [Seite 135]
10.3 - 7.3 Iterationsplanung [Seite 136]
10.3.1 - 7.3.1 Featureteams planen individuell [Seite 136]
10.3.2 - 7.3.2 Planungstreffen [Seite 137]
10.3.3 - 7.3.3 Termin für das Planungstreffen [Seite 138]
10.3.4 - 7.3.4 Handfeste Planungswerkzeuge [Seite 139]
10.4 - 7.4 Iterationsverfolgung [Seite 140]
10.4.1 - 7.4.1 Planungs- und Nachverfolgungswerkzeuge [Seite 140]
10.4.2 - 7.4.2 Ziele im Fokus behalten [Seite 141]
10.5 - 7.5 Umgang mit Änderungen [Seite 143]
10.5.1 - 7.5.1 Die Iterationslänge bestimmt das Antwortzeitverhalten [Seite 144]
10.5.2 - 7.5.2 Mit Änderungswünschen umgehen [Seite 144]
10.5.3 - 7.5.3 Die Teamstruktur verändern [Seite 145]
10.6 - 7.6 Projektplan [Seite 146]
10.6.1 - 7.6.1 Releaseplanung [Seite 146]
10.6.2 - 7.6.2 Prognosen [Seite 148]
10.6.3 - 7.6.3 Release versus Meilenstein [Seite 149]
10.7 - 7.7 Zusammenfassung [Seite 150]
11 - 8 Feedback [Seite 152]
11.1 - 8.1 Den Kunden involvieren [Seite 153]
11.1.1 - 8.1.1 Wer ist der Kunde? [Seite 153]
11.1.2 - 8.1.2 Kunde auf Distanz [Seite 154]
11.1.3 - 8.1.3 Kundenpräsentation [Seite 155]
11.2 - 8.2 Rückblick [Seite 155]
11.2.1 - 8.2.1 Iterationsrückblick [Seite 156]
11.2.2 - 8.2.2 Rückblick - verteilt individuell versus gemeinsam persönlich [Seite 156]
11.2.3 - 8.2.3 Releaserückblick [Seite 158]
11.3 - 8.3 Retrospektive [Seite 159]
11.3.1 - 8.3.1 Individuelle Featureteamretrospektive [Seite 161]
11.3.2 - 8.3.2 Gemeinsame Projektteamretrospektive [Seite 162]
11.3.3 - 8.3.3 Gemeinsame Standortretrospektive [Seite 164]
11.3.4 - 8.3.4 Durchführung einer Retrospektive [Seite 164]
11.3.5 - 8.3.5 Virtuelle Retrospektive [Seite 165]
11.3.6 - 8.3.6 Teilnehmer [Seite 167]
11.3.7 - 8.3.7 Weniger ist mehr und andere Tricks [Seite 168]
11.3.8 - 8.3.8 Gegen die Langeweile - Moderationstechniken [Seite 169]
11.4 - 8.4 Metriken [Seite 172]
11.4.1 - 8.4.1 Fortschritt messen [Seite 173]
11.4.2 - 8.4.2 Schätzqualität messen [Seite 175]
11.4.3 - 8.4.3 Testbasis vergrößern [Seite 176]
11.5 - 8.5 Zusammenfassung [Seite 176]
12 - 9 Praktiken [Seite 178]
12.1 - 9.1 Entwicklungspraktiken [Seite 178]
12.1.1 - 9.1.1 Paarweises Programmieren [Seite 179]
12.1.2 - 9.1.2 Unit Test [Seite 181]
12.1.3 - 9.1.3 Refactoring [Seite 181]
12.1.4 - 9.1.4 Gemeinsame Verantwortlichkeit [Seite 186]
12.1.5 - 9.1.5 Gemeinsame Programmierrichtlinien [Seite 186]
12.1.6 - 9.1.6 Features durch Tests übermitteln [Seite 187]
12.1.7 - 9.1.7 Mühe mit Praktiken von der Stange [Seite 191]
12.2 - 9.2 Prozesspraktiken [Seite 192]
12.2.1 - 9.2.1 Tägliche Synchronisation [Seite 192]
12.2.2 - 9.2.2 Projektweite Synchronisation [Seite 193]
12.2.3 - 9.2.3 Verstreute Synchronisation [Seite 195]
12.3 - 9.3 Entwicklungskultur [Seite 200]
12.3.1 - 9.3.1 Gemeinsame Praktiken erfassen [Seite 200]
12.3.2 - 9.3.2 Vereinbarte Praktiken ändern [Seite 201]
12.3.3 - 9.3.3 Unterschiedliche Entwicklungskulturen [Seite 202]
12.3.4 - 9.3.4 Standortübergreifend den Prozess mit CMMI oder ISO harmonisieren [Seite 203]
12.3.5 - 9.3.5 Gleiches Recht für alle [Seite 205]
12.4 - 9.4 Zusammenfassung [Seite 206]
13 - 10 Agilität in ein verteiltes Projekt einführen [Seite 208]
13.1 - 10.1 Lokal beginnen - global wachsen [Seite 209]
13.1.1 - 10.1.1 Projektstart [Seite 210]
13.1.2 - 10.1.2 Frühzeitige Iterationen [Seite 211]
13.1.3 - 10.1.3 Ein Team - wechselnde Standorte [Seite 212]
13.2 - 10.2 Teams und Standorte vergrößern [Seite 213]
13.2.1 - 10.2.1 Projektstart in der Timebox [Seite 214]
13.2.2 - 10.2.2 Kick-off [Seite 214]
13.2.3 - 10.2.3 Die Projektkultur verbreiten [Seite 216]
13.2.4 - 10.2.4 Kulturelles Training [Seite 216]
13.2.5 - 10.2.5 Neue Mitarbeiter integrieren [Seite 218]
13.3 - 10.3 Einen agilen Prozess in ein existierendes Projekt einführen [Seite 218]
13.3.1 - 10.3.1 Einer nach dem anderen oder alle auf einmal [Seite 219]
13.3.2 - 10.3.2 Veränderung der Teamstruktur [Seite 219]
13.3.3 - 10.3.3 Mehr und bessere Coachs sind vonnöten [Seite 220]
13.3.4 - 10.3.4 Schätzungen und Geschwindigkeit [Seite 221]
13.3.5 - 10.3.5 Einzelkämpfer [Seite 222]
13.4 - 10.4 Zusammenfassung [Seite 223]
14 - Nachwort [Seite 224]
15 - Glossar [Seite 226]
16 - Referenzen [Seite 230]
17 - Index [Seite 236]