Wie kann man einen nicht-technischen Kunden davon überzeugen, dass seine Anwendungsspezifikation vereinfacht werden muss?

15

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?

Ryan
quelle
3
Es hört sich so an, als würden Sie den Unterschied zwischen Wasserfall und agiler / iterativer Entwicklung beschreiben. Wenn Sie die Vor- und Nachteile dieser beiden Ansätze analysieren, werden Sie alle Vorteile von Agile erkennen und können diese als Argument verwenden. Ich habe eine Liste, aber sie ist momentan nicht praktisch.
Bob Horn

Antworten:

15

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.

Telastyn
quelle
10
und ich würde eine Alternative vorstellen, die die Chancen, dass Sie das Projekt erhalten, mit realistischeren Zielen erheblich erhöht.
Paul Hiemstra
1
Teilen Sie die Schätzungen nach Möglichkeit in "core", "nice to haves", "you must be dreaming" (aber formulieren Sie es nicht so vor dem Kunden). Seien Sie vorsichtig, wenn Sie die gesamte kostenlose Business Analysis-Arbeit ausführen.
Mattnz
@ PaulHiemstra - ausgezeichneter Punkt. Ich bin es gewohnt, mit internen Kunden zu arbeiten, aber der Rat gilt auch dort.
Telastyn
@ Telastyn siehe Beitrag bearbeiten
Ryan
Sie müssen nicht alle diese Funktionen einschätzen. Seien Sie agil, wählen Sie die besten 20 aus und sagen Sie, dass Sie diese gerne für $ x in Version 1.0 einfügen werden. Geben Sie an, dass Sie keine Zeit im Voraus investieren möchten, um den Preis der Versionen 1.0 bis 1.8 zu schätzen.
MSalters
12

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:

  1. Sie müssen darüber nachdenken, was zum Teufel die Seite / das Feature eigentlich tun soll.
  2. Wie fragst du nach mehr und mehr Details ("und dann? ... und dann? ..."), werden sie verstehen, dass das Ganze nicht dadurch zustande kommt, dass Magic Space Monkeys ™ einfliegen und es tun es über das Wochenende.
  3. Sie werden zu echten Partnern im Entstehungsprozess. Dies bedeutet, dass sie verstehen, warum eine Änderung ihrer Meinung über etwas, das bereits zu 80% abgeschlossen ist, a) eine Verzögerung des Zeitplans und b) eine Kostenerhöhung zur Folge hat.

Ernsthaft. User Stories von Eigentümern sind eines der besten Tools, die ich kenne, um dem Prozess zumindest einen gewissen Verstand zu verleihen.

Peter Rowell
quelle
7

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.

Schlüsselfertig
quelle
Das ist genau die Verwendung von Nizza :) Indem man es nicht von der Liste entfernt, bleiben die Leute glücklich!
Geerten
Ähnliches gilt für den MuSCoW-Ansatz.
Thinhbk
3

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:

  1. Es ist unwahrscheinlich, dass der Kunde eine genaue Vorstellung von den Kosten für die Erstellung einer so großen Liste von Anforderungen hat. Daher ist es unwahrscheinlich, dass Sie den Vertrag für den Betrag erhalten, den Sie tatsächlich dafür benötigen.
  2. Es ist unwahrscheinlich, dass diese Wunschliste das eigentliche Problem, das der Kunde hat und lösen möchte, genau und präzise beschreibt.

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,

Joris Timmermans
quelle
Vielen Dank. Wenn Sie jedoch wissen, dass der Kunde pro Projekt zahlen möchte und die gesamte Analyse im Voraus durchgeführt werden muss (was möglicherweise Dutzende von Stunden in Anspruch nehmen kann), bevor der Projektpreis festgelegt wird, wie strukturieren Sie dann die Vergütung für die Erstanalyse-Arbeit?
Ryan
@Ryan - Ich würde es absolut ablehnen, detaillierte Analysen für ein großes Projekt durchzuführen, da a) dies die falsche Idee ergibt (siehe "Cone of Uncertainty" - de.wikipedia.org/wiki/Cone_of_Uncertainty ) und b ) es ist tatsächlich wertvolle Arbeit, die der Kunde an anderer Stelle leisten könnte, um das Projekt fertigzustellen. Nachdem ich mindestens einmal genau in dieser Situation gelandet bin, stelle ich jetzt sicher, dass wir auch die Analysearbeiten in Rechnung stellen (erstattbar, wenn der Kunde das Projekt annimmt).
Joris Timmermans
1

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.

Paul Hiemstra
quelle
1

Ä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.

Matthew Flynn
quelle
1

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."

Tangurena
quelle
0

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 :)

Yusubov
quelle
0

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:

  • Gehen Sie die Features global durch und ordnen Sie sie den Kategorien zu
  • Priorisieren Sie (mithilfe von MoSCoW) die Kategorien und definieren Sie möglicherweise eine Hierarchie (eine grundlegende Kategorie mit Standardfunktionen, Kategorien für Hauptfächer, Kategorien für bestimmte Variationen der Hauptfächer). Dies kann die Kategorien ändern, die Sie im vorherigen Schritt definiert haben (dank neuer Erkenntnisse).
  • Gehen Sie die einzelnen Funktionen nacheinander durch und ordnen Sie sie einer Kategorie zu
  • Priorisieren Sie (mithilfe von MoSCoW) die Elemente in den Top-X-Kategorien.

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.

Geerten
quelle
Okay. Aber wenn der Kunde auf Projektbasis arbeiten möchte, wie können Sie ihn davon überzeugen, Sie für all diese Planungsarbeiten zu bezahlen, bevor der Projektvertrag geschlossen wird?
Ryan