Oft bin ich mit der Situation konfrontiert, dass ein neuer Kunde mit einer Anwendung zu mir kommt, die buchstäblich Hunderte unnötiger Funktionen enthält, und es ist klar, dass die Dinge drastisch vereinfacht werden müssen, damit das Projekt Erfolgschancen hat. Wie können Sie den Kunden davon überzeugen, einen MVP-Ansatz (Minimum Viable Product) zu wählen und zu vereinfachen?
bearbeiten:
Die derzeit beste Antwort ist es, dem Kunden einen Zeit- / Kostenvoranschlag für die große Anwendung zu liefern. Ich mag diese Antwort nicht besonders, weil sie das eigentliche Problem mit dieser Situation nicht anspricht. Und das ist - es ist eine schlechte Praxis, eine massive Anwendung zu spezifizieren und dann zu versuchen, sie von Anfang an zu erstellen. Ich fühle mich viel wohler, wenn ich anfänglich eine kleine, einfache MVP-Stiftung aufbaue. Und dann fügen Sie dieser Grundlage nacheinander kleine Funktionen hinzu. Wie kann ich den Kunden davon überzeugen, auf diese Weise an die Erstellung von Software heranzugehen?
Antworten:
Indem Sie abschätzen, wie viel Geld / Zeit es kostet, diese Hunderte von Funktionen mit hoher Qualität auszuführen. Sehr, sehr wenige Kunden werden ihr Geld dort anlegen, wo ihr Mund ist.
quelle
Zwei Wörter: User Stories.
Ich habe erfahren, dass der schnellste Weg, einem Kunden zu helfen, einen Hinweis zu erhalten , darin besteht , mich für jede Funktion oder Seite, die er möchte, durch eine User Story führen zu lassen. Es passieren verschiedene Dinge, einschließlich:
Ernsthaft. User Stories von Eigentümern sind eines der besten Tools, die ich kenne, um dem Prozess zumindest einen gewissen Verstand zu verleihen.
quelle
Fragen Sie bei der Erörterung des Kosten- und Zeitaspekts für die Produktion nach einer Rangfolge der Anforderungen ("muss", "sollte" und "schön zu haben"), damit die Mindestanforderungen an die Produktmerkmale erfüllt werden, die von wesentlicher Bedeutung sind "must have" in Version 1, dann setzen Sie den Rest der Anforderungen in Gruppen von Rückständen, die als Sprints nach der ersten Version durchgeführt werden könnten. Hoffentlich werden die nicht wesentlichen "schön zu haben" -Elemente an den hinteren Teil der Packung gelangen, und bis Sie diese Sprints erreicht haben, werden neue, wesentlich wichtigere (aus der tatsächlichen Erfahrung mit dem Produkt) an die Spitze geschwommen sein.
Der Kunde sollte sich darüber im Klaren sein, dass Sie die Kosten für sein Geschäft und die Wichtigkeit einer schnellen Produktbeschaffung in Betracht ziehen und dass Sie das "nice to have" nicht direkt ablehnen, indem Sie es in den Rückstand aufnehmen.
Bearbeiten, um auf OP zu reagieren Bearbeiten: Um den Kunden davon zu überzeugen, warum es eine gute Idee ist, ein Produkt mit minimaler Funktionsfähigkeit frühzeitig freizugeben, erklären Sie, dass es bis zur Verwendung durch echte Benutzer schwierig ist, zu erkennen, ob es erfolgreich sein wird (insbesondere in Bezug auf die Benutzerfreundlichkeit). Wenn der Kunde zögert, ein frühes Produkt für seine gesamte Nutzerbasis bereitzustellen, empfehlen Sie eine "eingeschränkte Betaversion", die nur einer bestimmten Teilmenge seiner Kunden zur Verfügung steht. Sagen Sie ihnen, die Kehrseite dieses Ansatzes ist ein langer, kostspieliger Entwicklungszyklus mit der späten Feststellung, dass das Produkt unbrauchbar ist. 37 Signals hat hierzu einige gute Referenzen erstellt: Getting Real und Rework . The Getting Real ist kostenlos im Internet verfügbar.
quelle
Die Hauptursache für Ihre Frustration mit der Situation ist wahrscheinlich Wahrnehmung und irreführende / falsche Begriffe, die vom Kunden verwendet werden. Der Kunde kommt normalerweise nicht mit einer Liste von Anforderungen zu Ihnen , aber eine Wunschliste von allem, was ihm einfällt, könnte für ihn nützlich sein. Dies sind nicht alle Anforderungen, da der Kunde noch nicht wirklich darüber nachgedacht hat, ob jede Funktion wirklich erforderlich ist .
Dies ist nicht unbedingt immer ein Problem
Wenn Ihr Kunde das Geld für all diese Funktionen hat und bereit ist, sich davon zu trennen, und es Ihnen nicht wirklich wichtig ist, das Tatsächliche, Wirkliche zu lösen Probleme zu die der Kunde hat, dann könnte dies ein sehr lukratives Projekt sein. Es kommt nur sehr, sehr selten vor und für die meisten Entwickler ist es eine umwerfende Arbeit, da Sie im Voraus das Gefühl haben können, dass das Projekt am Ende für den Kunden nicht erfolgreich sein wird (auch wenn es für Sie als Entwickler finanziell erfolgreich ist). Es ist auch ein hohes Risiko, da Sie wahrscheinlich mit einem Fixkostenprojekt mit viel Unsicherheit enden und es wirklich problematisch ist, das Risiko bei großen Projekten falsch einzuschätzen.
Was ist, wenn es ein Problem ist?
Nehmen wir an, Sie sind nicht in dieser seltenen Situation. In diesem Fall möchten Sie die beiden Hauptmängel der Wunschliste wie folgt beheben:
Meiner Erfahrung nach müssen Sie sich an die Adresse 2 wenden, um 1 zu beheben. Wenn Sie sich auf das eigentliche Problem beschränken, haben Sie als Entwickler jetzt die erforderlichen Informationen, um kreative Schritte zur Lösung des Problems in einer Weise zu unternehmen, an die der Kunde selbst nie gedacht hat. Diese Lösungen sind wahrscheinlich viel billiger und schneller als die Implementierung der vollständigen Wunschliste.
Wie beheben Sie das?
Wie Matthew Flynn in seiner Antwort sagt - lassen Sie den Kunden zunächst die Anforderungen priorisieren. Das ist nicht immer einfach, aber zwingen Sie sie, es zu tun. Verwenden Sie bei Bedarf den Satz "Wenn jemand eine Waffe an Ihren Kopf halten würde, welche Einzelanforderung würden Sie erfüllen?". Dabei stellt sich häufig heraus, dass der Kunde wirklich keine klare Vorstellung davon hat, was die individuellen Anforderungen bedeuten. In diesem Fall tun Sie, was Peter Rowell vorschlägt, und lassen Sie den Kunden User Stories durcharbeiten. Sie und der Kunde werden anfangen, das Problem und die Anforderungen viel besser zu verstehen, und dann können Sie zur Priorisierung zurückkehren. Wiederholen Sie diese Schritte so oft, bis Sie sich sicher fühlen, dass Sie das Problem des Kunden lösen können .
Wie beantwortet das die Frage nach einer Lösung? Sobald Sie eine priorisierte Anforderungsliste erstellt haben, haben Sie die Eingaben, die Sie benötigen, um Ihrem Kunden einen inkrementellen Entwicklungsprozess vorzuschlagen. Sie müssen es nicht Agile nennen, aber Sie können vorschlagen, den Vertrag für jede Anforderung (oder unteilbare Gruppe von Anforderungen) in kleinere Teile zu zerlegen und diese nacheinander mit Validierung durch den Kunden auszuliefern. Oder nutzen Sie die zahlreichen online und offline verfügbaren Ressourcen, um den Kunden davon zu überzeugen, dass es in seinem besten Interesse ist, bei einem der agilen Entwicklungsstile zusammenzuarbeiten. In jedem Fall können Sie Ihren Auftrags- / Projektvorschlag in einer Form vorlegen, die diese Anforderungsbausteine in vorrangiger Reihenfolge mit jeweils eigenen Kosten und Abschlüssen klar vorschlägt. Halten Sie die Karotte vor den Kunden,
quelle
Ich würde zunächst versuchen, ihnen zu erklären, dass ihre Anforderungen nicht realistisch sind, und ihnen eine Reihe von Gegenanforderungen vorlegen. Erklären Sie, dass dies das Problem einfacher und schneller lösen wird, also mit weniger Kosten und Risiken. Versuchen Sie nicht, dies zu einem technischen Gespräch zu machen, dem Kunden ist das egal. Der Kunde legt großen Wert darauf, rechtzeitig ein gutes Produkt zu erhalten und seinen Geschäftsfall zu lösen. Wenn sich der Kunde nicht rührt, akzeptieren Sie entweder den Vertrag und erledigen Sie die Arbeit oder lehnen Sie ab und erklären Sie dem Kunden, warum Sie in dieser Form keine Verantwortung für das Projekt übernehmen können.
quelle
Ähnlich wie die anderen Leute vorgeschlagen haben, aber etwas anders, würde ich vorschlagen, dass alles der Kunde gültig ist, aber sie müssen PRIORISIEREN. Welcher Gegenstand muss zuerst erledigt werden? Welcher Gegenstand muss als zweiter erledigt werden? Am wichtigsten ist, wenn Sie keine Zeit mehr haben, welche Gegenstände tut es am wenigsten weh, sie nicht zu haben. Priorisieren Sie jeden Artikel von 1 bis 732 (oder was auch immer) und vervollständigen Sie sie in dieser Reihenfolge.
quelle
Ein historisches Beispiel für eine Anwendung, die aufgrund überhöhter Anforderungen über das Budget und in Verzug geriet, ist die virtuelle Akte des FBI. Es sollte mehrere Dutzend bestehende Anwendungen ersetzen, und alle mussten bei der Umstellung auf einmal vollständig funktionieren. Das Projekt wurde schließlich abgebrochen. Es wäre erfolgreich gewesen, ein Framework zu entwerfen und einzelne Anwendungen schrittweise in das neue System zu ersetzen. Stattdessen führen Politik und Unfrieden dazu, dass jeder Stakeholder der Anwendung erklärt, dass seine App die wichtigste sei, und jeder hat seine Spezifikationen mit "Must Haves" aus allen Funktionen versehen, die er der vorhandenen App hinzufügen wollte. Am Ende überstieg das Volumen der täglich geschriebenen Änderungsanforderungen die tatsächlich täglich geschriebene Codemenge.
Ich habe gesehen, dass das "Ich muss alles haben" in 2 Fällen funktioniert. In einem Fall ließ der große Finanzkunde (ausgerechnet mit Wasserfall) 40 verschiedene Systeme (unser Unternehmen hat eines der 40 Systeme hergestellt) auf einen Schlag ersetzen und betriebsbereit machen. Integrationstests und Kommunikation waren große Probleme. Meiner Schätzung nach haben sie bei Telefonkonferenzen etwa 100.000 US-Dollar pro Tag eingespart (wenn Sie den Abrechnungssatz für alle Anrufer zählen). In beiden Fällen waren starke Verhandlungsführer erforderlich, um eine Liste der zu liefernden Produkte zusammenzustellen und die Füße aller auf den Boden zu nageln. Es gab kein Verschieben der Torpfosten, keine Neuverhandlung. Beide Jobs endeten pünktlich und genau nach Vorgabe. Einer lag weit über dem Budget, der andere lag im Budget. Dafür brauchen Sie sehr gute Projektmanager, die wissen, was ihre Teams leisten können (die Art, die sagen kann, dass Feature Q 3 benötigt).
Da es keine ausgezeichneten PMs, Verhandlungsführer und Kennzahlen gibt, würde ich empfehlen, den Kunden zu inkrementellen Lieferungen zu drängen. Wenn sie immer noch den gesamten Goldstein auf einmal wollen, können sie möglicherweise besser bedient werden, indem sie ihnen helfen, eine andere Beratung zu finden. Manchmal lautet die beste Antwort: "Wir können Ihnen nicht helfen."
quelle
Kurze Antwort: Ich würde meinen Kunden zuhören und mit ihnen den Mittelweg finden.
Ich würde vorschlagen, dem Kunden zuzuhören und das Projekt je nach Budget und Zeitplan in Phasen (Release, Release2 usw.) aufzuteilen.
Anschließend können Sie die einzelnen Phasen der Bereitstellung, des Budgets und der Priorisierung der erforderlichen Funktionen, die von der Anwendung bereitgestellt werden sollen, abschätzen.
Daher ist die Definition des Arbeitsumfangs und der zu erbringenden Leistungen der richtige Weg :)
quelle
Wie in anderen Antworten angegeben, ist die Priorisierung sehr wichtig. Eine praktische Möglichkeit hierfür ist die MoSCoW-Methode . Vielleicht möchten Sie aber mit der Aufteilung der gesamten Liste beginnen, da sonst die Funktionsliste selbst zu Verständnisproblemen für Sie (oder Ihren Kunden) führt :)
Daneben haben Sie das Problem, das Problem als Ganzes zu betrachten. Sie können dies wahrscheinlich lösen, indem Sie mit Ihrem Kunden zusammensitzen und die folgenden Schritte ausführen:
Auf diese Weise erhalten Sie eine schöne und kompakte Ansicht Ihrer gewünschten Funktionen von oben nach unten und können mit dem Lenker verschiedene Iterationen definieren, um mit einer Basis zu beginnen und diese mit anderen Funktionen zu erweitern.
quelle