Ich konnte kein Buch über Agile schreiben. Ich habe in mehreren Läden gearbeitet, die ihren Prozess Agile nennen. Einer der Hauptpunkte der agilen Entwicklung ist die regelmäßige Einbeziehung der Kunden. Nach einem Sprint kann die Arbeit dem Kunden vorgeführt werden, um dessen Feedback zu erhalten. Spülen und wiederholen.
Das Problem, auf das ich stoße, ist, dass viele Kunden nicht so involviert sein wollen. Sie würden eine Wasserfallannäherung viel bevorzugen. Sammeln Sie die Anforderungen im Voraus und kehren Sie zurück, wenn Sie fertig sind. Nach meiner Erfahrung funktioniert der Wasserfall nicht. Kunden wissen nicht, was sie wollen, bis sie es sehen. Das Wasserfall-Dilemma wird weiterhin von einer großen Community von Entwicklern propagiert, die alle Anforderungen im Vorfeld haben möchten. Auf diese Weise wissen sie, was sie bauen, können sie dementsprechend planen, und der Kunde ist schuld, weil er diese Anforderungen "abgemeldet" hat.
Irre ich mich Kann Agile ohne Kundenbeteiligung arbeiten? Wenn ja, wie und wie überwinden Sie die Probleme, die ich besprochen habe?
Antworten:
Wie könnte es Die Natur der Technik diktiert eine Art Rückkopplungsschleife zwischen dem Kunden und dem Entwickler.
Teile Ihres Teams können jedoch als "Stellvertreter" fungieren (ein ähnlicher Vorgang wie "Essen Ihres eigenen Hundefutters"), sodass Sie "vorgeben" können, agil zu sein, obwohl dies nicht so zufriedenstellend ist wie das Erhalten eines tatsächlichen Kunden Feedback.
Ob es Ihnen gefällt oder nicht, der Kunde wird in den Entwurfsprozess einbezogen. Es geht nur darum, wie viel die Nacharbeit kosten soll (je länger sie sich verzögert, desto teurer ist sie).
Da der Kunde "Big Design Up Front" möchte, helfen Sie ihm zu verstehen, dass es von vornherein mehr Zeit und Mühe erfordert, das Design beim ersten Mal richtig zu machen.
quelle
it's just a matter of how much they want the rework to cost (the longer it is delayed, the more expensive it is).
Für wen ist es eigentlich teurer? Die meisten Kunden sehen es nicht als Lohn für Ihre Zeit an, ihre aktuelle Vision einer Lösung umzusetzen. Manchmal haben sie nur ein Problem und können nicht wissen, was die Lösung sein soll, bis Sie ihnen sagen, was es sein wird. An diesem Punkt, wenn das, was Sie ihnen gesagt haben, ihr Problem nicht wirklich löst, dann ist es IHRE SCHULD, nicht ihre. Wie ist es ihre Schuld, dass Sie ihre wahren Probleme überhaupt missverstanden haben? cont ...Die kurze Antwort auf Ihre Frage lautet "Nein". Hier finden Sie Kommentare zu einigen Teilen Ihrer Frage. Um genau zu sein, basieren die meisten Antworten auf meiner persönlichen Erfahrung und Beobachtung.
Wasserfall ist eine solide Methode zur Bereitstellung von Systemen unterschiedlicher Komplexität. Es ist bedauerlich, dass es nicht gut präsentiert oder verstanden wird. Ein Grund dafür ist, dass es nicht genug Geld verdient, um mit der Methodik des Tages zu konkurrieren, die immer wieder auftaucht. Sie werden überrascht sein, dass viele der Bank-, Versicherungs- und Fertigungssysteme nur nach dem Waterfall-Ansatz gebaut wurden und viele davon noch heute in Produktion sind. Es ist traurig, dass die Softwareindustrie mehr auf Hype als auf Wissenschaft basiert.
Das ist ein Mythos. Ein großer auch. Dies mag beim Design / Layout von Webseiten der Fall sein, aber für die Verarbeitung von Geschäftsdaten möchten die meisten Benutzer, dass etwas funktioniert. Einige dieser Benutzer verwenden immer noch AS / 400-Bildschirme und 3270 CICS-Monitore mit RGB und können mit diesen Tools ihre Geschäfte abwickeln. Dieselben Benutzer akzeptieren auch SAP- und ORACLE-ERP-Systeme, ohne Einfluss auf die Gestaltung der Benutzeroberfläche (und manchmal auch auf die Funktionalität) zu haben. Die meisten Geschäftsanwender werden sogar ihre Arbeitsgewohnheiten und -abläufe anpassen, wenn das System die richtige Funktion produziert. Der Stress ist hier auf Funktion nicht zu sehen. Geschäftsleute verstehen 90% der Zeit, wie sie ihre Arbeit sehr gut erledigen.
Sie können den Entwicklern nicht vorwerfen, dass sie wissen wollen, was sie bauen, weil diese Entwickler nach 3 Stunden nach dem Erlernen der nächsten Technologie nach Hause gehen möchten, um ihr Abendessen zu kochen und ihre Hemden für eine weitere Übung zu pressen. das wird ihre aktuellen Fähigkeiten ersetzen! Das Schuldspiel macht niemanden zum Gewinner. Denken Sie in Bezug auf die Rollen und Verantwortlichkeiten jeder Partei nach und das Bild wird sehr klar sein.
Zusammenfassend ist festzuhalten, dass Projektmanager, Programmierer und Webdesigner keinen Ersatz für Business Analysten darstellen, die unabhängig von der Methodik wissen sollten, wie Anforderungen von Endbenutzern erfasst werden.
quelle
Sie wollen sich nicht die Zeit nehmen und wenn sie eine Wahl haben, bekommen sie lieber kostenlose Software, aber Sie werden sie trotzdem in Rechnung stellen, oder? Dies wird unscharf, wenn Sie Software intern für Ihr Unternehmen entwickeln. Sie glauben, dass die IT-Abteilung gekauft und bezahlt wurde (Angestellte), sodass sie so viel Arbeit wie möglich von Ihnen bekommen könnten.
Sie können möglicherweise agil sein. Holen Sie sich alle Spezifikationen und starten Sie die Codierung. Sobald der Kunde die Arbeit unterbricht, weil er nur an etwas gedacht hat und Sie Änderungen und Überarbeitungen vornehmen müssen, sind Sie ein bisschen agiler geworden. Sie können die Genehmigungen auch in Ihrem Team durchführen. Lassen Sie sich von einem Ihrer Teammitglieder einen Anzug und eine Krawatte anziehen und sich als Kunde ausgeben.
Wenn Sie im Vorfeld viel Zeit investieren, können Sie diese möglicherweise abschrecken. Schlagen Sie einen Sprint vor, um es auszuprobieren. Dann geben Sie ihnen die Möglichkeit, sich abzumelden. Sie können für den Rest des Projekts immer zu einem Wasserfall wechseln. Schlagen Sie außerdem vor, dass verschiedene Personen in ihrem Team die Überprüfung durchführen und genehmigen könnten, wenn die Zeit für die Person, die den Scheck ausstellt, knapp ist.
Irgendwann muss man ihnen sagen, dass man nicht glaubt, dass der Wasserfall funktionieren wird. Fragen Sie sie, ob sie mit diesem Ansatz zufrieden sind, und wenn ja, warum lässt sie nicht den letzten das Projekt durchführen?
quelle
Ohne Kundenbeteiligung kann keine Methodik funktionieren. Das Abmelden von Anforderungen kann bedeutungslos sein, wie ich an Projekten miterlebt habe, an denen ich teilgenommen habe. Ihr Problem geht über die Fähigkeit hinaus, agil zu sein. Sie müssen Ihre Kunden schulen und sicherstellen, dass sie verstehen, wie wichtig es ist, dass sie teilnehmen.
quelle
Ich denke, dass einer der Hauptvorteile von Agile die Möglichkeit ist, detailliertere Anforderungen für jedes Feature insgesamt zu erhalten. Wenn der Kunde alle Anforderungen im Voraus angibt, ist jedes Feature in der Regel eine vage Idee, und es wird ein gewisses Maß an Funktionalität definiert. Agile zwingt den Kunden, jedes Feature erneut zu besuchen und sich genau auf das zu konzentrieren , was er möchte und wie das Feature in das Gesamtbild passt. Um die gleiche Menge an Details (genug Details, um die Funktionen zu implementieren) in die Spezifikation zu integrieren, müssen Sie bei waterfall zwei Dinge tun:
Vermuten. Implementieren Sie, bis Sie auf etwas Unbestimmtes stoßen, und beurteilen Sie dann, wie die Funktion Ihrer Meinung nach am besten implementiert werden kann. Dies ist offensichtlich nicht ideal, da es zum "Warten, darum habe ich nicht gebeten!" Szenario.
Legen Sie viel mehr Wert auf Design im Voraus. Wenn der Kunde am ersten Tag seine halbherzige Spezifikation auf Sie wirft, planen Sie im Wesentlichen, jedes Detail durchzugehen, bevor Sie etwas implementieren. Fragen Sie die Kunden zu klären , alles bis zum Erbrechen bis zu dem Punkt , wo Sie jede Implementierungsdetails für das gesamte Projekt kennen. Dies ist zwar nicht perfekt, aber besser als Option 1. Möglicherweise stoßen Sie immer noch auf Details, die Sie nicht erwartet hatten, und es kann sogar dazu führen, dass der Client auf die Hügel zusteuert sind nicht psychisch, das ist eine Notwendigkeit. Dies ist im Grunde genommen ein Wasserfall, der mit allen damit verbundenen Nachteilen verbunden ist, einschließlich der Tatsache, dass er äußerst schwierig ordnungsgemäß auszuführen ist.
Nehmen Sie die halbgebackene Brille, bitten Sie aber trotzdem um Klärung. Arbeiten Sie, bis Sie einen vagen Teil der Spezifikation erreichen, und bitten Sie den Kunden, dies zu klären. Dies ist natürlich nicht das, wonach der Kunde gefragt hat, aber wenn er nicht möchte, dass eine Anwendung so trübe ist wie die Spezifikation, und sich weigert, die Spezifikation im Voraus zu definieren, ist dies die verbleibende Option. Es bietet nicht alle Vorteile von Agile (z. B. regelmäßige Kundengenehmigung, um sicherzustellen, dass alle Benutzer auf derselben Seite sind), ermöglicht es Ihnen jedoch, die Informationen abzurufen, die Sie für die Entwicklung benötigen. Da Option 1 Sie wahrscheinlich mit einem unterdurchschnittlichen Produkt zurücklässt, ist Option 2 für den Kunden verschwenderisch und frustrierend (Sie müssen wahrscheinlich mindestens doppelt so viel Zeit für das Design und das Sammeln von Spezifikationen insgesamt aufwenden, wenn Sie dies ganz im Voraus tun). Das ist wirklich keine so schlechte Option. Der Schlüssel hierbei ist, bei jeder anstehenden Änderung Zeitpläne und Preis sorgfältig zu ändern. Wenn Sie es richtig machen, werden Sie möglicherweise feststellen, dass die Mehrzahl der Agile-Praktiken mit dieser Vereinbarung kompatibel ist, auch wenn der Kunde es nicht weiß. Meiner Meinung nach entspricht dies wirklich dem Geist von Agile, da Sie die Methoden an Ihr spezielles Arrangement anpassen sollten.
Wenn der Kunde wirklich nicht mit den Konsequenzen dieser drei Optionen oder von Agile leben kann, fällt es mir schwer, mir vorzustellen, wie sich dieser Kunde wirklich lohnen könnte.
quelle
Ich denke, es ist schwierig, aber immer noch möglich. Ich denke, Roberts Proxy-Idee funktioniert, aber es ist notwendig, dass der Proxy so viel Zeit wie möglich mit dem "echten" Kunden verbringt, damit er die Dinge aus seiner Sicht sehen kann. Auf diese Weise kann der Proxy feststellen, welche Funktionen wirklich wichtig sind, und ein Gefühl für die Benutzererfahrung bekommen, die der Client erwartet / wünscht.
Aber irgendwann müssen Sie die Software dem "echten" Kunden zeigen ...
quelle
Es ist möglich, echte Kunden zu vermeiden, in der Tat ist es manchmal für die Regulierung erforderlich. In der Regel sind die Kunden von medizinischer Software nicht beteiligt. In diesen Fällen können andere Einheiten die Kundenrolle ersetzen, beispielsweise kann das Marketing-Team als Kunde betrachtet werden.
quelle
Für Agile ist die enge Schleife erforderlich, um das große vordere Design zu ersetzen, das schwierig ist - Ziemlich schwierig, aber es kann tatsächlich durchgeführt werden. Agile ist nicht der einzige Weg.
Vielleicht möchten Sie eine der Modifikationen von Agile finden - es gibt viele und eine, die sich wahrscheinlich mit diesem speziellen Problem befasst, aber wenn Sie dies nicht können, können Sie sich Ihre eigene zusammenstellen.
Alle diese Prozesse wurden von klugen Leuten erfunden - und kluge Leute können jeden Prozess zum Laufen bringen. Sie glauben nicht, dass der Wasserfall erfunden wurde, weil er für niemanden funktioniert hat? Es entwickelte sich, weil einige Leute es zum Laufen bringen konnten, und andere sahen zu und sagten: "Ich muss das verfeinern und es an MEIN Team weitergeben, das scheinbar nicht so effektiv produzieren kann" - zu diesem Zeitpunkt funktionierte es wahrscheinlich besser als sie Wenn Sie jedoch nicht erkennen, dass nicht jeder Programmierer jedes Problem lösen kann, kann dies Sie wirklich verblüffen, warum zwei Teams, die denselben Prozess verwenden, unterschiedliche Ergebnisse erzielen können.
Das Problem ist, dass viele Prozesse Talent erfordern, um sie umzusetzen - wir sprechen von so seltenem Talent wie Profisportlern aus einem Pool von Leuten, die jemals eine Sportart gespielt haben - die meisten von uns haben wahrscheinlich noch nie jemanden getroffen, der dazu in der Lage ist Die beschissenen Prozesse wie der Wasserfall funktionieren und deshalb denken so viele Menschen, dass es nicht gelingen kann - sie haben es nie gesehen.
Es erfordert viel weniger Talent, um Agile zum Laufen zu bringen, erfordert jedoch einige sehr spezifische Investitionen, z. B. den Kunden dazu zu bringen, ständig zu beobachten, was Sie tun, damit sich Fehler nicht ausbreiten, und Dinge wie rücksichtsloses Refactoring, damit Sie sich nicht aufbauen Eine technische Schuld, die das Team erst in wenigen Monaten lösen kann.
quelle
Definieren Sie den Kunden.
Ist es eine andere Firma? Eine andere Person?
Ist es ein anderes Team in Ihrem Unternehmen?
Ist es ein Produktmeister in Ihrem Unternehmen?
Bist du es?
All dies ist möglich und unter bestimmten Umständen durchaus sinnvoll. Sie möchten nicht einen Blick in den Tunnel werfen, was es heißt, agil zu sein. Ein definitives NEIN wäre also falsch. JA hingegen erfordert ein wenig Querdenken.
Denken Sie einen Moment über das Wort Agil nach. Die sehr kluge Gruppe von Menschen, die den Begriff geprägt hat, hätte keine bessere Metapher für das Konzept finden können, das sie beschreiben wollten. Wenn du Agility sagst , woran denkst du dann? Eine Flotte von Füßen sein? Vielleicht schnell zu reagieren? Schnell anzupassen?
Denken Sie jetzt über alle allgemein akzeptierten Agile-Praktiken nach und fragen Sie sich, was sie wirklich für Softwareentwicklungsmethoden bedeuten, die als agil gelten .
Ich bin der Kunde in jeder Hinsicht für meine Soloprojekte. Manchmal trage ich sogar einen richtigen Hut, wenn ich meine Kundenrolle wirklich mental verändern möchte . Das macht mich nicht weniger beweglich als bei der Arbeit. Soweit es mich interessiert, kann meine Katze der Manager sein. Er sorgt dafür, dass ich ab und zu eine Pause mache und erinnert mich daran, dass ich nicht von einer einzelnen Aufgabe besessen bin. Vielleicht bevorzugen Sie Ihre "Pomadoro-Technik", aber ich bevorzuge den "Rascal" -Timer !! Die Sache ist, ich arbeite in einem streng agilen Prozess, wenn ich Code für mich selbst schreibe. Ich bin kein Hacker-Come-Cowboy-Typ, der ein Leben mit endlosen Entwicklungsspitzen führt und nichts erreicht. Ich fertige meine Software gerne an, plane die Entwicklung in Bezug auf meine Arbeit und mein Privatleben und führe sie so aus, wie ich es erwarten würde, wenn ich für einen echten Kunden arbeiten würde. Wenn Dinge meinen Zeitplan stören, passe ich meine Projektarbeit entsprechend an und priorisiere sie. Ich verwende alle agilen Standardpraktiken und -techniken, die ich alleine anwenden kann, und ich "liefere" arbeiten Code für mich selbst (oder einen Freund oder Kollegen zu testen), so oft ich kann. Wenn all dies nicht agil ist, frage ich Sie, was ist das?
Meine Antwort lautet also: Ja , Sie können ein agiler Softwareentwickler sein und Sie können eine agile Methodik anwenden, und Sie brauchen nicht unbedingt den Kunden oder sogar den Manager. Sie können ganz alleine an einem Projekt arbeiten und mehrere Hüte tragen. Es ist jedoch möglicherweise nicht unbedingt ideal , diese anderen Rollen abzuschaffen, da es sehr hilfreich ist, mit anderen zusammenzuarbeiten, um ein Ziel zu erreichen. Sie dienen als Resonanzboden für Ihre Ideen und erfüllen Ihre Anforderungen, die Sie sonst nur schwer sinnvoll selbst generieren können. Die andere sehr wichtige Rolle, die der Kunde und der Manager erfüllen, besteht darin, Sie auf Ihre Ziele zu konzentrieren, ohne endlose Funktionen hinzuzufügen und Ihren Code über das hinaus zu verfeinern, was möglicherweise unbedingt erforderlich ist.
Dennoch, wenn Sie diszipliniert arbeiten, sich strikt an die Methode Ihrer Wahl halten und agile Praktiken anwenden und wenn Sie aus dem Ruder laufen oder Ihre Meinung (wenn Sie Ihren Kundenhut tragen) und Ihr Produktdesign oder Ihre Richtung ändern Wenn Sie Ihren Zeitplan anpassen und Ihre Prioritäten so anpassen können, wie Sie es sich von Ihrem Kunden erwarten, sind Sie agil.
quelle