Sollte ein Programmierer für den Kunden „nachdenken“?

12

Ich bin an einem Punkt angelangt, an dem ich das Sammeln von Anforderungen hasse. Kunden sind zu vage für ihr eigenes Wohl. In einer agilen Umgebung, in der wir dem Kunden ein Stück Arbeit bis zur Fertigstellung zeigen können, ist es nicht schlecht, da wir kleine regelmäßige Korrekturen / Aktualisierungen an der Funktionalität vornehmen können.

In einem "Wasserfall" -Umfeld (Anforderungen zuerst, fast vollständiges Produkt als nächstes) können die Dinge hässlich werden. Diese Art von Umfeld hat mich dazu gebracht, ständig Anforderungen zu hinterfragen. Der Kunde möchte "Eingaben automatisch in die Zahl 1 umwandeln" (unter Bezugnahme auf eine Menge in einer Bestellung). Aber was sie nicht denken, ist, dass "Input" ein einfacher Typ-O sein könnte. Ein "x" in einer Textbox könnte ein "woops" sein, nicht ich möchte 1 dieser "Zahnpasta" -Produkte. Aber es liegt so viel in der Luft, dass ich stundenlang durchhalten und korrigieren kann, was sie wollen. Das ist einfach nicht gesund.

Bei einer Firma könnte ich versuchen, die Kultur an das agile Modell anzupassen, das uns helfen würde (kein kleiner Job, über meiner Gehaltsstufe). Oder fegen Sie hässliche Details unter den Teppich und hoffen Sie auf das Beste. Vielleicht versucht mein Kunde, dem Code zu nahe zu kommen?

Wie geht man mit dem Problem um, "für den Kunden zu denken", ohne ihn mit zu vielen Fragen anzuregen?

P. Brian Mackey
quelle
1
Warum machen so viele Leute abfällige Kommentare zu Wasserfällen, die beweisen, dass sie entweder nicht in wasserfallartigen Umgebungen gearbeitet haben oder offensichtlich nicht wissen, wie sie dies tun sollen? Wasserfall ist kein Muss, um genau und nur so zu spezifizieren. Kluge Entwickler würden wissen, dass sie auf ihre spezifischen Bedürfnisse zugeschnitten sein müssen. Wenn die Anforderungen nicht klar sind und es hilfreich wäre, dem Benutzer einige funktionierende Funktionen zu zeigen (z. B. Ihren agilen Ansatz), gibt es diese Dinge, die als Prototypen bezeichnet werden. Agilität würde das Leben nicht leichter machen, Agilität macht nur das Starten leichter, es macht das Ende schwerer.
Dunk
@Dunk - Entschuldigung, wenn ich die Wasserfallfans beleidigt habe. Ich bin kein Projektmanager. Ich habe das Paradigma mit "" und meiner Definition qualifiziert, die so sein kann oder auch nicht, wie jeder Wasserfall versteht und benutzt. Ich möchte meinen Standpunkt nur mit allgemein verstandenen Paradigmen verdeutlichen, nicht mit Trash Talk.
P. Brian Mackey
1
Ich bin nicht unbedingt nur ein Wasserfallfan, aber der Wasserfall wird die ganze Zeit niedergeschlagen und so wenige Menschen treten dafür ein, also muss ich meinen Teil dazu beitragen. Tatsache ist, dass es viele Arten von Projekten gibt, die am besten mit Wasserfallansätzen bedient werden können. Sicherheitskritische Systeme, Weltraumprogramme, alles, wo Hardware parallel zur Software entworfen werden muss, jedes Projekt, bei dem nur ein Teil der Funktionalität für den Kunden nutzlos ist, sind nur einige Beispiele. Mein Punkt ist, dass die meisten Unternehmen, die Wasserfälle erfolgreich einsetzen, tatsächlich wasserfallähnliche Ansätze verwenden und die strenge Definition nur ein Leitfaden ist.
Dunk

Antworten:

16

In den meisten Fällen ist dem Kunden nicht bekannt, was noch getan werden kann. Sie mussten nie beschreiben, was sie brauchen, so dass es für uns eindeutig ist. In ihren Köpfen ist es klar. Sogar die Tatsache, dass sie darüber nachdenken, Benutzereingaben in die Zahl 1 umzuwandeln, geht wirklich über den gewohnten Weg hinaus.

Das ist wirklich so, wie es sein sollte. Wenn sie wirklich neu darin sind, genau zu beschreiben, was sie wollten, brauchen sie nicht, dass wir es für sie schreiben. Daher ist es unsere Verantwortung, sie durch den Prozess zu begleiten. Für den Prozess müssen Entscheidungen getroffen werden, daher benötigen sie auch unsere Empfehlungen, um den Entscheidungsprozess zu vereinfachen.

Lassen Sie den Kunden also vage sein und auf hohem Niveau sprechen. Sie kennen sich aus, und genau das können sie (hoffentlich, oder sie können Ihre Rechnungen nicht bezahlen ...). Nehmen Sie, worüber sie gesprochen haben, und denken Sie eine Weile darüber nach. Schließlich erhalten Sie einige großartige Ideen, mit denen Sie sicherstellen können, dass das, was Sie benötigen, überprüfbar und konsistent ist.

Ich empfehle dringend, in Stücken zu arbeiten. Wenn Sie mit dem Kunden zusammentreffen, haben Sie eine Reihe von Anforderungen, die miteinander in Beziehung stehen, und erklären Sie dann, wie Sie tun möchten, was sie wollen. Erklären Sie auch, warum Sie die von Ihnen getroffenen Entscheidungen getroffen haben. Der Kunde kann sich dann Ihre Angaben ansehen und die Feinabstimmung vornehmen. Wenn Sie eine Antwort wie "Ich habe nie darüber nachgedacht, aber das würde wirklich helfen" erhalten, wissen Sie, dass Sie einen Impuls haben, wie der Kunde denkt. HINWEIS: Dies ist keine Funktion, sondern es werden die richtigen Funktionen ausgewählt, die am besten zu dem Geschäftsproblem des Kunden passen .

Wenn Sie etwas haben, das so aussieht, als würde es dem widersprechen, was der Kunde Ihnen ausdrücklich gesagt hat, dann ist es Zeit zu erklären, warum. Sie müssen einige Probleme herausstellen, an die der Kunde nie gedacht hat, und wie Ihre Alternative ihm immer noch das gibt, was er will / braucht, aber auch diese potenziellen Probleme vermeidet. Es kann sein, dass Sie einen kleinen Rückschlag erleiden, aber es baut auch das Vertrauen der Kunden auf, da diese feststellen, dass Sie versuchen, ihnen ein Produkt zu geben, das sie wirklich verwenden können. Wenn sie etwas zurückschieben, zwingt es sie, darzulegen, warum sie etwas auf eine bestimmte Weise wollten. So können Sie Ihren Kunden besser verstehen und die Anforderungen nach Bedarf anpassen.

Der schnellste Weg, Ihren Kunden zu ermüden, besteht darin, alle kleinen Fragen nacheinander zu stellen. Sie möchten eine Reihe von Besprechungen planen und planen , um Ihren Ansatz zu überprüfen. Solange Sie die technischen Anforderungen besitzen (die Ihr Team zur Erstellung des Produkts verwendet) und Ihr Kunde die geschäftlichen Anforderungen besitzt und Sie sie miteinander in Beziehung setzen können, haben Sie die Möglichkeit, diese Lücke zu schließen.

Berin Loritsch
quelle
4
Außerdem müssen Sie einige Zeit damit verbringen, das Geschäft zu verstehen, in dem Sie arbeiten. Viele der Programmierfragen werden sich stellen, wenn Sie verstehen, wie das Geschäft funktioniert.
Michael K
Die beste Antwort insgesamt, aber die Veröffentlichung von Artikeln unter @whatsisname ist ein wunderbares Kompliment für die Antwort.
P.Brian.Mackey
6

Wenn Sie sie wegen zu vieler Fragen „verärgern“, sollten Sie einen besseren Kunden finden.

Die Kunden wissen nicht, was sie wollen. Sie werden ihre Lösung nicht unbedingt erkennen, wenn sie sie sehen. Das ist ein Problem, und das ist die Aufgabe, die Sie lösen: die Umsetzung ihrer Anforderungen in etwas, das als Softwarepaket geliefert werden kann.

Um das zu tun, musst du lernen, was du tust. Sie sollten nicht fragen, was passieren soll, wenn eine Nummer in ein Textfeld eingegeben wird. Sie sollten fragen, warum diese Nummer wichtig ist. Wofür wird sie verwendet? Lassen Sie sich von ihnen beibringen, wie sie ihre Arbeit machen. Und hören Sie nicht auf das, was sie sagen, weil sie nicht wissen, was sie wollen, sondern beobachten Sie, was sie tun und wohin ihre Augen gehen .

Lesen Sie dies für weitere Informationen: http://www.joelonsoftware.com/articles/fog0000000356.html

Whatsisname
quelle
3

Angenommen, Sie sind Mitarbeiter eines Unternehmens, dann brauchen Sie einen guten Business Analyst, der Ihnen hilft, diese Details zwischen dem Kunden und sich selbst zu vermitteln. Ich gehe davon aus, dass Sie nicht genug Einfluss haben, um dies zu erreichen. Mein nächster Rat wäre, mehr über die Domäne zu erfahren, in der Ihre Kunden arbeiten. Wenn Sie das Geschäft und die Prozesse verstehen, mit denen sie arbeiten, sind Sie Ich werde eine bessere Vorstellung davon haben, was sie wirklich tun wollen, trotz der losen und möglicherweise falschen Art, wie sie es beschreiben. Auf diese Weise können Sie analysieren, wonach sie gefragt haben, und Sie können später in einem separaten Meeting mit einer Interpretation dessen, was sie wollen, und einem möglichen Vorschlag, ihnen zu geben, was sie wirklich wollen, zurückkehren. Wenn Sie konsequent mit denselben Kunden arbeiten,

Wenn Ihnen das sehr schwierig, schmerzhaft, äußerst unangenehm oder unrealistisch vorkommt, würde ich abschließend raten, dass Sie sich an einem Ort, an dem sie Wirtschaftsanalysten haben, nach einem neuen Job umsehen, da dies für Sie nicht einfacher wird, wenn Sie sich nicht anstrengen.

gunit888
quelle
2

Wenn Sie Anforderungen sammeln, ist es Ihre Aufgabe, diese Fragen zu stellen.

Ja, der Kunde könnte sich ärgern, aber in diesem Fall müssen Sie erklären, warum Sie "all diese Fragen" stellen. Sie müssen deren Geschäft verstehen, bevor Sie den Code schreiben können, der dieses Geschäft automatisiert. Der Clou wäre, dass sie viel Geld für die Entwicklung eines Systems ausgeben würden, das nicht das tut, was sie wollen.

Der Nebeneffekt davon ist, dass Sie dem Kunden letztendlich dabei helfen sollten, seine Anforderungen zu verfeinern.

Dies gilt unabhängig davon, ob Sie Big Design Up Front oder Agile ausführen.

ChrisF
quelle
2

Leider ist es Ihre Aufgabe, für den Kunden zu überlegen, ob er es nicht selbst tun kann oder nicht.

Ich habe beide möglichen Ergebnisse gehabt:

  • Der Kunde ist froh, dass Sie tatsächlich darüber nachdenken, was er Ihnen sagt. Er fühlt sich in den richtigen Händen

  • Der Kunde ist verärgert, weil Sie ihn zwingen, sich erneut Gedanken über seine Anforderungen zu machen. Aber dann ärgert sich diese Art von Kunden sowieso früher oder später über Sie. Er wird sicherlich sehr genervt sein, wenn er zu spät herausfindet, dass Sie anfangs nicht an ihn gedacht haben. Ich würde sagen: meide diese Art von Kunden wenn möglich :-)

Tedev
quelle
1

Ein Rapid Application Development (RAD) geht dieses Problem gut an.

Beginnen Sie mit dem "Denken für den Kunden", indem Sie eine sehr grobe, nicht funktionierende Benutzeroberfläche für das Programm erstellen, die auf Ihren besten Vermutungen basiert. Zeigen Sie es ihnen dann und arbeiten Sie iterativ, bis Sie ihre tatsächlichen Bedürfnisse erfüllen.

Es ist nicht so, dass sie nicht wissen, was sie wollen. Es ist so, dass sie nicht wissen, was sie wollen, bis sie es sehen, und manchmal können Sie durch Ausschluss bestimmen, was sie wollen. Das heißt, ihnen etwas zu zeigen, das sie NICHT wollen und darauf zu achten, wie sie es kritisieren.

Das Hauptproblem bei BFUD (Big Up Front Design) besteht darin, dass der Entwickler nicht beschuldigt wird, indem der Kunde in einen Vertrag gezwungen wird, in dem ausdrücklich beschrieben wird, was er bekommt. Und dies geschieht leider zu einem Zeitpunkt, an dem niemand im Projekt eine gute Vorstellung davon hat, was wirklich benötigt wird. Am Ende lässt dies den Kunden nur akzeptieren, was Sie erstellt haben, weil sie sich abgemeldet haben, aber widerwillig.

Wenn der Kunde mit dem Ergebnis nicht zufrieden ist, ist es nur ein Pyrrhussieg.

JohnFx
quelle
1

Der Kunde hat die Aufgabe, Ihnen mitzuteilen, was er benötigt. Ihre Aufgabe ist es, zu verstehen, was sie brauchen, um programmieren zu können, was sie brauchen. Eine naheliegende Frage zum Problem der Änderung aller Eingaben in eine lautet: "Warum soll alle Eingabe in 1 geändert werden?" Dann kann der Kunde die Gründe dafür erläutern, damit Sie die Notwendigkeit verstehen und dann nicht unbedingt angeben können, wonach er fragt, sondern was er benötigt. Wenn Sie zuversichtlich sind, dass Sie wissen, was sie brauchen, dann glaube ich nicht, dass Sie ihre Denkweise "korrigieren" müssen. Sie werden das Produkt und die Sache "Oh, das ist perfekt" verwenden. Aber wenn Sie nicht sicher sind, was sie brauchen, müssen Sie erklären, was Sie denken, und es mit dem Kunden klären. Leider gibt es Es ist nicht möglich, diesen Teil des Prozesses ohne viel Kommunikation durchzuführen, bei der beide Teile richtig abgehört werden. Seien Sie vorsichtig, wenn Sie sich über die Situation ärgern und Dinge sagen, die Sie vielleicht wirklich sagen wollen oder nicht.

Kenneth
quelle
0

Ganz ehrlich: Wenn es sich nicht um eine große Funktionalität handelt, lassen Sie die Person mit den meisten Fachkenntnissen nach besten Kräften raten, was passieren soll, und implementieren Sie diese. Es wird in Abnahmetests konkretisiert - und genau dafür ist es gedacht.

Steven Evers
quelle