Was bedeutet es, agil zu sein?

17

Wir haben ein Projekt, von dem jeder sagt, dass wir es agil machen werden, aber ich bezweifle, dass wir klar verstanden haben, was agil ist.

In früheren Projekten hatten wir Planungsbesprechungen, definierten dann das Produkt-Backlog und teilten die Arbeit den Entwicklern in zwei- bis dreiwöchigen Sprints zu. Jeden Morgen hatten wir Scrum-Meetings (die jedes Mal eine halbe Stunde dauerten) und jeder Entwickler kam danach damit klar. Kaum jemand hat bis zum Ende des Sprints irgendwelche Tests geschrieben und nicht abgeschlossene Arbeiten wurden dem nächsten Sprint hinzugefügt.

Die Entwickler sprachen kaum miteinander und an der Entwicklung war kein TDD beteiligt. Tatsächlich hatten die meisten Entwickler zu Beginn eine Spezifikation und machten nur für die 2 oder 3 Wochen mit, für die der Sprint arrangiert wurde. Es gab kaum Kommunikation mit dem Kunden / Stakeholder.

Die Qualitätssicherung wurde in der Regel einige Monate später einbezogen, und bis dahin stellten wir fehlende Anforderungen fest, die den Arbeitsaufwand weiter erhöhten. Offensichtlich gab es keine Rückkopplungsschleife.

Meine Frage ist also, wo wir falsch liegen und wie ich verhindern kann, dass das Team die gleichen Fehler macht.

JD01
quelle
4
Scheint wie ein Duplikat von programmers.stackexchange.com/questions/15928/…. Es hört sich so an, als wüssten Sie nicht wirklich, was zu tun ist, und es fehlte ein echtes Management, um den Prozess durchzusetzen
Sylvanaar
1
Ja, ich stimme Ihnen zu 100% zu. Mein Vorgesetzter hat ein Buch über Agile gelesen und ist einfach weitergekommen (obwohl sehr schlecht). Ich habe TDD auf der Serverseite des Projekts verwendet, aber die anderen wollten es nicht lernen oder den Nutzen davon sehen. Wir hatten ein Framework (auf der Client-Seite), das ewig dauerte, und der Entwickler argumentierte immer wieder, dass er nur damit weitermachen musste (ohne Einmischung).
JD01
3
Obwohl der Titel ein Duplikat zu sein scheint, denke ich, dass diese Frage für sich genommen hilfreich ist, da viele Teams "allgemeine" Erklärungen darüber lesen, was agil ist (und sogar Schulungskurse belegen und Berater einstellen) und dann auf genau dieselben Probleme stoßen wie JD01 Team sowieso. Wenn Sie die Frage in den Kontext dieses speziellen Teams stellen, werden Sie möglicherweise Licht auf bestimmte Probleme und Lösungen werfen, auf die andere allgemeinere Fragen in Bezug auf Posts nicht eingehen würden.
DXM,

Antworten:

27

Was Sie beschreiben, ist nicht per Definition agil (Agiles Manifest), sondern ein Wasserfall mit täglichen Statusmeetings. Agil bedeutet, sich leicht an Veränderungen anzupassen. Wenn es keine interaktive Rückkopplungsschleife mit dem Produktbesitzer und damit den Kunden gibt, welche Veränderung findet dann statt?

Bei Agile geht es um schnelle Ausfälle durch ständige Kommunikation mit dem Produktbesitzer / Kunden. Es ist besser, früher als später zu scheitern, es wird weniger gearbeitet und es geht weniger "verloren". Und man bleibt nicht bei dem Argument hängen, dass "wir keine Zeit haben, es richtig zu machen, da wir so viel Zeit damit verbracht haben, es falsch zu machen, wir müssen einfach auf dem gleichen Weg weitermachen, auch wenn es zum Scheitern führt ".

Klingt so, als würde Ihr Management "SCRUM" machen, aber ... " wo das " aber " ist, wo sie all das SCRUM-Zeug rausschmeißen, das sie nicht verstehen oder mit dem sie nicht einverstanden sind, und die Dinge auf die gleiche zufällige Art und Weise wie immer machen, aber mit neuen, glänzenden Modewortnamen.

In SCRUM geht es beim täglichen Aufstehen NICHT darum, dem Management den Status zu übermitteln , sondern darum, die Entwicklerinteraktion zu erzwingen, damit Sie wissen, was Ihre Teamkollegen tun, und sich gegenseitig helfen und keine Doppelarbeit leisten können. Wenn es länger als 45 Sekunden dauert, machen Sie es falsch. Es geht um Transparenz für das Team. Wenn eine Person mehreren Tagen den gleichen Status für einen einzelnen Arbeitstag gibt, kann das Team das Personenproblem früher oder später lösen.

Wenn Sie den Code nicht so testen, wie er geschrieben wurde, tun Sie das auch nicht richtig. Das Testen sollte in den Prozess eingebettet sein und nicht nachgedacht werden. Die Qualitätssicherung sollte in die Planungssitzungen einbezogen werden und Schätzungen darüber enthalten, wie lange die Tests dauern werden.

Wenn Sie die Sprint-Verpflichtungen nicht einhalten und die Dinge nicht rollen, tun Sie es nicht richtig. Bei Sprints geht es um Verpflichtungen, wenn Sie zu viel Arbeit auf sich nehmen. Hören Sie auf, dies zu tun. Es gibt keine Möglichkeit, Vorhersehbarkeit oder Wiederholbarkeit einzuführen, wenn Sie sich nicht genau auf die zu erbringenden Leistungen festlegen können.


quelle
1
Vielen Dank, Jarrod, für deine Antwort. Sollte TDD agil sein? Es war schwierig, Entwickler auf diese Weise zum Nachdenken zu bewegen. Am Ende haben sie, wie gesagt, am Ende einige Tests gemacht (wenn sie sich erinnern) und gesagt, es sei TDD. Ich stimme mit allem überein, was Sie gesagt haben. Die Rückkopplungsschleife war so gut wie nicht vorhanden, da mein Vorgesetzter der Ansicht war, dass sie den "Rahmen" störte, der Monate und Monate in Anspruch nahm. Zu diesem Zeitpunkt steckten wir bei der Implementierung von Funktionen fest, die nicht den Kundenanforderungen entsprachen.
JD01
3
TDD ist ein roter Hering. Ich persönlich bin damit nicht einverstanden. Was nützen Tests für Code, der die Kundenbedürfnisse nicht erfüllt. Und da Tests eingebettet und nichts ausgeliefert und getestet werden sollten , was nicht getestet wurde, ist TDD als Mantra ziemlich nutzlos. Wenn es nicht funktioniert, können Sie es nicht testen. Wenn Sie es nicht testen, kann der Produktbesitzer / -kunde es nicht akzeptieren.
2
Ich habe angefangen, viel TDD zu machen, bin aber jetzt zu BDD gewechselt, was mehr den Kundenbedürfnissen als den Abnahmetests entspricht. Obwohl ich der Meinung bin, dass TDD beim Entwerfen von Designs geholfen hat, hätte ich neben der Bereitstellung von Tests nichts anderes gesehen.
JD01
1
Der Hauptgrund für TDD besteht darin, ein kontinuierliches Refactoring zu ermöglichen und die Akkumulationsrate der technischen Schulden zu senken. Wenn es Code gibt, dessen Änderung Sie befürchten, weil ein erneutes Testen zu teuer wäre, wird das Projekt vorzeitig beendet.
Kevin Cline
Ich habe viele Leute TDD predigen hören, ich habe es in der Praxis einfach noch nie gesehen. Persönlich funktioniert mein Gehirn nicht so. Ich neige dazu, eine gute allgemeine Vorstellung von dem zu haben, was ich schreibe, aber während ich schreibe, balanciere ich die Dinge neu und bewege sie. Das Schreiben der Tests ist für mich einfach nicht möglich. Ich schreibe Unit-Tests, normalerweise als Teil des Code-Schreibens, aber sie werden geschrieben, während ich Code schreibe, nicht im Voraus.
DaveG
9

Jarrod gab eine gute Antwort (+1 dazu) und ich möchte darauf noch etwas eingehen.

Bei Agile geht es nicht nur um schnelle Ausfälle und Rückmeldungen zwischen dem Produktbesitzer (Kunden) und dem Team. Es geht um schnelles Feedback zwischen allen beteiligten Stakeholdern. Um wirklich agil zu sein (und das geht direkt aus dem Manifest hervor ), muss man erkennen, dass es nur einen Prozess gibt, der Entwicklern hilft, bessere Produkte zu liefern. Personen über dem Prozess bedeuten, dass Sie den Prozess ändern und zum Funktionieren bringen, sobald das Team erkennt, dass Ihr vorhandener Prozess nicht funktioniert.

"Scrum but ..." ist auch ein Thema, aber diese Münze hat beide Seiten. Wenn Sie sich das Manifest ansehen, werden Sie feststellen, dass es um das Team geht und dass Tools / Prozesse für Sie funktionieren. Keine zwei Teams sind gleich und daher wird jedes etwas anders funktionieren und das ist in Ordnung. Sie könnten sicher die gesamte Scrum-Methodik übernehmen und versuchen, sie genau zu befolgen und zu prüfen, ob dies für Ihr Team funktioniert.

Eine andere Alternative besteht darin, statt einen anderen Prozess in das Team zu verlagern und alle dazu zu bringen, die Anweisungen von Scrum zu befolgen. Probieren Sie den agilen Ansatz aus : Kommunizieren Sie mit dem Team und sehen Sie, ob Sie gemeinsam Problembereiche und Lösungen für jeden einzelnen identifizieren können. Führen Sie dann schrittweise Änderungen in Ihrer Arbeitsweise ein, damit Probleme behoben werden.

Es könnte eine Weile dauern, aber ...

  1. Sie werden die größten Probleme zuerst beheben, was den größten Einfluss auf die Fähigkeit Ihres Teams hat, Produkte zu liefern
  2. Indem Sie sofortige Probleme identifizieren und an der Erarbeitung von Lösungen mitwirken, verstehen Ihre Teammitglieder, warum bestimmte Praktiken wichtig sind, und tun sie nicht einfach, weil sie dazu aufgefordert werden.

Wenn wir eine Analogie zwischen Scrum und einem Entwurfsmuster ziehen, ähnelt die von mir vorgeschlagene Arbeitsweise dem Codieren in ein Muster, bei dem Sie den Code so einfach wie möglich halten und nur dann auf ein Entwurfsmuster konvergieren, wenn dies erforderlich ist. Im Gegensatz dazu, einfach ein Designmuster auszuwählen und damit zu rollen (dh Scrum und alle seine Prozesse blind als eine Gruppe auszuwählen), ist der Code manchmal komplexer und schwieriger zu warten, als es sonst möglich gewesen wäre.

Der Schlüssel zum Verständnis ist, dass es bei Agilität nicht darum geht, einen neuen Prozess für die Ausführung von Dingen zu entwickeln. es geht um ständige Veränderung und ständige Anpassung an bestehende Prozesse / Praktiken.

DXM
quelle
1
an den downvoter: ausarbeiten wollen? Habe ich ein paar Federn gekräuselt, weil ich gesagt habe, dass ich Scrum nicht blind adoptieren soll, oder war es etwas anderes?
DXM,
2
Ja, dumm. Ich werde +1 für Ihre detaillierten Informationen.
Michael Durrant
1
+1 für „ Der Schlüssel zu verstehen ist , dass agile für Dinge zu tun , nicht zu kommen mit einem neuen Verfahren ist, es geht um kontinuierliche Veränderung und ständige Anpassung an bestehende Prozesse / Verfahren.
David ‚der kahle Ingwer‘
-2

Wenn das Team (und sein Management) wirklich "agil" sein wollen, sollten sie als Team zunächst das Agile Manifest und seine Prinzipien lesen und diskutieren . Wählen Sie dann eine der agilen Methoden aus, die erstellt wurden ( z. B. Scrum ), lernen Sie sie kennen und befolgen Sie diese. Ich würde empfehlen, es eine Weile genau zu verfolgen, bevor ich es ändere, aber das bin nur ich.

Sie sollten sich auch eingehend mit den Ingenieurspraktiken befassen, die zur Unterstützung der ausgewählten agilen Projektmethodik verwendet werden.

StevenV
quelle
2
Ich habe abgelehnt, weil ich nicht denke, dass dies die ursprüngliche Frage beantwortet.
Bryan Oakley
1
fair genug, nehme ich an. Ich sprach die anfängliche Prämisse des OP an: "Wir haben ein Projekt, von dem jeder sagt, dass wir es agil machen werden, aber ich bezweifle, dass wir klar verstanden haben, was agil ist." Viele Leute sagen, dass sie agil sind oder agil sein wollen, ohne zu verstehen, was die agile Philosophie oder die Methoden, die sie unterstützen, wirklich sind.
StevenV
3
Ich bin nicht damit einverstanden, einer bestimmten Methodik blindlings zu folgen. Um „wirklich“ Agile, bedeutet , dass Sie nicht sperren Sie sich in einem bestimmten Trend oder Methodik , wenn es Ihr Unternehmen und Team passt. Es ist besser, eine Methodik als Ausgangspunkt zu verwenden, und dann, wenn Sie ein wenig geschult und noch erfahrener sind, passen Sie sie an Ihre eigenen Bedürfnisse an. Noch wichtiger ist, wenn das nächste Projekt und der nächste Kunde etwas anderes benötigen, passen Sie die Methodik an. nicht das ist wirklich agil.
S.Robins
1
Bei erneutem Besuch meiner Antwort stimme ich S.Robins zu und habe meine Antwort entsprechend geändert.
StevenV