Wie gehe ich mit Anfragen von Kunden nach dem Motto "Kannst du noch ein paar Felder hinzufügen" um?

12

Sehr häufig haben wir Feature-Anfragen für Felder, die nur ein Kunde wünscht. Dies überfrachtet bestenfalls den Code der Anwendung. Wenn wir einige Monate nach dem Hinzufügen der Felder in ihrer Datenbank nachsehen, stellen wir oft fest, dass sie nicht einmal die zusätzlichen Felder verwenden. Es ist auch eine ziemlich alte Anwendung, daher erfordert das Hinzufügen eines einzelnen Felds mehrere Codeänderungen, das Ändern von Berichten und das Sicherstellen, dass dies keine Auswirkungen auf andere Kunden hat, die das Feld nicht sehen müssen.

  • Wie können wir sicherstellen, dass ein Kunde diese Funktionsanforderungen tatsächlich benötigt?

  • Wie sagen wir höflich "das brauchst du nicht wirklich"?

Derzeit werden für bestimmte Funktionsanforderungen Gebühren erhoben. (Bisher waren Feature-Anfragen in der Regel kostenlos.) Können wir sonst noch etwas tun?

Earlz
quelle
Mit viel Murren und Fluchen unter meinem Atem>. <Immerhin bezahlen sie mich ....
Rachel

Antworten:

16

Zahlen sie für die zusätzlichen Funktionen? Wenn ja, dann ist es wirklich nicht Ihre Sache, ob sie sie benutzen oder nicht. Gib ihnen, wofür sie bezahlen. Wenn dies jedoch nicht der Fall ist, liegt es an Ihrer Führung, zu entscheiden, ob sie bereit sind, ohne zusätzliches Einkommen weitere Funktionen hinzuzufügen.

John Kraft
quelle
2
Gut, sie zahlen, aber wir möchten uns wirklich auf größere Feature-Anfragen konzentrieren, die sie letztendlich verwenden (und die uns in Zukunft möglicherweise mehr Kunden bringen), anstatt auf viele triviale kleine Anfragen, die nur den Code verstopfen
Earlz
8
@Earlz - "Wir möchten uns wirklich darauf konzentrieren ..." - Ich bin sicher, dass Sie nicht so sind, wie Kundenbeziehungen funktionieren. Diese kleinen Anfragen (die dem Kunden einen erheblichen Mehrwert bringen können) sind der Preis, den Sie bezahlen, wenn Sie an größeren Dingen arbeiten. Sie brauchen einen Lieferanten, der auf ihre Bedürfnisse eingeht, und keinen, der auswählt und wählt. Der Weg, um damit umzugehen, besteht darin, sie zu fairen Preisen anzubieten, aber darauf hinzuweisen, dass das Bündeln zu größeren Releases kostengünstig ist (weniger Regressionstests usw.), und es attraktiver zu machen, sie auf diese Weise zu handhaben, aber das können Sie nicht wähle und wähle.
Jon Hopkins
2
Wenn Sie die Kosten um 50% senken können, indem Sie 5% der Kunden verlieren, ist das ein gutes Geschäft, so die gängige Meinung. Sind diese benutzerdefinierten Felder wirklich viel Schweiß für wenig Belohnung?
9000,
5
Es gibt einen schlechten Trend in der Softwareentwicklung, dass Entwickler nicht tun wollen, was der Kunde will, weil es nicht cool ist oder Spaß macht. Wir Entwickler neigen dazu, unser eigenes Glück den Wünschen des Kunden fast allgemein vorzuziehen. Es geht jedoch nicht um unseren Spaß und Genuss. Es geht um den Kunden. Der Kunde ist derjenige, der die Rechnungen bezahlt, Sie sollten ihn glücklich machen. Wenn Sie anpassbare Software schreiben möchten, ist dies Teil Ihres Auftrags.
John Kraft
3
@ Wayne M, vielen Dank, dass Sie die Einstellung demonstriert haben, auf die ich mich bezog. Die Kunden verstehen vielleicht keine Technologie, sind aber normalerweise keine Idioten. Normalerweise ist es der Entwickler, der die geschäftlichen Anforderungen nicht versteht. Wenn das Hinzufügen einer Funktion die Integrität der Anwendung beeinträchtigt, ist dies ein Zeichen für ein schlechtes Anwendungsdesign.
John Kraft
3

Wir haben eine ähnliche Situation. Die Art und Weise, wie wir damit umgehen, ist der Aufbau einer vertrauensbasierten Beziehung, die uns die Freiheit gibt zu sagen, "das brauchen Sie nicht". Es braucht Zeit, Geduld und man muss darauf vorbereitet sein, viel zu reden und Mittagessen und andere langweilige Aufgaben zu haben. Diese langweiligen Meetings machen sich langfristig bezahlt und Sie können sich darauf konzentrieren, wirklich wichtige Features zu erstellen.

Wenn Sie sprechen, werden Sie auch sehen, ob das, wonach sie fragen, wirklich so wichtig ist.

Pedro
quelle
3

Ich glaube nicht, dass Sie sich auf das Thema "Brauchen Sie es wirklich?" Einlassen können. Streit mit Kunden. Persönlich möchte ich fragen: "Wie wird Ihr Unternehmen dadurch mehr Geld verdienen?" Aber die Tatsache ist, dass einige Manager aus irgendeinem Grund nachverfolgen wollen und es gewohnt sind, sich durchzusetzen. Wenn Sie es nicht tun möchten, sagen Sie Nein oder verlangen Sie einen so hohen Geldbetrag, um die Anfrage zu entmutigen.

Überlegen Sie, wie Sie Ihrer Anwendung die Bearbeitung einer größeren Anzahl von Kundenfeldern erleichtern können.

  1. Zulassen, dass Beschriftungen in Berichten und Formularen vom Kunden so festgelegt werden, dass vorhandene Felder verwendet werden.
  2. Fügen Sie vorhandenen oder zusätzlichen benutzerdefinierten Feldtabellen generische Felder (String12) hinzu.
  3. Haben Sie ein benutzerdefiniertes Feldsystem, in dem dies alles über die Dateneingabe abgewickelt wird und keine neuen Spalten in Tabellen erstellt werden müssen (ich kann mich nicht erinnern, was dies als Hilfe bezeichnet wird.).

Möglicherweise stellen Sie fest, dass bestehende Kunden das Wachstum Ihres Systems steigern. Die Branche könnte sich verändern, so dass neue Anforderungen auftauchen.

Entschuldigung, aber wenn Sie Ihren Kunden aus technischen Gründen nicht das bieten können, was sie wollen, und nicht profitieren, müssen Sie das Tempo erhöhen. Für einen Neuling wäre es nicht schwierig, mit mehr Feldern in Ihren Markt einzusteigen. Lassen Sie das also nicht zu.

JeffO
quelle
3

Als ich für einen Moment von der anderen Seite des Fensters aus schaute, war ich bei meinem letzten Job einem ERP-System ausgesetzt, das es dem Endbenutzer ermöglichte, "benutzerdefinierte" Spalten zu jeder Entität / Tabelle hinzuzufügen. Nach meinen kurzen Interaktionen sah es so aus, als würden sie die Spalten dynamisch einer zweiten Tabelle mit einer Eins-zu-Eins-Zuordnung hinzufügen. Zum Beispiel:

WIDGET-Tabelle mit statischen Spalten:

  • WIDGET_ID
  • WIDGET NAME
  • WIDGET_COST
  • etc.

WIDGETCUSTOM-Tabelle mit benutzerdefinierbaren Spalten:

  • WIDGET_ID
  • WIDGET_WEIGHT
  • DID_BOB_WORK_ON_WIDGET
  • etc.

Die Spalte WIDGET_ID könnte sie zusammenbinden. Ihre zusätzlichen Felder wurden beim Bearbeiten eines Widgets automatisch angezeigt, und Sie können sie in dynamische Berichte aufnehmen oder sogar nach ihnen suchen. Es war ziemlich effizient, da die Datenbank diese weiterhin verfolgen und diese Spalten bei Bedarf indizieren konnte.

Vom Standpunkt der Programmierung aus sehe ich, dass dies vernünftig bleiben würde. Jeder Kunde kann seine eigenen benutzerdefinierten Spalten haben, aber diese benutzerdefinierten Spalten beeinträchtigen nicht Ihre Kernlogik.

Scott Whitlock
quelle
Diese Anwendung ist zu komplex, um solche Funktionen ohne eine umfassende Überarbeitung hinzuzufügen. Diese Lösung ist also erschienen (aber geplant in einem Hauptversions-Update, das hoffentlich in einem Jahr erscheinen wird)
Earlz
1
Wenn Sie in einem Jahr damit fertig werden, was ist dann die große Sache?
JeffO
@ Jeff ein Jahr, vorausgesetzt, wir werden in der Zwischenzeit nicht durch diese Feature-Anfragen
festgefahren.
1

Feature "Anfragen" sind genau das, Anfragen. Wenn sie Anforderungen stellen, müssen Sie entscheiden, wie viel es dem Unternehmen wert ist, die Codebasis damit zu überfrachten. Wenn es zu einem endemischen Problem wird, können Sie es eingrenzen, aber wenn sie bereit sind, das zu bezahlen, was Sie verlangen, oder etwas in der Nähe, und es sind nur ein paar Features, die hier und da zu finden sind, sage ich, gehen Sie mit dem Geld.

Wenn dies ein ständiges Problem mit Ihrem Produkt ist und mehrere Kunden nach solchen Anpassungen suchen, ist es möglicherweise an der Zeit, diese Teile Ihrer App zu überdenken und sie so flexibel zu gestalten, dass die Kunden dazu befugt sind selbst, sei es Ad-hoc-Berichterstattung, flexible Datenerfassung usw. Versuchen Sie, diese Belästigungen in ein Verkaufsargument zu verwandeln. "Unser Bestandsdatenmodell ist nicht gut genug für Sie? Sehen Sie sich unsere Anpassungsoptionen an! Sie können es selbst tun!"

MattC
quelle
2
Denken Sie daran, hinter jedem Problem steckt die Möglichkeit, eine Lösung zu finden und diese dann an jemanden zu verkaufen;)
MattC
0

Sie sollten genau angeben, was Sie in diesem Feature tun werden, und eine geschätzte Zeit zum Erstellen des Features verwenden. Wenn der Kunde zusätzliche Felder wünscht, die in Ordnung sind, stellen Sie diese in Rechnung. Ich sage meinen Kunden, dass es in Ordnung ist, wenn Sie Features hinzufügen möchten, nachdem ich sie erstellt habe, aber in einigen Fällen wird es ein bisschen mehr kosten, sie zu bearbeiten.

Es fällt mir schwer zu verstehen, warum es Ihnen wichtig ist, ob sie es benutzen oder nicht. Es ist ganz einfach: Sie bauen, was sie wollen, und Sie werden dafür bezahlt.

Code Base Clutter? Wenn Sie Ihren Code umgestalten müssen, während Sie mit der neuen Funktion arbeiten, müssen Sie diesen in Rechnung stellen.

Der Muffin-Mann
quelle
0

Erstellen Sie eine Liste mit verschiedenen Funktionen, die Sie hinzufügen möchten, einschließlich "nur ein paar zusätzliche Felder". Zeigen Sie die Liste Ihren Kunden und bitten Sie sie um Feedback, welche sie zuerst möchten. Erklären Sie, dass Ihre Ressourcen begrenzt sind und Sie nicht alles auf einmal tun können. Verwenden Sie das Feedback, um zu entscheiden, in welche Richtung Sie mit Ihrer Anwendung gehen möchten.

Wenn ein Kunde darauf besteht , dass die wenigen zusätzlichen Felder sind wirklich , dass wichtige und Sie immer noch entscheiden , sie nicht geben, hoffentlich kann der Kunde noch den Vorteil der Features sehen Sie stattdessen implementieren.

Buhb
quelle
0

Es hört sich so an, als ob Sie von einem Pull-System profitieren könnten. Lassen Sie den Benutzer auswählen, welche Funktion als Nächstes implementiert wird, begrenzen Sie jedoch die Anzahl, die zu einem bestimmten Zeitpunkt in der Entwicklung sein kann. Ein Kanban-Board ist dafür großartig. Es kann dem Benutzer das Eigentum an dem Prioritätsprozess geben (auch bekannt als weniger Verantwortung und Stress für Sie). Vertrauen Sie mir, wenn der Benutzer entscheiden muss, welches Feature als Nächstes in die Entwicklung einbezogen wird, da er weiß, dass die anderen Anforderungen beiseite gelegt werden, wird er viel mehr in die Entscheidung investieren, was er wirklich benötigt.

Morgan Herlocker
quelle
Kanban-Methoden funktionieren nur, wenn Sie zum Gemba gehen können: dem Ort, an dem das Problem auftritt. Sei im physischen Raum, sprich mit den Leuten, die die Arbeit machen, und sieh zu, wie sie dir zeigen, wie sie es tun. Sehen Sie mit Ihren Augen, berühren Sie mit Ihren Fingern. Versuchen Sie dann und erst dann herauszufinden, wie Sie es verbessern können. Und fragen Sie sie, wie sie es verbessern können.
Christopher Mahan
@Christopher - Punkt genommen, aber sicherlich könnte das System zu einem gewissen Grad geändert werden. Vielleicht vergessen Sie das Kanban, aber versuchen Sie, die Idee eines Pull-Systems beizubehalten. Unabhängig davon, wie es speziell funktioniert, muss der Benutzer eine Möglichkeit haben, Aufgaben zu priorisieren und auszuwählen, welche Aufgaben in einer Umgebung mit kontinuierlicher Entwicklung als Nächstes ausgeführt werden sollen. Ein Entwickler kann nicht genau wissen, welche Funktion als Nächstes alleine ausgeführt werden muss.
Morgan Herlocker
1
Ironcode, du hast recht. Ich arbeite bei der Bank of America und unser Team ermöglicht es der Geschäftseinheit, die Feature-Requests anhand der Bugzilla-Bug-Priorität zu priorisieren. Sie archivieren die Fehler und priorisieren sie dann. Sie können die Priorität jederzeit ändern, und wir passen uns an. Ja, manchmal entstehen dadurch Umstellungskosten, aber wir haben festgestellt, dass dies für das Unternehmen effektiver ist. Beachten Sie, dass dies für das Original-Poster wahrscheinlich nicht funktioniert, da die Geschäftsleitung möglicherweise Ziele für die Kunden hat. (Abgesehen davon scheint dieser Managementansatz falsch zu sein)
Christopher Mahan
0

Ich denke, Sie sollten Ihren Kunden bitten, einen oder mehrere von Ihnen durch einen "Tag im Büro" zu führen, um zu sehen, wie sie die Software wirklich nutzen ... Warten Sie ... Stellen Sie mich für 250 USD / Stunde ein und ich werde es herausfinden. Bitte, bitte nicht vergolden. Lass es einfach funktionieren. Den meisten Unternehmen ist es egal, dass es hässlich aussieht, wenn es gut funktioniert.

Christopher Mahan
quelle
Wir haben das getan. Aus diesem Grund wissen wir, wann Featureanforderungen wahrscheinlich nicht verwendet werden.
Earlz
Ah, dann gibt es politische Kämpfe in der Kundenfirma. Du bist beschissen. Oder Sie könnten Steaks und Stripperinnen.
Christopher Mahan
0

Verfolgen Sie die Anforderungen. Wählen Sie beim Entwerfen / Entwickeln der großen Funktionen eine Handvoll priorisierter Anforderungen aus, die in diese Version aufgenommen werden sollen.

IAbstrakt
quelle
0

Erstellen Sie ein Standardverhandlungssystem für Anforderungen. Vielleicht etwas basierend auf einem Fehlerberichterstattungs- oder Feature-Request-System wie fogbugz. Ermöglichen Sie Ihren Kunden, eine Anfrage zu stellen und diese anhand folgender Kriterien zu priorisieren:

  • die technische Machbarkeit / Kosten des Merkmals
  • ist die Feature-Anfrage eine kostenpflichtige? Wenn es in einem Vertrag steht und / oder sie dafür bezahlt haben, geben Sie es ein
  • macht die Funktion "Sinn"? Dies ist eine Kunst, aber wenn genügend Kunden nach einer Funktion fragen, können Sie diese kostenlos implementieren. Dies ist eine Gelegenheit, Ihr Produkt zu verbessern und den Verkauf an den nächsten Kunden zu vereinfachen
  • Haben Sie nicht genutzte, bezahlte Zyklen zur Verfügung? Wenn Sie einen Satz monatlicher Stunden für Wartung / Support in Ihre Verträge einbeziehen (ich empfehle dies dringend, auch wenn die Anzahl sehr niedrig ist) und diese nicht verwendet werden, beginnen Sie, diese Änderungen vorzunehmen
Blaubeerfelder
quelle
0

Wenn der Kunde das vollständige Eigentum an der Anwendung hat, tun Sie, was er verlangt. Lassen Sie sie ihr Geld sprengen; Es gehört ihnen.

Wenn dies jedoch nicht der Fall ist, möchten Sie eine Lösung für diese Hilfsfelder suchen, bei der sie außerhalb des Kerndatenmodells gespeichert werden. Sie können dann so etwas wie eine Datenbankansicht verwenden, um die zusätzlichen Felder für diesen bestimmten Kunden wieder zusammenzuführen. (Abhängig von der Art der zu speichernden Daten gibt es verschiedene Möglichkeiten, den Zusatzspeicher zu erstellen. Am einfachsten ist nur eine Tabelle, die denselben Primärschlüssel wie einige PK in Ihrer Haupttabelle hat, die jedoch bei Verwendung ineffizient ist des Feldes ist sehr spärlich. Es ist nur wirklich ein Problem, wenn sie Funktionen des Feldes benötigen, die Dinge wie die Indizierung erfordern.)

Sie können die Kundenanfragen auch verschieben, indem Sie angeben, dass Sie nicht über ausreichende Ressourcen verfügen, um sie zu diesem Zeitpunkt zu implementieren. Es ist wirklich hilfreich, wenn Sie an diesem Punkt auf Ihre Roadmap verweisen, die angibt (Ihre beste Schätzung zu), wann es möglich sein wird, das, was sie wollen, kostengünstig umzusetzen. Und Sie sollten vorrangig darauf achten, die Anwendung in einen Zustand zu versetzen, in dem es möglich ist, die Funktionen kostengünstig zu unterstützen, da diese Metafunktion zu einem Hauptverkaufsmerkmal Ihrer Hauptanwendung wird.

Donal Fellows
quelle