Frage

Steve Yegges Weisheit Dennoch sind die meisten Entwickler mit Anforderungen konfrontiert, die von technisch nicht versierten Kunden gesammelt wurden.Manchmal gibt es Projektmanager, die sich mit den Kunden befassen und deren Anforderungen übersetzen, manchmal nicht.In jedem Fall ist die Tatsache, dass sich die Anforderungen ändern werden, unausweichlich.

Das meiste, was „gute Programmierpraxis“ ausmacht, hat damit zu tun Entwicklung anpassungsfähiger Systeme damit sie den wechselnden Anforderungen standhalten.Prinzipien wie YAGNI, DRY, lose Kopplung usw.dazu beitragen.Iterative Entwicklungsprozesse wie Agile versuchen ebenfalls, das Problem anzugehen, das mit dem Versuch einhergeht, ein sich bewegendes Ziel zu treffen, und natürlich macht es die Durchführung von Änderungen um ein Vielfaches einfacher, wenn ein System getestet wird.

Dennoch scheint es, dass sich die Anforderungen für viele von uns nicht nur ändern können die Qualität unserer Software beeinträchtigen, kann aber auch rauben unsere Motivation und in uns den Wunsch wecken, jemanden zu erstechen.

Bei dieser Frage geht es darum, wie es geht den Kunden verwalten um es ihnen zu ermöglichen, ihre Anforderungen auf die Art und Weise zu ändern, die sie benötigen, und gleichzeitig willkürlichen oder leichtfertigen Änderungen entgegenzuwirken.Wie machst du das?

  • Haben Sie Projektmanager, die die Entwickler vom Kunden isolieren?
  • Verfügen Sie über einen formellen Change-Management-Prozess?Change-Manager?
  • Wie schwierig ist es für den Kunden, ein Wechselgeld zu bekommen, wenn er es wirklich braucht?
  • Und umgekehrt: Wie einfach ist es für einen Kunden, ein Wechselgeld zu bekommen, wenn es „unverschämt“ ist?
  • Wie ausführlich erläutern Sie dem Kunden die Kosten einer Änderung?
  • Wie schnell können Sie dem Kunden diese Informationen nach Eingang einer Änderungsanfrage mitteilen?
  • Welche Faktoren können den Prozess torpedieren (z.B. PMs, die zum Kunden nicht nein sagen können?)
  • Was funktioniert für Sie?
War es hilfreich?

Lösung

Wenn Sie nach der idealen Welt suchen, in der der Kunde nie seine Meinung ändert oder Sie die ideale Spezifikation erhalten – Du bist im falschen Geschäft.Abgesehen davon ist der effektivste Mechanismus, den ich für die Verwaltung von Kundenerwartungen und Änderungswünschen gefunden habe, die Einführung eines genauen Messsystems.

So leite ich mein Team:

1) Wir beginnen mit User Stories.Der Kunde ist am Schreiben beteiligt und das Entwicklungsteam schätzt, wie lange jede User Story relativ dauern wird.

2) Unter Verwendung früherer Erfahrungen nehme ich diese relativen Schätzungen (Story Points) und erstelle einen groben Zeitplan dafür, wann wichtige Meilensteine ​​des Projekts abgeschlossen sein werden.

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

4) Während der Genehmigungssitzungen fordert der Kunde oft eine Änderung, weil die Funktion nicht den Erwartungen entsprach (obwohl sie seinen ursprünglichen Genehmigungskriterien entsprach).Zu diesem Zeitpunkt generieren Sie eine neue Story mit einer neuen Schätzung.Sie können auch Ihre Meilensteintermine entsprechend anpassen.Dadurch wird der Ball wieder in das Spielfeld des Kunden gebracht:

  • Oft stellen sie fest, dass sich ihre Änderungsanfrage nicht lohnt (sie müssten die Genehmigung ihres Chefs einholen), und wir schließen die neue Funktion ab
  • Manchmal ist es wichtig, deshalb verschieben wir das Fälligkeitsdatum, um die Funktion bereitzustellen
  • Und schließlich gibt es immer die Möglichkeit, eine andere, nicht so wichtige Funktion zu deaktivieren, die genauso viel Zeit in Anspruch nehmen würde.

Der Schlüssel liegt nicht darin, vor Änderungswünschen davonzulaufen, sondern sicherzustellen, dass jeder Änderungswunsch Konsequenzen für das Produkt hat.So etwas gibt es nicht Gratis Mittagessen.

Andere Tipps

Ich arbeite als indpenedent Entwickler und so mit den Kunden direkt kontaktieren. Es ist normal, dass die meiste Zeit sie keine Ahnung haben, was sie eigentlich wollen. So beginnen wir langsam und ich gebe ihnen Prototyp frühzeitig zu spielen und dann werden die Änderungen werden gradualy gemacht. Wenn ich denke, dass die Kunden „unseriös“ ändern will, dann sage ich ihm, dass diese Änderung nicht funktioniert oder nicht benötigt wird. Wenn es 5 min von der Arbeit, dann könnte ich es auch irgendwie tun.

Es hilft später den Vertrag einig Wartungsarbeiten Klausel hinzuzufügen Geld für die kleinen Änderungen zu erhalten, die später kommen wird. Für größere Änderungen laden Sie nur von Stunde zu Stunde.

, um die Kunden zu managen ist hart, und es ist etwas, das sehr leicht schief gehen kann.

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

  • die Kunden Stellen Sie ein Produktmanager zu ernennen -., Die klar zu denken genug ist, um die Anforderungen zu kommunizieren er / sie will, und sieht eine starke Arbeitsbeziehung mit ihm / sie bauen
  • wirklich versuchen, ihr Geschäft zu verstehen, -. Sie brauchen nicht ein Domain-Experte zu sein, aber Sie müssen wissen, wo der Kunde herkommt
  • Stellen Sie wichtige Fragen über das, was sie wollen - nicht übernehmen, was sie verlangen (zunächst) ist, was sie wollen wirklich
  • .
  • Zuerst begrüßen alle Änderungen . Dies ist nicht der Kunde ärgerlich und wankelmütig zu sein, es als Chance, besser zu verstehen, was der Kunde wirklich will. Wenn dies Sie Zeit / Geld kostet, dann müssen Sie es als ein Lockvogelangebot zu übernehmen.
  • Geben Sie einen Prototyp früh , und so viel Kunden-Feedback wie möglich übernehmen.
  • Geben Sie den Kunden ein kick ass Produkt .

Sobald Sie dies getan haben, und der Kunde vertraut Sie, dann werden Sie in der Lage sein unvernünftig Änderungen zu beginnen Klopfen zurück, oder für zusätzliche Zahlungen / Zeit für Dinge fragen, die zuvor außerhalb des Gültigkeitsbereiches berücksichtigt.

Natürlich, werden Sie nicht in der Lage sein, diese Art von Beziehung aufzubauen mit jedem Kunden, einige sind Idioten (in diesem Fall sehen, wenn Sie eine andere Produktmanager ernannt haben kann), aber Sie sollten immer tun, so viel wie Sie kann eine effektive Arbeitsbeziehung aufzubauen.

Sie können nicht erwarten, dass Kunden wissen, was sie am Anfang will, so müssen Sie anpassungsfähig sein. Aber auch müssen Sie Änderung für Änderungen willen stoppen.

Dies ist für ‚interne‘ Kunden.

Ich habe festgestellt, dass Verhandlungen mit dem Kunden ein effektiver Weg zu gehen. Sie können, was Funktion sie haben wollen, wenn sie darauf warten, oder wenn sie einige andere opfern (noch umgesetzt werden) Funktionen. Dies zwingt sie, über den Wert der Änderung zu denken, dass sie als Ganzes in Bezug auf das System fragen.

Manchmal funktioniert dies gut und ein guter Kompromiss erreicht ist. Andere Zeiten der Kunde wirft ihr Spielzeug aus dem Kinderwagen und geht jedoch hoch sind sie bekommen, ist das Feature implementiert und Qualität reduziert.

Wenn der Kunde zahlt, ist es ein anderes Spiel. Sie müssen sich bewusst, dass Veränderung Kosten gemacht werden, und dass die Kostensteigerungen als das Produkt in Kürze abgeschlossen sein. Das bedeutet, dass Sie eine Menge von vorne Analyse über tun, was liefern Sie und stellen Sie sicher, dass die Spezifikation vereinbart ist. So können Sie messen, was sich geändert hat. Dies ist vielleicht nicht die effektivste Lösung für eine der Parteien, aber es macht die Dinge geschnitten und trocken. So sind sie nicht unzufrieden und Sie nicht kostenlos viel Arbeit am Ende tut.

In der Software-Engineering, Änderung ist einfach eine Tatsache. Es wird passieren. Für uns kommt alles zu einem Preis. Wir werden einfach über jede Änderung machen die Kunden wollen, aber es gibt immer eine Zeitschätzung und die Kosten damit verbunden. Sie sagen, dass wir immer den Client nicht - normalerweise nicht, aber manchmal sind die Änderungen Anfrage kommt bei einem sehr hohen Kosten. Wir machen die Linie an potenziellen Sicherheitsbedrohungen ziehen usw., in dem Fall, dass wir sie ruhig erklären, dass wir die Anfrage nicht aufnehmen können.

Wie viel wir den Kunden erklären, erklären wir, wo das Geld zugeteilt werden wird, so viel für die Entwicklung, so viel für die Analyse etc. Wir sie nicht ausdrücklich sagen, warum etwas kostet, wie es funktioniert. Nun wird zugeben, dass ich, dies variiert ein wenig mit einigen unserer Kunden. Einige von ihnen erhalten sehr detaillierte Abrechnung zu genau, wie viele Stunden ausgegeben werden, wo. Um den Auftrag bekommen wir es zu einigen hatte, obwohl dies für uns sehr selten ist.

Wir haben Vertriebsmitarbeiter, die nicht nicht manchmal sagen kann, und das kann zu Problemen führen. Wir haben viel Zeit auf, dass die Arbeit verbracht, aber leider beschneidet es immer noch. Wir bekämpfen sie mit der Erklärung, wie viel Geld sie uns kosten von etwas zitieren, ohne die Erforschung, was es dauern wird. Transparenz ist der Schlüssel auf allen Ebenen. Jeder muss wissen, wie sie ihre Entscheidungen in der unteren Zeile beeinflussen.

Haben wir frivol Änderungen tun? Ja. Was müssen Sie daran denken, dass, wenn Sie stündlich die meiste Zeit in Rechnung stellen wird 5 Minuten zu Wechsel an einer vollen Stunde in Rechnung gestellt, so dass sehr lukrativ ist. Wir erklären dies alles vor, wie wir mit jedem Änderungsanforderung zu tun, so dass sie sich dessen bewusst sind, aber es neigt dazu, ein solches Verhalten zu helfen zu entmutigen, wenn es wirklich wichtig ist. Tatsache ist, dass wir behandeln alle gleich ändern. Wir übernehmen wir nicht wissen, was mit ihnen nicht frivol gilt unabhängig davon, wie absurd halten wir es sein könnten. Wir haben einen formalen Änderungsprozess, wo der Kunde nach etwas fragt wir es aufschreiben und sie zu, dass zu unterzeichnen ist, was wir es bewerten und eine Cost of Work Schätzung vorlegen. Sie sind entweder zustimmen, in dem Fall, dass sie formal ein Dokument unterschreiben zu lassen uns wissen, dass es in Ordnung ist zu beginnen, oder sie zurücktreten, den Antrag. Wir versuchen, fleißig zu sein, aber wir lassen sie wissen, dass es einige Tage dauern wird für uns eine Antwort auf ihre Anfrage zu erhalten.

Ein Kollege von mir hat mir den besten Rat, den ich jemals über die Verwaltung von Kundenbeziehungen Schiffen gehört habe. Es ist ein Geben und Nehmen. Um die Kunden glücklich zu machen, müssen Sie bereit sein, ihnen zu helfen, wenn sie etwas brauchen, aber zur gleichen Zeit, müssen Sie in der Lage sein, nein zu sagen. Wenn der Umgang mit Menschen sie wollen, um ihnen zu helfen, aber sie wollen auch eine Wirbelsäule haben Sie und für sich selbst stehen. Es wird eine Win-Win Situation auf diese Weise.

würde ich einen Begriff von sich entwickelnden Anforderungen lieber „ändernden Anforderungen“. Professor MMLehman ( http://www.doc.ic.ac.uk/~mml / und http://en.wikipedia.org/wiki/Meir_Manny_Lehman ) hat einen erheblichen Beitrag in der Forschung auf Software Entwicklung getan; seine Werke auch darauf hin, dass nicht alle Arten von Anforderungen zu entwickeln. Man könnte sich glücklich schätzen, wenn sie auf einem dieser Systeme arbeiten passieren, bei denen die Anforderungen bleiben die gleichen (d Mathematikbibliotheken usw.).

Um den Rest von uns Erfahrung zeigt, dass Entwickler bevorzugen so viele Informationen über Anforderungen vorne wie möglich, während Kunden oder Endnutzern eine Fähigkeit schätzen Anforderungen festlegen oder anpassen so spät wie möglich in den Entwicklungsprozess. Der ehemalige müssen die detaillierten Informationen der Planung zu helfen und die Lösung der Gestaltung dieser späten einen strategischen Vorteil durch Ändern einer Anforderung gewinnen kann, weil sie Kunden einen gewissen Spielraum gibt, um die sich verändernde Umwelt oder gewonnenen Informationen auf als Ergebnis der Reaktion frühere Stadien / Iterationen des Projektes. Ein Kompromiss zwischen der Fähigkeit, einen detaillierten Plan zu haben und Dinge weitgehend der Entwicklung verändert Prozess bestimmt selbst (Wasserfall, agile, Spirale etc.).

Einige praktische Ratschläge, die Entwicklung der Anforderungen zu verwalten:

  • Bauen in einigen Zimmer in den ursprünglichen Plan für sich entwickelnden Anforderungen, mehrere Checkpoints oder Iterationen zu berücksichtigen.

  • Entweder setzen flüchtige Anforderungen in den Anfang des Projekts, so dass eine Art von Prototypen oder Machbarkeitsstudie ist wahrscheinlich, um sie oder einen Plan für den Wechsel zu klären spät in das Projekt.

  • Monitor, dass die Anforderungen nach wie vor relevant sind.

  • Haben Sie eine aktuelle, nach Prioritäten geordnete Liste von aktuellen Anforderungen praktisch. Nichts hilft sonst Evolution in der Kontrolle als eine gute Sichtbarkeit für alle Beteiligten dem Laufenden zu halten „must haves“ einschließlich ihrer relativen Priorität und Kosten.

  • Halten Sie die Erwartungen der Kunden an die Verwaltung, wie lange die Dinge laufen zu nehmen; Dies hilft auch, Fokus zu halten.

  • Einführung eines formalen Prozess zum Ändern oder Hinzufügen von Anforderungen, wenn Sie benötigen. Die Prozessbeschreibung braucht Rollen dieser beteiligt, die Häufigkeit der Bewertungen angeben usw. als eine gute Absicherung gegen einige politische und die meisten opportunistischen aber nicht grundlegenden Anforderungen dienen könnte.

  • in einiger Zeit baut auch für die erste Version für Refactoring. Sie sind sehr wahrscheinlich alle oder ein Teil der Lösung als Folge der zusätzlichen Erkenntnisgewinn bei der Entwicklung werfen.

Der Kunde kommt zu Ihnen, etwas zu tun, weil sie entweder nicht die Zeit haben, es zu tun oder sie wissen nicht, was tun (und Sie zahlen mag es für sie zu tun) . Wenn Sie Anforderungen haben zu ändern, ist es wegen der letzteren. Mit anderen Worten, Sie sie zahlen die Details, um herauszufinden! Und sie wissen, was sie mögen und nicht mögen, aber sie werden nicht wissen, wie es funktioniert.

Erkennen Sie dies und was auch immer die Lösung braucht fällt in zu Ort sein.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top