Umgang mit dem Missverhältnis zwischen Kunden- und Entwicklerkultur bei einem agilen Projekt

11

Einer der Grundsätze von Agilität ist ...

Kundenzusammenarbeit über Vertragsverhandlungen

... ein anderer ist ...

Individuen und Interaktionen über Prozesse und Werkzeuge

Aber so wie ich es sehe, gibt es zumindest bei der Interaktion mit dem Kunden ein grundlegendes Problem:

Wie der Kunde denkt, unterscheidet sich von dem, was ein Softwareentwickler denkt

Das mag eine Verallgemeinerung sein, ja. Es gibt wohl Geschäftsbereiche, in denen dies nicht unbedingt der Fall ist - dies sind jedoch nur wenige. In vielen Bereichen ist der typische Kunde jedoch:

  1. Interessiert an täglichen betrieblichen Belangen - Kurzstrecken-Taktik ... nicht unbedingt Strategie;
  2. Verständlicherweise nur mit der sofortigen Lösung befasst;
  3. Praktische Denker, keine abstrakten Denker;
  4. Viel mehr daran interessiert, "die Arbeit zu erledigen", als darüber nachzudenken, wie die Lösung zukünftige Bedenken unterstützen wird.

Im Idealfall sind Software-Ingenieure, die agil üben , im Idealfall :

  1. Menschen, die viel über Qualität nachdenken;
  2. Personen, die es zu schätzen wissen, wie ein wenig Vorarbeit eine Menge Aufwand auf der ganzen Linie einsparen kann;
  3. Erfahrene, analytische Denker.

Es scheint also eine kulturelle Diskrepanz zu geben, die dazu neigt, die "Kundenzusammenarbeit" zu behindern.

Was ist der beste Weg, um dies anzugehen?

Eric Smith
quelle
1
Operante Konditionierungsformung - en.wikipedia.org/wiki/Shaping_%28psychology%29 - Hinweis: Es ist zu offensichtlich, wenn Sie einen Clicker verwenden, bevor Sie ihnen einen Donut geben.
Jfrankcarr
3
Ich wollte dies abstimmen. Aber dann habe ich die Stereotypen gelesen, die Sie versuchen, darauf zu setzen. Es gibt schlechte Programmierer, die agile und gute Kunden haben. Vielleicht könnten Sie Ihre Frage überarbeiten, um die Schwierigkeiten einzubeziehen, die Sie haben, anstatt der voreingenommenen Stereotypen, die Sie hier haben. Dann würde ich die Frage positiv bewerten.
SoylentGray
3
Ihre Stereotypen verraten Ihre bigotte narzisstische Meinung. Ich glaube nicht, dass jemand, der so denkt, wie Sie es tun, mit einem Kunden erfolgreich umgehen würde . Sie haben sich bereits entschieden und verfügen über ein festes Glaubenssystem, um Ihre Vorurteile zu stärken. Es ist nur eine Art chauvinistische Einstellung, die der Arbeit mit Ingenieuren einen schlechten Ruf verleiht. Viel Glück damit.
1
@Chad Dies kann eine nützliche Sichtweise für eine Frage sein, unabhängig davon, ob sie aus den Vorurteilen des Fragestellers stammt oder nicht. Der relevante und interessante Fall besteht darin, darüber nachzudenken, wie ein guter Ingenieur mit einem schlechten Kunden interagiert: Es könnte argumentiert werden, dass es uns egal ist, wie schlechte Ingenieure damit umgehen, da ihr Produkt ohnehin minderwertig ist und gute Kunden die Notwendigkeit dafür vermeiden diese Frage. Das lässt uns das Problem haben, wie ein guter Entwickler mit einem schlechten Kunden umgehen sollte. Vielleicht kam der Wortlaut stark heraus, aber die Frage ist immer noch nützlich,
Chris Bye
@ Slothsberry - Ich verstehe, dass die Frage für diese Untergruppen gestellt werden könnte. So ist es nicht abgestuft. Ich habe es gelesen, da alle Entwickler, die Agilität praktizieren, gut und die meisten Kunden schlecht sind.
SoylentGray

Antworten:

27

In vielen Bereichen ist der typische Kunde jedoch:

  • Interessiert an täglichen betrieblichen Belangen - Kurzstrecken-Taktik ... nicht Strategie;
  • Nur mit der sofortigen Lösung befasst;
  • Im Allgemeinen eindimensionale, nicht abstrakte Denker;
  • In erster Linie daran interessiert, "die Arbeit zu erledigen", anstatt eine dauerhafte, qualitativ hochwertige Lösung zu finden.

Und um ehrlich zu sein, haben sie normalerweise gute Gründe, so zu denken. Erstens betreiben sie ein Unternehmen, das heute und morgen Einnahmen erzielen soll, nicht in ferner Zukunft. Zweitens sind sie keine technischen Experten - sie wissen nicht, was möglich ist und was nicht und welche Konsequenzen bestimmte Entscheidungen in Bezug auf Architektur, Design und Implementierung haben. Das wissen wir .

Die Antwort lautet also - kaum überraschend - Kommunikation .

Sie müssen viel kommunizieren, sich gegenseitig aufklären, sich gegenseitig den Standpunkt der anderen Partei zumindest auf einer grundlegenden Ebene verständlich machen. Sie müssen ihnen die kurz- und langfristigen Konsequenzen möglicher Alternativen erklären. Und Sie müssen eine Sprache verwenden, die sie verstehen .

  • Wenn Sie sagen "Dies wäre ein Hack, der den Code weniger lesbar und erweiterbar macht" , sagen sie "Ja, was auch immer" .
  • Wenn Sie sagen "Dies wäre eine kurzfristige Lösung, die eine längerfristige Entwicklung und Wartung verteuert und das Risiko der Einführung von Fehlern erhöht" , sagen sie "a ha, lasst uns überlegen" .
  • Und wenn Sie sagen: "Diese Lösung würde Sie jetzt 100 US-Dollar kosten, aber 500 US-Dollar an technischen Schulden einführen, die Sie früher oder später mit Zinsen zurückzahlen müssen. OTOH, diese andere Lösung kostet Sie jetzt 400 US-Dollar und hinterlässt keine technischen Schulden. Wählen Sie die aus, die Sie haben." wollen " , sagen sie " jetzt reden wir! " .

OTOH können sie uns ein oder zwei Dinge über die Geschäftsperspektive beibringen. Unternehmen wollen brauchbare und gut genug - kaum perfekte - Lösungen. Und sie wissen wahrscheinlich besser als jeder andere, dass "perfekt der Feind des Guten ist". Sie müssen also bedenken, dass es unsere Aufgabe ist, Lösungen für Probleme unserer Kunden bereitzustellen, anstatt technisch perfekte Software zu produzieren. Manchmal konvergieren diese beiden zu demselben, aber häufiger nicht. Dies mag von vielen als traurig angesehen werden, aber es ist geschäftliche Realität. Wenn es mir gelungen ist, das Problem meiner Kunden zu lösen, und ich sehe, dass es ihnen das Leben sichtbar erleichtert hat, bin ich genauso glücklich wie sie. OTOH, wenn ich es geschafft habe, das perfekte Design umzusetzen, das ich mir vorgestellt hatte, aber das Unternehmen in der folgenden Woche bankrott geht, ist es für niemanden ein Gewinn, oder?

Ein vernünftiger Geschäftsinhaber wird verstehen - wenn Sie ihn in seiner eigenen Sprache erklären -, warum es wichtig ist, die Software sauber zu halten, Komponententests zu schreiben, umzugestalten usw. Auch wenn diese kurzfristig nichts direkt beizutragen scheinen, sie sind für die langfristige Wartung unerlässlich. Und vernünftige Kunden legen Wert auf die langfristige Wartbarkeit ihres Geschäfts, sodass sie sicherlich bereit sind, in dieses Unternehmen zu investieren, wenn sie den Wert sehen, den ihre Investition generiert. Da sowohl ihre Ressourcen als auch Ihre Zeit begrenzt sind, müssen Sie Prioritäten setzen und sich auf die wichtigsten Dinge konzentrieren. Aber es ist nur wichtig, wenn es für Sie beide wichtig ist .

Vielleicht möchten Sie Modul A umgestalten, weil der Code dort einfach schrecklich ist und Sie eine erstaunliche Idee haben, wie Sie den Code mit einem Entwurfsmuster, über das Sie gerade gelesen haben, präzise, ​​elegant und sauber umgestalten können. Wenn dieses Modul jedoch seit Jahren nicht mehr berührt wurde und zuverlässig funktioniert, sollten Sie sich höchstwahrscheinlich besser auf Modul B konzentrieren, das nächste Woche um eine sehr wichtige neue Funktion erweitert wird und unzählige Fehler enthält bereits.

Péter Török
quelle
3
Wow, Sie haben Kunden, die technische Schulden tatsächlich vermeiden würden? Die meisten von denen, die ich hatte, gingen zu 100 Dollar, ja, ich nehme das.
Sevenseacat
Nun, das ist das Knifflige, nicht wahr? Was ist "gut genug" und wo beginnen Ihre Renditen zu sinken, wenn Sie überlegen, Zeit für die mittel- bis langfristige Gesundheit Ihres Unternehmensprodukts / -systems zu investieren? Ich würde argumentieren, dass dies etwas für einen Fachmann ist, um einen Anruf zu tätigen.
Eric Smith
2
@ Karpie, ja, es gibt Kunden, die gelernt haben, was technische Schulden tatsächlich bedeuten (normalerweise auf die harte Tour).
Péter Török
2
@ EricSmith, ja, es ist eine unscharfe Entscheidung, ohne eine einzige richtige Antwort. Wir Entwickler verstehen die technischen Konsequenzen der Dinge; Der Kunde kennt das Budget und die geschäftlichen Einschränkungen. Im Idealfall geben wir an, wie viel jede Funktion / Aufgabe kostet. Der Kunde priorisiert basierend auf dem Wert und den Kosten jedes einzelnen. Es gibt immer Kompromisse, wenn Sie das System in Betrieb halten und gleichzeitig die dringendsten Probleme nacheinander beheben müssen.
Péter Török
3
Ich stimme dem zu, was Sie hier sagen, obwohl ich auf Unternehmenskulturen gestoßen bin, in denen Benutzer sich geweigert haben, zu kommunizieren. Es muss eine Einbahnstraße sein, sonst wird es nicht erfolgreich sein. Ich habe in meinem obigen Kommentar nur halb darüber gescherzt, Donuts zur Konditionierung zu verwenden. Manchmal muss man positive oder sogar negative Verstärkung verwenden, um eine Teilnahme zu erhalten.
Jfrankcarr
4

Wie Ihr Kunde sich selbst sieht:

  • Ich habe ein Projekt, das ich so schnell wie möglich erledigen muss
  • Ich kenne meine geschäftlichen Bedürfnisse
  • Ich muss das Problem auf eine Weise lösen, die die aktuellen Geschäftspraktiken nicht stört
  • Ich habe ein begrenztes Budget, um dies zu erreichen.

Auf der anderen Seite sehen sie Ihre Gruppe als:

  • Leute, die nicht verstehen, dass sie Geld aus meinem Budget saugen.
  • Verstehen Sie nicht die Bedürfnisse unseres Geschäfts
  • Sie möchten alles neu gestalten, auch wenn dies die Implementierung für das Unternehmen erschwert.
  • Willst du eine clevere Slick-Lösung haben, wenn alles, wofür ich das Budget habe, funktional und effektiv ist?

Ihr Hauptproblem scheint darin zu bestehen, dass keiner von Ihnen versteht, was er von der anderen Partei benötigt.

SoylentGray
quelle
3

In erster Linie ist Agile nicht die Lösung für alle Probleme, die Sie in Ihrem Projekt haben.

Wie der Kunde denkt, unterscheidet sich grundlegend von dem, was ein Softwareentwickler denkt

Ja. Manchmal ist es wahr. Es gibt sogar Fälle, in denen Kunden nicht wissen, was und wie sie wollen (dh die Anforderungen sind nicht klar). Was auch immer, wenn Sie agil sind, erhalten Sie das Ergebnis nach jedem Sprint (sagen wir 2 Wochen) und Sie erhalten die Möglichkeit, Kundenfeedback zu erhalten und sicherzustellen, dass alle auf derselben Seite sind. Dies hilft bei der frühzeitigen Erkennung und Behebung von Problemen, die intern zum Aufbau von Vertrauen beitragen.

Es gibt auch ein Sprichwort: Benutzer sind wie verrückte Kinder. Wenn sie also nach einer Waffe fragen und wissen, dass diese nicht sicher ist, können Sie eine Spielzeugpistole geben, um sie zu beruhigen .

Was ist der beste Weg, um dies anzugehen?

Wie ich bereits sagte, gibt es keinen Zauberstab, der alle diese Probleme lösen kann . Sie müssen mehr mit Ihren Kunden in Kontakt treten, damit Sie genau verstehen, was die anderen tun. Bewerben Sie den Besuch vor Ort, öffnen Sie Feedback usw.

Stellen Sie sicher, dass Ihr Produktbesitzer und die Stakeholder an den Sprint-Demos teilnehmen und wertvolle Vorschläge zur Verbesserung des Produkts machen .

ManuPK
quelle
1

Wenn Sie kein Buy-In vom Kunden haben, kann Agile nahezu unmöglich sein.

Mit Buy-In meine ich, einen garantierten Prozentsatz der Zeit eines Kundenvertreters pro Woche oder Monat zu erhalten. Dieser Prozentsatz variiert je nach Projekt.

Offensichtlich haben sie ihren Tagesjob, daher liegt es nicht nur am Kundenvertreter selbst, sondern auch an ihrem Management, Zeit für sie zu gewinnen.

Die Zustimmung des Managements auf Kundenseite ist daher der Schlüssel zu diesem Problem

ozz
quelle
ohne Kundenkauf in irgendeiner Methode wird fast unmöglich sein
Ryathal
@ Ryathal - in der Tat, aber es ist besonders wichtig in der Art, wie ich es für Agile beschreibe.
Ozz
0

Denken Sie daran, dass Agilität nicht bedeutet, dass der Kunde an täglichen Stand-ups oder einigen anderen alltäglichen Aspekten von Agilität beteiligt ist. Bei Agile aus Kundensicht geht es um Kommunikation. Das bedeutet nicht, dass sie mit Ingenieuren über Implementierungsdetails kommunizieren.

Kunden arbeiten mit dem Product Owner zusammen, um ständiges Feedback zu erhalten und zu geben. Das Thema sind Funktionen, aber nicht, wie sie implementiert werden. Liefern Sie die richtigen Funktionen? Bist du im Zeitplan? Haben sie sich ändernde Anforderungen, an die Sie sich anpassen müssen?

Agile hilft Ihnen und Ihren Kunden, diese Fragen zu beantworten.

Bryan Oakley
quelle