Gérer l'inadéquation de la culture client / développeur sur un projet agile

11

L'un des principes de l'agilité est ...

Collaboration client sur négociation de contrat

... un autre est ...

Individus et interactions sur les processus et les outils

Mais à mon avis, au moins en ce qui concerne l'interaction avec le client, il y a un problème fondamental:

La façon dont le client pense est différente de celle d'un ingénieur logiciel

C'est peut-être un peu une généralisation, oui. Sans doute, il existe des domaines commerciaux où ce n'est pas nécessairement vrai --- ils sont cependant rares. Dans de nombreux domaines cependant, le client type est:

  1. Intéressé par les préoccupations opérationnelles quotidiennes - tactiques à courte portée ... pas nécessairement stratégie;
  2. Naturellement, seulement concerné par la solution immédiate;
  3. Des penseurs pratiques, pas des penseurs abstraits;
  4. Beaucoup plus intéressé à «faire le travail» que de considérer comment la solution répondra aux préoccupations futures.

En revanche, dans l'idéal , les ingénieurs logiciels qui pratiquent l'agile sont:

  1. Des gens qui pensent beaucoup à la qualité;
  2. Les personnes qui apprécient comment un peu de travail initial peut économiser une tonne d'efforts sur toute la ligne;
  3. Des penseurs expérimentés et analytiques.

Il semble donc y avoir un écart de culture qui tend à inhiber la «collaboration client».

Quelle est la meilleure façon de résoudre ce problème?

Eric Smith
la source
1
Mise en forme du conditionnement opérant - en.wikipedia.org/wiki/Shaping_%28psychology%29 - Astuce: c'est trop évident si vous utilisez un clicker avant de lui donner un beignet.
jfrankcarr
3
Je voulais voter pour cela. Mais ensuite j'ai lu les stéréotypes que vous essayez de mettre dessus. Il y a aussi de mauvais programmeurs qui font des clients agiles et bons. Peut-être pourriez-vous retravailler votre question pour inclure les difficultés que vous rencontrez au lieu des stéréotypes biaisés que vous avez ici .. Alors je voterais pour la question.
SoylentGray
3
vos stéréotypes trahissent votre opinion narcissique sectaire, je ne pense pas que quiconque pense que la façon dont vous faites réussirait à traiter avec n'importe quel client, vous avez déjà pris votre décision et avez un système de croyances en place pour renforcer votre parti pris. C'est juste penser à des attitudes chauvines qui donnent une mauvaise réputation au travail avec les ingénieurs. Bonne chance avec ça.
1
@Chad Cela peut être un point de vue utile pour une question, qu'elle provienne ou non des idées préconçues du demandeur. Penser à la façon dont un bon ingénieur interagit avec un mauvais client est le cas pertinent et intéressant: on pourrait faire valoir que nous ne nous soucions pas de la façon dont les mauvais ingénieurs gèrent cela, car leur produit sera de toute façon inférieur et les bons clients évitent le besoin de cette question. Cela nous pose le problème de savoir comment un bon développeur doit traiter avec un mauvais client. Peut-être que le libellé a été fort, mais la question est toujours utile,
Chris Bye
@Slothsberry - Je comprends que la question pourrait être étendue à ces sous-ensembles. Ce n'est pas ainsi qu'il est échelonné. Je l'ai lu car tous les développeurs qui pratiquent l'agilité sont bons et la plupart des clients sont mauvais.
SoylentGray

Réponses:

27

Dans de nombreux domaines cependant, le client type est:

  • Intéressé par les préoccupations opérationnelles quotidiennes - tactiques à courte portée ... pas stratégie;
  • Seulement préoccupé par la solution immédiate;
  • Penseurs généralement unidimensionnels et non abstraits;
  • Principalement intéressé à «faire le travail» plutôt qu'à trouver une solution durable et de qualité.

Et pour être franc, ils ont généralement de bonnes raisons de penser comme ça. Tout d'abord, ils dirigent une entreprise qui devrait générer des revenus aujourd'hui et demain, pas dans un avenir lointain. Deuxièmement, ils ne sont pas des experts techniques - ils ne savent pas ce qui est possible et ce qui ne l'est pas, et quelles sont les conséquences de choix architecturaux / de conception / de mise en œuvre spécifiques. Voilà ce que nous savons.

La réponse est donc - ce n'est pas surprenant - la communication .

Vous devez beaucoup communiquer, vous éduquer, vous faire comprendre le point de vue de l'autre partie au moins à un niveau basique. Vous devez leur expliquer les conséquences à court et à long terme des alternatives possibles. Et vous devez utiliser un langage qu'ils comprennent .

  • Si vous dites "ce serait un hack, ce qui rend le code moins lisible et extensible" , ils disent "oui, peu importe" .
  • Si vous dites "ce serait une solution à court terme, qui rendrait le développement et la maintenance à plus long terme plus coûteux et augmenterait le risque d'introduire des bogues" , ils disent "a ha, considérons" .
  • Et si vous dites "cette solution vous coûterait 100 $ maintenant, mais introduit 500 $ de dette technique que vous êtes tenu de rembourser tôt ou tard avec intérêt; OTOH cette autre solution vous coûte maintenant 400 $ et ne laisse aucune dette technique; choisissez celle que vous veulent " , ils disent " maintenant nous parlons! " .

OTOH, ils peuvent nous apprendre une ou deux choses sur la perspective commerciale. Les entreprises veulent être utilisables et suffisamment bonnes - pas parfaites - solutions. Et ils savent probablement mieux que quiconque que "le parfait est l'ennemi du bien". Vous devez donc garder à l'esprit que notre travail consiste à fournir des solutions aux problèmes de nos clients, plutôt que de produire des logiciels techniquement parfaits. Parfois, ces deux convergent vers le même, mais le plus souvent non. Cela peut sembler triste à beaucoup, mais c'est une réalité commerciale. Pour moi, si j'ai réussi à résoudre le problème de mon client, et que je vois que cela lui a visiblement facilité la vie, je suis aussi heureux qu'eux. OTOH si j'ai réussi à mettre en œuvre le design parfait que j'avais en tête, mais que l'entreprise fait faillite la semaine suivante, ce n'est guère une victoire pour personne, n'est-ce pas?

Un propriétaire d'entreprise sensé comprendra - si vous lui expliquez en utilisant son propre langage - pourquoi est-il important de garder le logiciel propre, d'écrire des tests unitaires, de refactoriser etc. Même si ceux-ci ne semblent rien apporter directement à court terme, ils sont essentiels pour l'entretien à long terme. Et les clients sensés se soucient de la maintenabilité à long terme de leur entreprise, donc ils sont sûrement prêts à y investir quand ils voient la valeur que leur investissement génère. Cependant, leurs ressources et votre temps sont limités, vous devez donc établir des priorités et vous concentrer sur les choses les plus importantes. Mais ce n'est important que s'il est important pour vous deux .

Vous voudrez peut-être refactoriser le module A parce que le code qu'il contient est tout simplement horrible, et vous avez une idée formidable comment refactoriser le code pour être concis, élégant et propre, en utilisant un modèle de conception que vous venez de lire. Cependant, si ce module n'a pas été touché depuis des années et qu'il fonctionne de manière fiable, vous feriez probablement mieux de vous concentrer sur le module B, qui sera étendu la semaine prochaine avec une nouvelle fonctionnalité très importante, et il contient des tonnes de bogues. déjà.

Péter Török
la source
3
Wow, vous avez des clients qui éviteraient réellement les dettes techniques? La plupart de celles que j'ai eues coûteraient 100 $, ouais je prendrais celle-là.
sevenseacat
Eh bien, c'est la partie délicate, n'est-ce pas? Qu'est-ce qui est "assez bon", et où vos rendements commencent-ils à diminuer lorsque vous envisagez de consacrer du temps à la santé à moyen et à long terme du produit / système de votre entreprise? Je dirais que c'est quelque chose pour un professionnel de faire un appel.
Eric Smith
2
@Karpie, oui, il y a des clients qui ont appris ce que signifie réellement la dette technique (généralement à la dure).
Péter Török
2
@EricSmith, oui, c'est une décision floue, sans réponse juste unique. Nous, les développeurs, comprenons les conséquences techniques des choses; le client connaît le budget et les limites de l'entreprise. Idéalement, nous indiquons combien coûte chaque fonctionnalité / tâche; le client priorise en fonction de la valeur et du coût de chacun. Il y a toujours des compromis lorsque vous devez maintenir le système opérationnel tout en résolvant les problèmes les plus urgents un par un.
Péter Török
3
Je suis d'accord avec ce que vous dites ici, même si j'ai rencontré des cultures d'entreprise où les utilisateurs refusaient de communiquer. Ce doit être une rue à double sens sinon cela ne réussira pas. Je ne plaisantais qu'à moitié sur l'utilisation de beignets pour le conditionnement dans mon commentaire ci-dessus. Parfois, vous devez utiliser un renforcement positif ou même négatif pour obtenir la participation.
jfrankcarr
4

Comment votre client se perçoit:

  • J'ai un projet que je dois réaliser dès que possible
  • Je connais les besoins de mon entreprise
  • Je dois résoudre le problème d'une manière qui ne perturbe pas les pratiques commerciales actuelles
  • J'ai un budget limité pour y arriver.

D'un autre côté, ils voient votre groupe comme:

  • Les gars qui n'obtiennent pas qu'ils sucent de l'argent de mon budget.
  • Je ne comprends pas les besoins de notre entreprise
  • Vous voulez tout repenser même si cela rendra la mise en œuvre plus difficile pour l'entreprise.
  • Vous voulez avoir une solution intelligente et astucieuse lorsque tout ce dont j'ai le budget est fonctionnel et efficace.

Votre problème principal semble être qu'aucun de vous ne comprend ce dont il a besoin de l'autre partie.

SoylentGray
la source
3

Eh bien, avant tout, Agile n'est pas la solution à tous les problèmes que vous rencontrez dans votre projet.

La façon dont le client pense est fondamentalement différente de la façon dont un ingénieur logiciel pense

Oui. Parfois c'est vrai. Il y a même des cas où les clients ne savent pas quoi et comment ils veulent (c'est-à-dire que les exigences ne sont pas claires). Quoi qu'il en soit, si vous êtes agile, vous obtenez le résultat après chaque sprint (disons 2 semaines) et vous avez la possibilité d'obtenir les commentaires des clients et de vous assurer que tous sont sur la même page. Cela aide à identifier et à résoudre rapidement les problèmes, ce qui contribuera à instaurer la confiance en interne.

Il y a aussi un dicton, les utilisateurs sont comme des enfants fous, alors quand ils demandent une arme à feu et que vous savez que ce n'est pas sûr, vous pouvez envisager de donner une arme-jouet pour les calmer .

Quelle est la meilleure façon de résoudre ce problème?

Comme je l'ai déjà dit, aucun bâton magique ne peut résoudre tous ces problèmes . Vous devez vous engager davantage avec vos clients afin de bien comprendre ce que font les uns et les autres. Promouvoir la visite du site, les commentaires ouverts, etc.

Assurez-vous que votre propriétaire de produit et les parties prenantes assistent aux démonstrations de sprint et donnent de précieuses suggestions pour améliorer le produit .

ManuPK
la source
1

Si vous n'avez pas d'adhésion du client, Agile peut être presque impossible.

Par buy in, je veux dire obtenir un pourcentage garanti du temps d'un représentant des clients par semaine ou par mois. Ce pourcentage variera selon le projet.

De toute évidence, ils ont leur travail de jour, donc ce n'est pas seulement au représentant du client eux-mêmes, c'est à leur direction de prendre le temps pour eux.

Donc, obtenir l'accord de la direction du côté client est la clé de ce problème

ozz
la source
sans client, aucune méthode ne sera possible
Ryathal
@ Ryathal - bien en effet, mais c'est particulièrement important dans la façon dont je décris pour Agile.
2012 à 12h59
0

N'oubliez pas que l'agilité ne signifie pas que le client est impliqué dans des standups quotidiens ou certains des autres aspects quotidiens de l'agilité. Agile, du point de vue du client, c'est la communication. Cela ne signifie pas qu'ils communiquent avec les ingénieurs au sujet des détails de mise en œuvre.

Les clients collaborent avec le propriétaire du produit pour obtenir et donner des commentaires constants. Le sujet concerne les fonctionnalités, mais pas la manière dont elles sont implémentées. Offrez-vous les fonctionnalités appropriées? Êtes-vous à l'heure? Ont-ils des exigences changeantes auxquelles vous devez vous adapter?

Agile vous aide, vous et votre client, à répondre à ces questions.

Bryan Oakley
la source