Wie verwalten Sie Kunden hinsichtlich sich ändernder Anforderungen?

8

Steve Yegge's Weisheit obwohl die meisten Entwickler mit Anforderungen konfrontiert sind die von nicht technischen Kunden gesammelt wurden. Manchmal gibt es Projektmanager, die mit den Kunden umgehen und ihre Anforderungen übersetzen, manchmal nicht. In jedem Fall ist die Tatsache, dass sich die Anforderungen ändern, unvermeidbar.

Das meiste, was "gute Programmierpraxis" ausmacht, hat mit Entwicklungssystemen zu tun, die anpassungsfähig , damit sie sich ändernden Anforderungen standhalten können. Prinzipien wie YAGNI, DRY, lose Kopplung usw. tragen dazu bei. Iterative Entwicklungsprozesse wie Agile versuchen auch, das Problem anzugehen, ein sich bewegendes Ziel zu treffen, und natürlich macht es ein System im Test möglich, Änderungen viel leichter durchführbar zu machen.

Nichtsdestoweniger scheint es, dass sich für viele von uns ändernde Anforderungen nicht nur die Qualität unserer Software beeinträchtigen , kann aber auch unsere Motivation schwächen und uns dazu bringen, jemanden erstechen zu wollen.

In dieser Frage geht es darum, wie Sie den Kunden verwalten können, damit er seine Anforderungen so ändern kann, wie er es braucht, und willkürliche oder frivole Änderungen ablehnen. Wie machst du es?

  • Haben Sie Projektmanager, um die Entwickler vom Kunden zu isolieren?
  • Haben Sie einen formellen Change-Management-Prozess? Change Manager?
  • Wie schwierig ist es für den Kunden, eine Änderung zu bekommen, wenn er sie wirklich braucht?
  • Umgekehrt, wie leicht ist es für einen Kunden, eine Änderung zu erhalten, wenn es "frivol" ist?
  • Wie viel Detail geben Sie dem Kunden, wenn er die Kosten einer Änderung erklärt?
  • Wie schnell können Sie dem Kunden diese Informationen geben, nachdem er eine Änderung angefordert hat?
  • Welche Faktoren können den Prozess torpedieren (zB PMs, die dem Kunden nicht nein sagen können? )
  • Was funktioniert für Sie?
Adam Bellaire 26.01.2009, 13:10
quelle

7 Antworten

9

Wenn Sie nach der idealen Welt suchen, in der der Kunde nie seine Meinung ändert oder Sie die ideale Spezifikation erhalten - Sie sind im falschen Geschäft . Der effektivste Mechanismus, den ich gefunden habe, um Kundenerwartungen und Änderungsanfragen zu verwalten, besteht darin, ein genaues Messsystem einzuführen.

So betreibe ich mein Team:

1) Wir beginnen mit User Stories. Der Kunde ist daran beteiligt, sie zu schreiben, und das Entwicklungsteam schätzt ein, wie lange jede User Story in relativer Weise dauert.

2) Anhand früherer Erfahrungen nehme ich diese relativen Schätzungen (Story Points) und erstelle einen groben Zeitplan für den Abschluss der wichtigsten Meilensteine ​​des Projekts.

3) Innerhalb dieser Meilensteine ​​führen wir 2-wöchige Iterationen durch. Der Kunde ist an der Festlegung der Genehmigungskriterien beteiligt und ob die Geschichte genehmigt wurde oder nicht. Ein einfaches Burn-Down-Diagramm zeigt dem Kunden, wie nahe wir dem Startziel sind.

4) Oftmals wird der Kunde während der Genehmigungssitzungen eine Änderung anfordern, da das Feature nicht so funktioniert, wie er es erwartet hat (obwohl es seinen ursprünglichen Zulassungskriterien entsprach). Zu diesem Zeitpunkt generieren Sie eine neue Geschichte mit einer neuen Schätzung. Sie können Ihre Meilensteindaten auch entsprechend anpassen. Dies bringt dann den Ball zurück in das Kundengericht:

  • Oft merken sie, dass ihre Änderungsanfrage es nicht wert ist (sie müssten von ihrem Chef genehmigt werden) und wir werden die neue Funktion töten
  • Manchmal ist es wichtig, dass wir das Fälligkeitsdatum verschieben, um die Funktion in
  • zu erhalten
  • Und schließlich gibt es immer die Möglichkeit, ein anderes nicht so wichtiges Feature zu töten, das eine gleich lange Zeit benötigt.

Der Schlüssel besteht nicht darin, vor Änderungsanforderungen zu fliehen, sondern darauf, dass jede Änderungsanforderung Auswirkungen auf das Produkt hat. Es gibt kein kostenloses Mittagessen.

    
Jim 26.01.2009, 13:36
quelle
3

Ich arbeite als unabhängiger Entwickler und kontaktiere so direkt mit Kunden. Es ist normal, dass sie meistens nicht wissen, was sie eigentlich wollen. Also fangen wir langsam an und ich gebe ihnen früh einen Prototyp, mit dem ich dann spielen werde und dann werden die Änderungen graduell gemacht. Wenn ich denke, dass Kunden "frivole" Änderungen wünschen, dann sage ich ihm, dass diese Änderung nicht funktioniert oder nicht benötigt wird. Wenn es 5 Minuten Arbeit ist, dann mache ich es vielleicht sogar.

Es hilft, später zu dem Vertrag eine Wartungsklausel hinzuzufügen, um Geld für die kleinen Änderungen zu bekommen, die später auftauchen werden. Für größere Änderungen berechnen Sie nur stundenweise.

    
Riho 26.01.2009 13:18
quelle
2

Es ist schwierig, den Kunden zu managen, und es kann sehr leicht schiefgehen.

Ich finde, dass Sie so früh wie möglich das Vertrauen des Kunden gewinnen müssen. Für mich denke ich, dass Sie das tun können durch:

  • Bitten Sie den Kunden, einen Produktmanager zu ernennen, der klar genug denkt, um die Anforderungen, die er / sie wünscht, zu kommunizieren und eine starke Arbeitsbeziehung mit ihm aufzubauen.
  • Versuchen Sie wirklich, ihr Geschäft zu verstehen - Sie müssen kein Domänenexperte sein, aber Sie müssen wissen, woher der Kunde kommt.
  • Stellen Sie relevante Fragen zu dem, was sie wollen - nehmen Sie nicht an, wonach sie (zunächst) fragen, was sie wirklich wollen .
  • Zuerst alle Änderungen willkommen . Dies ist nicht der Kunde, der nervig und unbeständig ist, sondern eine Gelegenheit, besser zu verstehen, was der Kunde wirklich will. Wenn dies Zeit und Geld kostet, müssen Sie es möglicherweise als Verlustleiter akzeptieren.
  • Liefert frühzeitig einen Prototyp und bringt so viel Kunden-Feedback wie möglich mit.
  • Geben Sie dem Kunden ein Kick-Ass-Produkt .

Sobald Sie dies getan haben und der Kunde Ihnen vertraut, werden Sie in der Lage sein, unangemessene Änderungen zurückzuschlagen oder zusätzliche Zahlungen / Zeit für Dinge zu verlangen, die zuvor nicht in Betracht gezogen wurden.

Natürlich werden Sie nicht in der Lage sein, diese Art von Beziehung mit jedem Kunden aufzubauen, einige sind Idioten (in diesem Fall sehen Sie, ob Sie einen anderen Produktmanager haben können), aber Sie sollten tun Sie immer so viel wie Sie , um eine effektive Arbeitsbeziehung aufzubauen.

    
DanSingerman 26.01.2009 14:47
quelle
1

Ich würde einen Begriff der sich entwickelnden Anforderungen den "sich ändernden Anforderungen" vorziehen. Professor MMLehman ( Ссылка und Ссылка ) hat einen wesentlichen Beitrag zur Erforschung der Softwareentwicklung geleistet; Seine Arbeiten deuten auch darauf hin, dass sich nicht alle Arten von Anforderungen entwickeln. Man könnte sich glücklich schätzen, wenn sie zufällig an einem dieser Systeme arbeiten, wo die Anforderungen gleich bleiben (d. H. Mathematikbibliotheken usw.).

Für den Rest von uns legt die Erfahrung nahe, dass Entwickler möglichst viele Informationen zu den Anforderungen bevorzugen, während Kunden oder Endnutzer die Möglichkeit schätzen, Anforderungen so spät wie möglich in den Entwicklungsprozess einzugeben oder anzupassen. Erstere benötigen detaillierte Informationen, um die Planung und Gestaltung der Lösung zu erleichtern. Letztere können durch die verspätete Änderung einer Anforderung einen strategischen Vorteil erlangen, da sie dem Kunden Handlungsspielraum gibt, um auf die sich verändernde Umgebung oder die infolge der frühere Phasen / Iterationen des Projekts. Ein Kompromiss zwischen der Fähigkeit, einen detaillierten Plan zu haben und Dinge zu ändern, bestimmt weitgehend den Entwicklungsprozess selbst (Wasserfall, Agile, Spirale usw.).

Einige praktische Hinweise zur Entwicklung der Anforderungen:

  • Bauen Sie in den ursprünglichen Plan etwas Raum ein, um sich ändernden Anforderungen, mehreren Prüfpunkten oder Iterationen Rechnung zu tragen.

  • Stellen Sie entweder volatile Anforderungen in den Anfang des Projekts, so dass eine Art Prototyping oder Machbarkeitsstudie sie wahrscheinlich klären oder die Änderung bis spät in das Projekt planen wird.

  • Überwachen Sie, dass die Anforderungen weiterhin relevant sind.

  • Halten Sie eine aktuelle, priorisierte Liste der aktuellen Anforderungen bereit. Nichts anderes trägt dazu bei, die Kontrolle über die Entwicklung zu behalten, da alle Interessengruppen über aktuelle "Must Haves" einschließlich ihrer relativen Priorität und Kosten informiert sind.

  • Halten Sie die Kundenerwartungen darüber fest, wie lange die Dinge dauern werden; Dies hilft auch, den Fokus zu behalten.

  • Führen Sie einen formellen Prozess zum Ändern oder Hinzufügen von Anforderungen ein, wenn Sie dies benötigen. Die Prozessbeschreibung muss die Rollen der Beteiligten, die Häufigkeit der Überprüfungen usw. festlegen. Sie könnte als guter Schutz gegen einige politische und opportunistische, aber nicht wesentliche Anforderungen dienen.

  • Erstellen Sie etwas Zeit für das Refactoring, sogar für die erste Version. Sie werden sehr wahrscheinlich die gesamte oder einen Teil der Lösung als Ergebnis eines zusätzlichen Wissensgewinns während der Entwicklung auslösen.

Vlad Gudim 27.01.2009 16:14
quelle
1

Sie können nicht erwarten, dass Kunden zu Beginn wissen, was sie wollen, also müssen Sie anpassungsfähig sein. Aber auch du musst den Wandel aus Gründen der Veränderung stoppen.

Dies ist für 'interne' Kunden.

Ich habe festgestellt, dass das Verhandeln mit dem Kunden ein effektiver Weg ist. Sie können jedes Merkmal haben, das sie wollen, wenn sie darauf warten, oder wenn sie andere (noch zu implementierende) Funktionen opfern. Dies zwingt sie, über den Wert der Veränderung nachzudenken, die sie in Bezug auf das System als Ganzes verlangen.

Manchmal funktioniert das gut und ein guter Kompromiss ist erreicht. Zu anderen Zeiten wirft der Kunde seine Spielsachen aus dem Kinderwagen und geht trotzdem hoch, um das Feature umzusetzen und die Qualität zu reduzieren.

Wenn der Kunde zahlt, ist es ein anderes Ballspiel. Sie müssen darauf hingewiesen werden, dass sich die Kosten ändern und dass die Kosten steigen, wenn das Produkt sich dem Abschluss nähert. Dies bedeutet, dass Sie eine Vielzahl von Vorabanalysen durchführen müssen, um sicherzustellen, dass die Spezifikationen vereinbart werden. Dann kannst du messen, was sich geändert hat. Dies ist möglicherweise nicht die effektivste Lösung für jede Partei, aber es hält die Dinge geschnitten und trocken. Also sind sie nicht unzufrieden und du machst nicht viel Arbeit umsonst.

    
Jeremy French 26.01.2009 14:22
quelle
1

In der Softwareentwicklung ist Veränderung nur eine Tatsache. Es wird passieren. Für uns hat alles seinen Preis. Wir machen fast jede Änderung, die der Kunde wünscht, aber es gibt immer eine Zeitschätzung und damit verbundene Kosten. Sagen wir dem Kunden nie - normalerweise nicht, aber manchmal kommt die Änderungsanfrage sehr teuer. Bei möglichen Sicherheitsbedrohungen ziehen wir die Grenze. In diesem Fall erklären wir ihnen in aller Ruhe, dass wir der Anfrage nicht nachkommen können.

Wie viel erklären wir dem Kunden, wir erklären, wo das Geld verteilt wird, so viel für die Entwicklung, so viel für die Analyse usw. Wir sagen ihnen nicht explizit, warum etwas so kostet wie es tut. Jetzt gebe ich zu, das ändert sich bei einigen unserer Kunden etwas. Einige von ihnen bekommen eine sehr detaillierte Abrechnung darüber, wie viele Stunden wo verbracht werden. Um den Vertrag zu bekommen, mussten wir zustimmen, obwohl das für uns sehr selten ist.

Wir haben Verkäufer, die manchmal nicht nein sagen können, und das kann Probleme verursachen. Wir haben viel Zeit darauf verwendet, aber leider taucht es immer noch auf. Wir bekämpfen es, indem wir erklären, wie viel Geld sie uns kosten, indem wir etwas zitieren, ohne zu erforschen, was es braucht. Transparenz ist der Schlüssel auf allen Ebenen. Jeder muss wissen, wie sich seine Entscheidungen auf das Endergebnis auswirken.

Machen wir frivole Veränderungen? Ja. Was Sie beachten müssen, ist, dass wenn Sie stündlich die meiste Zeit verrechnen, eine 5-Minuten-Änderung zu einer vollen Stunde berechnet wird, so dass das ziemlich lukrativ ist. Wir erklären das alles schon einmal wie bei jeder Änderungsanfrage, so dass sie sich dessen bewusst sind, aber es tendiert dazu, ein solches Verhalten zu verhindern, wenn es nicht wirklich wichtig ist. Tatsache ist, dass wir alle Änderungen gleich behandeln. Wir gehen nicht davon aus, dass wir wissen, was als leichtsinnig gilt, egal wie absurd wir es für möglich halten. Wir haben einen formellen Änderungsprozess, bei dem der Kunde nach etwas fragt, was wir aufschreiben und ihn abzeichnen lassen. Das ist es, was wir bewerten und einen Kostenvoranschlag vorlegen. Entweder stimmen sie zu, in diesem Fall unterzeichnen sie formell ein Dokument, in dem sie uns mitteilen, dass es in Ordnung ist, zu beginnen, oder sie widerrufen die Anfrage. Wir versuchen fleißig zu sein, aber wir lassen sie wissen, dass es einige Tage dauern wird, bis wir eine Antwort auf ihre Anfrage bekommen.

Ein Mitarbeiter von mir hat mir den besten Rat gegeben, den ich je von der Verwaltung von Kundenbeziehungen gehört habe. Es ist ein Geben und Nehmen. Um den Kunden glücklich zu machen, müssen Sie bereit sein, ihnen zu helfen, wenn sie etwas brauchen, aber gleichzeitig müssen Sie in der Lage sein, Nein zu sagen. Im Umgang mit Menschen wollen sie, dass Sie ihnen helfen, aber sie wollen auch, dass Sie eine Wirbelsäule haben und für sich selbst stehen. Auf diese Weise wird es zu einer Win-Win-Situation.

    
kemiller2002 26.01.2009 14:36
quelle
0

Der Kunde kommt zu Ihnen, um etwas zu tun, weil er entweder nicht die Zeit dazu hat oder nicht weiß, was er tun soll (und Sie dafür bezahlen wollen) >. Wenn Sie sich ändernde Anforderungen haben, liegt das an letzterem. Mit anderen Worten, sie zahlen Ihnen, um die Details herauszufinden! Und sie wissen, was sie mögen und nicht mögen, aber sie werden nicht wissen, wie es funktioniert.

Erkenne dies und was auch immer die Lösung sein muss, fällt hinein.

    
MSN 27.01.2009 19:40
quelle