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:
- 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.
- 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,