17 Stimmen

Wie lässt sich Agile an verschiedene Unternehmen anpassen? Eine MBA-Thesis

In meiner Masterarbeit möchte ich mich mit der Anwendung von Agile beschäftigen.

Es gibt eine ganze Reihe von Unternehmen, die agile Lösungen verkaufen - viele Unternehmensberater, die ihre Marke als die "beste" verkaufen.

Ich bin nicht daran interessiert, ob XP , Scrum , Kristallklar , Agile-CMMI , Sechs Sigma oder eine andere Marke/Variante ist am besten. Ich bin daran interessiert, was echte, aktive Entwickler (d.h. ihr) tatsächlich als agil anwenden.

Ich habe untersucht, wie man agile Methoden an die verschiedenen organisatorischen Anforderungen anpassen kann.

Aus der Untersuchung, wie verschiedene Organisationen agile Methoden anwenden, habe ich die folgenden Leitlinien entwickelt - ein Rezept dafür, welche agilen Varianten in welchen Situationen angewendet werden sollten:

  • Größere und stärker verteilte oder flexiblere Teams brauchen strengere Kodierungs- und Teststandards, kleine Teams können (und sollten) weniger verwenden.
  • Die Prozessdokumentation sollte minimal, zeitnah und aktuell sein.
  • Detaillierte statistische Kontrollindikatoren sind ein unnötiger Mehraufwand: Die frühzeitige Freigabe unvollständiger Software ist ein besserer Indikator für den Fortschritt.
  • Idealerweise sollten die Entwickler in der Nähe des Kunden sein und keine spezialisierten Zwischenrollen übernehmen. Zusätzliche Rollen sollten nur verwendet werden, wenn die Kunden so spezialisiert sind, dass Entwickler nicht gleichzeitig auch Benutzer sind.
  • Iterationen sollten flexibel sein, es sei denn, die Koordination der Freigaben mit anderen Abteilungen oder anderen Prozessen wird dadurch begünstigt.
  • Die Entwickler sollten in der Lage sein, einfach und regelmäßig miteinander zu kommunizieren, aber die Treffen sollten seltener sein (monatlich und wöchentlich, nicht täglich).
  • Die Paarprogrammierung sollte nur für Schulungs- und Untersuchungsaufgaben eingesetzt werden.
  • Diese Leitlinien sind nur ein Ausgangspunkt: Durch kontinuierliche Verbesserungen sollte die agile Variante weiter an die genauen Umstände angepasst werden.

Diese Faktoren ändern sich, wenn sie in einer Organisation mit bestehenden traditionellen (d.h. BDUF o Wasserfall ) Modelle, bei denen agile Teams entweder mit Teams, die nicht-agile Methoden anwenden, koexistieren oder von diesen angepasst werden müssen:

  • Eine Prozessdokumentation mit Abzeichnung und strukturierten Schritten hilft anderen Teams, das Projekt zu verfolgen.
  • Statistische Indikatoren (z. B. Geschwindigkeit) können nicht-agilen Teams die Gewissheit geben, dass der Prozess unter Kontrolle ist.
  • Feste Iterationen erleichtern die Koordinierung zwischen den Teams.

Diese zusätzlichen Leitlinien werden die Koexistenz von agilen und traditionellen Modellen erleichtern, bringen aber auch zusätzlichen Aufwand und Einschränkungen mit sich.

Was ich wissen möchte, ist, was Sie - die Leute, die Software schreiben, nicht die agilen Berater - von diesem Rahmenwerk halten.

Was ist Ihrer Meinung nach richtig? Was ist Ihrer Meinung nach falsch? Was würden Sie ändern? Was habe ich übersehen?

Und vor allem: Warum?


Ich habe ein Kopfgeld ausgesetzt, um einen zusätzlichen Anreiz für die Beantwortung dieser recht langen Frage zu bieten. Die Prämie geht an denjenigen, der die meisten Stimmen aus der SO-Community erhält - mir ist klar, dass es keine einzig richtige Antwort gibt, aber ich bin daran interessiert, was dem Konsens der Community am nächsten kommt.

7voto

David Yancey Punkte 1990
  • Größere und stärker verteilte oder flexiblere Teams brauchen strengere Kodierungs- und Teststandards, kleine Teams können (und sollten) weniger verwenden.
  • Die Prozessdokumentation sollte minimal, zeitnah und aktuell sein.
  • Detaillierte statistische Kontrollindikatoren sind ein unnötiger Mehraufwand: Die frühzeitige Freigabe unvollständiger Software ist ein besserer Indikator für den Fortschritt.
  • Idealerweise sollten die Entwickler nahe am Kunden sein und keine spezialisierten Zwischenrollen einnehmen. Zusätzliche Rollen sollten nur dann verwendet werden, wenn die Kunden so spezialisiert sind, dass die Entwickler nicht gleichzeitig auch Benutzer sind.
  • Iterationen sollten flexibel sein, es sei denn, die Koordination der Freigaben mit anderen Abteilungen oder anderen Prozessen wird dadurch begünstigt.
  • Die Entwickler sollten in der Lage sein, einfach und regelmäßig miteinander zu kommunizieren, aber die Treffen sollten seltener sein (monatlich und wöchentlich, nicht täglich).
  • Die Paarprogrammierung sollte nur für Schulungs- und Untersuchungsaufgaben eingesetzt werden.
  • Diese Leitlinien sind nur ein Ausgangspunkt: Durch kontinuierliche Verbesserungen sollte die agile Variante weiter an die genauen Umstände angepasst werden.

Kodierungs-/Teststandards IMO müssen unabhängig von der Größe und Verteilung des Teams umgesetzt werden. Kodierungs-/Teststandards führen zu besser handhabbarem/stabilem Code.

Ich stimme mit der Dokumentation überein. Durch die Verwendung einiger Clean-Code-Praktiken, wie z.B. aussagekräftige Kommentare und absichtsvolle Benennungskonventionen in Ihrem Code, entfällt ein Teil der Notwendigkeit, den Code selbst zu dokumentieren. Die Dokumentation sollte auf Geschäftsebene erfolgen, und ich bevorzuge sie in Form von Abnahmetests.

Die Nähe der Entwickler zum Kunden verbessert zwar den Iterationsprozess, doch muss der Entwickler davor geschützt werden, dass das Unternehmen den Prozess umgeht, indem es sich direkt an den Entwickler wendet, wenn es um Ergänzungen/Änderungen/Umfangserweiterungen geht. Das Unternehmen muss den Prozess immer noch durch Backlog-Grooming/Priorisierung usw. begleiten.

Durch die Verwendung von Release-Iterationen zusammen mit Entwicklungs-Iterationen können Sie einen flexiblen Zeitplan für Ihre Iterationen einhalten, der für das Team funktioniert. Derzeit arbeiten wir in 1-wöchigen Sprint-Iterationen mit einem Release-Sprint alle 3 bis 4 Wochen.

Die Art der Besprechung sollte die Häufigkeit der Besprechungen bestimmen. Tägliche Standups müssen täglich stattfinden. Sie bieten dem Team Rechenschaftspflicht und Transparenz, was für ein erfolgreiches Team unerlässlich ist. Retrospektiven müssen am Ende jeder Iteration stattfinden, und die Häufigkeit richtet sich nach der Größe der Iteration. Andere Besprechungen wie Code-Reviews und Demos sollten niemals zeitlich festgelegt werden, sondern eher nach Bedarf und Abschluss.

Pair Programming sollte nie auf bestimmte Typen festgelegt werden. Wir führen Pair Programming mit unseren QA-Testern und unserem BA-Team durch, damit beide Seiten ein besseres Verständnis für die UATs und Stories haben. Wir machen auch Pair Programming für den Wissensaustausch, Prototyping, Untersuchungsaufgaben usw. In unserer Umgebung ist Pair Programming zur zweiten Natur geworden.

Kontinuierliche Verbesserungen in Agile werden zur zweiten Natur, wenn Sie lernen, die agilen Praktiken an Ihre geschäftlichen Anforderungen anzupassen. Solange Sie sich nicht vom Manifest entfernen, sollte Ihr Agile-Projekt erfolgreich sein.

3voto

D3vtr0n Punkte 2670

Mit den letzten beiden Punkten habe ich ein kleines Problem. Tägliche Stand-up-Meetings sind sehr nützlich. Dabei können wir besprechen, woran wir am Vortag gearbeitet haben und was wir bis zum nächsten Treffen (morgen) vorhaben zu tun. Wichtig ist, dass die täglichen Standup-Meetings kurz gehalten werden und auf den Punkt kommen. Wir sind in eine Situation geraten, in der einige Leute gerne alle möglichen Fragen über das Projekt gestellt haben, also haben wir beschlossen, dass keine Fragen gestellt werden dürfen, sondern nur Aussagen über die Produktivität. Wenn es Fragen gibt, wird ein weiteres Treffen mit der für diese Komponente zuständigen Person angesetzt.

Außerdem sollte das Pair Programming nicht nur für Schulungs- und Untersuchungsaufgaben eingesetzt werden. Pair Programming hat viele Vorteile, wie z.B. Wissensaustausch/-transfer und Codeverantwortung. Zwei Köpfe an einem Problem können viele interessante Gesichtspunkte zum Vorschein bringen und helfen, potenzielle Designfehler zu isolieren. Meiner Meinung nach wird die Paarprogrammierung unterschätzt und die meisten egoistischen Programmierer mögen die Paarprogrammierung nicht. Es ist ein Vorteil für das Projekt und das Team, nicht für einen selbst. Gute Software wird von kollaborativen Teams geschrieben, nicht von einem einzelnen Nerd.

3voto

Srikar Doddi Punkte 15275

Im Rahmen Ihrer Doktorarbeit sollten Sie auch untersuchen, wie Agile in Teams eingesetzt wird, die sich in verschiedenen Teilen der Welt befinden. Wenn Sie also ein Produktteam an der Ostküste haben, Entwicklungsteams in Indien und Russland, ein QA-Team in Singapur und so weiter und so fort. Das ist für mich ein ganz anderes Spiel und erfordert völlig andere Muster.

Einige der Muster sind zum Beispiel:

  1. Paaren Sie je nach Zeitzone die Frühaufsteher in einem Teil der Welt mit den Spätaufstehern im anderen Teil oder umgekehrt. Das ist nicht gerade Pair Programming, aber Sie können das Muster nennen, wie Sie wollen.

  2. Der Schwerpunkt muss darauf liegen, den Code so lesbar wie möglich zu machen, im Gegensatz zur Schreibbarkeit. Das bedeutet, dass wir möglicherweise den Schwerpunkt auf einheitliche Entwurfsmuster und fließende Benennungen legen müssen.

  3. Bilden Sie Teams so, dass Sie einen von ihnen und einen von uns haben. Das heißt, Sie setzen den russischen Entwickler mit dem indischen Entwickler zusammen und sie arbeiten gemeinsam an einem Modul.

Es macht wirklich Spaß und erfordert viel Geduld und harte Arbeit, im Laufe der Zeit seine eigenen Muster zu erfinden, damit agiles Arbeiten funktioniert.

Ich hoffe, dieser neue Blickwinkel hilft Ihnen irgendwie.

2voto

Mike Dunlavey Punkte 39339

Oh, Mann. Viel Glück!

Mir gefällt Ihre Herangehensweise, vor allem, dass Sie den Input von uns Praktikern bekommen und nicht von den Goldwäschern mit ihren Powerpoints.

Ich würde sagen, dass ein solcher Ansatz an die spezifischen Umstände angepasst werden muss. Niemand sollte etwas tun nur weil jemand anderes sie dazu aufgefordert hat. Selbstständiges Denken sollte immer im Vordergrund stehen, IMHO.

Es ist schon eine Weile her, dass ich mit MBAs der Sloan School zusammengearbeitet habe, aber ich hatte den Eindruck, dass man ihnen beigebracht hatte, dass Programmierer "verwaltet" und nicht "kultiviert" werden sollten. Dass wir so etwas wie eine unangenehme Ware sind und keine vollwertigen Teammitglieder. Ich hoffe, Sie haben bessere Erfahrungen gemacht.

2voto

Cam Wolff Punkte 1410

Wir praktizieren Agilität in einem großen Unternehmen mit hoch integrierter Software und festgelegten Windows-Zeitpunkten, zu denen Software auf gemeinsam genutzten Hardware-Umgebungen in die Produktion überführt werden kann.

Wir haben eine Reihe von agilen Praktiken entwickelt, die sich aus SCRUM (Projektmanagement) und XP (Technik) zusammensetzen. Viele der Systeme, die wir einsetzen, nutzen traditionelle Wasserfallverfahren

Was Ihren Rahmen betrifft, so werde ich auf jeden einzelnen Punkt eingehen:

"Größere und stärker verteilte oder flexiblere Teams brauchen strengere Kodierungs- und Teststandards, kleine Teams können (und sollten) weniger verwenden."

Wenn Sie mit Kodierungs- und Teststandards technische Praktiken (XP) wie kontinuierliche Integration, Paarprogrammierung, testgetriebene Entwicklung, automatisierte Funktions- und Leistungstests usw. meinen, dann arbeiten wir unabhängig von der Größe des Teams oder des Projekts mit denselben Praktiken. Infolgedessen geben wir oft Software frei, bei der während des User Acceptance Test keine Fehler gefunden werden. Die Freigabe von qualitativ hochwertiger Software (mit wenigen Fehlern), die formbar bleibt, um eine kontinuierliche Entwicklung in einem nachhaltigen Tempo zu ermöglichen, ist ausschlaggebend für den Bedarf an technischen Verfahren, nicht die Größe des Unternehmens.

"Die Prozessdokumentation sollte minimal, zeitnah und aktuell sein."

Wenn Sie mit Prozessdokumentation die agile Prozessdokumentation meinen, dann passt alles von uns an eine Wand. Wir zeigen das Manifest, die Zuordnung zu den 12 Prinzipien und schließlich die 21 Praktiken, die wir als Mitarbeiter anwenden. Die Tatsache, dass sie an die Wand passen und gut sichtbar sind, ermöglicht es dem Team, sie zu verstehen und, was noch wichtiger ist, sie tatsächlich in die Praxis umzusetzen.

"Detaillierte statistische Kontrollindikatoren sind ein unnötiger Mehraufwand: Eine frühzeitige Freigabe unvollständiger Software ist ein besserer Indikator für den Fortschritt."

Prozentuale Abschlüsse bei traditionellen Arbeitsmitteln haben wenig Wert. Der beste Indikator für den Fortschritt ist die Vorführung funktionierender Software für unseren Produktinhaber/Geschäftspartner alle zwei Wochen. Die Verfolgung der tatsächlichen Geschwindigkeit (Einheiten der fertiggestellten Story Cards) und der Fehlerraten und die Darstellung der Daten in großen, sichtbaren Diagrammen ist sehr hilfreich. Bei der Einführung bestimmter Praktiken in einem Team ist es nützlich, den Fortschritt aufzuzeigen. Zum Beispiel die Anzahl der Einheitstests, die vor dem Code geschrieben werden, wenn TDD gelernt wird.

"Idealerweise sollten die Entwickler nahe am Kunden sein und keine spezialisierten Zwischenrollen einnehmen. Zusätzliche Rollen sollten nur verwendet werden, wenn die Kunden so spezialisiert sind, dass die Entwickler nicht gleichzeitig auch Benutzer sind."

Wenn möglich, sollten die Benutzer mit dem Team im offenen Arbeitsbereich arbeiten. Wenn es dem Benutzer nicht möglich ist, mit dem Team zusammenzuarbeiten, ist ein Benutzerstellvertreter die nächstbeste Person, die an der Leitung sein sollte. Niemand kann ein besseres Feedback geben als die Personen, die die Software tatsächlich für ihre Arbeit nutzen.

"Iterationen sollten flexibel sein, es sei denn, die Koordination von Releases mit anderen Abteilungen oder anderen Prozessen wird dadurch begünstigt."

Noch wichtiger ist, dass die Veröffentlichungstermine teamübergreifend abgestimmt werden sollten. Iterationen sind am besten, wenn sie von gleichbleibender Dauer sind (wir verwenden alle 2 Wochen). Eine gleichbleibende Iterationsdauer entspricht dem Time Boxing und der Berechnung der Geschwindigkeit, die für die Festlegung der Story Cards für die nächste Iteration verwendet wird.

"Die Entwickler sollten in der Lage sein, einfach und regelmäßig zu kommunizieren, aber die Treffen sollten seltener sein (monatlich und wöchentlich, nicht täglich)."

Das Team sollte am täglichen Stand-up-Meeting und bei jeder Iteration am Iterationsplanungsmeeting, dem Show & Tell-Meeting, dem Planungspoker-Meeting und dem Retrospektiv-Meeting teilnehmen. Bei jedem Release nimmt das Team an der Release-Planungsbesprechung teil. Da der Benutzer/Geschäftspartner mit der Linie zusammenarbeitet, können täglich Gespräche über die zu erledigende Arbeit stattfinden.

"Pair Programming sollte nur für Ausbildungs- und Forschungszwecke eingesetzt werden."

Der erste Grund für den Einsatz von Pair Programming ist die Beseitigung von Fehlern. Ich habe eine Reihe von Antworten zum Thema Pair Programming geschrieben. Zusammenfassend lässt sich sagen, dass Paare weniger wahrscheinlich blockiert werden, weniger wahrscheinlich E-Mail- oder Web-Urlaub nehmen, einen Mechanismus zum Transfer von Fähigkeiten aus dem Geschäfts- und Anwendungsbereich sowie der technischen Praxis bieten, Wissenssilos beseitigen (wichtig in größeren Organisationen) usw.

"Diese Leitlinien sind nur ein Ausgangspunkt: Durch kontinuierliche Verbesserungen sollte die agile Variante weiter an die genauen Umstände angepasst werden."

Retrospektiven, die bei jeder Iteration oder bei Auftreten eines Ereignisses, das eine Retrospektive erforderlich macht, geplant werden, und eine Null-Fehler-Mentalität fördern die kontinuierliche Verbesserung. Durch die Anwendung der XP-Entwicklungspraktiken kann das Team den Code gesund halten, so dass neue Funktionen auf unbestimmte Zeit hinzugefügt werden können. Wir behandeln die Ergebnisse von Wasserfallprojekten als Einschränkungen. Um mit diesen Einschränkungen umzugehen, fordern wir die Arbeit dieser Teams lange im Voraus an und verwenden technische Techniken wie Mocking, um die Story Cards zu testen, die in diese Ergebnisse integriert werden.

"Diese Faktoren ändern sich, wenn sie in einer Organisation mit bestehenden traditionellen (d.h. BDUF- oder Wasserfall-) Modellen angewendet werden, wo agile Teams entweder mit Teams, die nicht-agile Methoden verwenden, koexistieren oder von ihnen angepasst werden müssen:"

Wir haben agile Teams, die in einer Wasserfallwelt leben. Wir laden die Wasserfallprojekte zu unseren Release- und Iterationsplanungssitzungen (und Retrospektiven) ein. Der Erfolg, den wir haben und weiterhin haben werden, bringt neue Bekehrte zu den agilen Praktiken innerhalb des Unternehmens.

"Eine Prozessdokumentation mit Abzeichnung und strukturierten Schritten hilft anderen Teams, das Projekt zu verfolgen."

Uneinig. Die Story-Card-Wand, der Iterationsplan und der Release-Plan sind alles, was von den Teammitgliedern und Externen benötigt wird.

"Statistische Indikatoren (wie die Geschwindigkeit) können nicht-agilen Teams die Gewissheit geben, dass der Prozess unter Kontrolle ist.

Einverstanden. Agile Teams werden die Geschwindigkeit und die Fehlerraten sichtbar machen. Die Budgets werden innerhalb von 1 oder 2 Prozent liegen, und die Releases werden termingerecht erfolgen, da sie in Time Boxes verpackt sind.

"Feste Iterationen werden die Koordination zwischen den Teams erleichtern.

Wird in hoch integrierten und großen Umgebungen benötigt. Hilft dem Team auch bei der Erstellung von Iterations- und Release-Plänen auf der Grundlage der Entwicklungsgeschwindigkeit.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X