Des clients contents, et rien d'autre

http://www.miximum.fr/wp-content/uploads/2013/01/monks_playing_volley_ball_in_the_afternoon-624x364.jpg

Quels sont les buts fondamentaux de tout être humain ? D'après les enseignements bouddhistes, nous désirons le bonheur et craignons la souffrance. Cela me parait un point de départ relativement consensuel. Quel devrait être le but de toute structure sociale ? Le bon sens me souffle qu'il devrait être de permettre au plus grand nombre d'atteindre le plus haut niveau de bonheur possible, et de réduire au maximum la quantité de malheur ((Tout ceci est discutable, mais ce n'est pas le sujet de l'article.)). Quel devrait être le but fondamental de tout freelance travaillant pour ses clients ? J'ai encore une fois envie de répondre : les satisfaire au mieux, et leur éviter le malheur.

Des clients heureux, notre mission ultime ?

Il y a de ça quelques années, j'ai décroché un bon contrat pour un développement de quelques mois. En fait, c'était mon premier projet en tant qu'indépendant, et j'y ai mis toutes mes tripes ((Littéralement. J'ai beaucoup vomi, durant cette période.)). Je me suis investi à fond. J'ai blindé les tests. J'ai refactorisé et optimisé sans relâche. La qualité technique du projet était au top de ce que pouvaient produire mes compétences de l'époque. Et pourtant, malgré cette implication, le projet s'est mal terminé. Les relations étaient tendues, et mes clientes pas satisfaites.

Quelles ingrates ! me disais-je alors.

Avec le recul, je me rends compte que j'avais perdu de vu l'essentiel. Je travaillais pour le projet. Je travaillais pour moi. Mais je ne travaillais pas vraiment pour elles ((Bon, faut pas déconner, ce n'était pas la seule raison de cette mésentente)).

Car au final, quelle est l'ultime mesure de la réussite d'un projet ? Sa rentabilité ? Sa qualité technique ? Le nombre de visiteurs uniques par moi ? Je pense, moi, que c'est la satisfaction du client. Peu importe que le résultat soit moche et sous optimisé, peu importe que la couverture des tests ne soit pas optimale, si le client est heureux, alors le boulot est fait (et le freelance payé, ce qui a son importance).

À l'inverse, quelle que soit la qualité de la réalisation, si le client n'est pas content, c'est qu'il y a un problème.

Mais alors, on peut coder comme des porcs ?

Évidemment, je ne suis pas en train de dire qu'il faut négliger la qualité, ou ne pas travailler dans les règles de l'art. Mais il ne faut pas perdre de vue les raisons de la qualité. Si l'on créé et maintient une couverture de tests, c'est pour que notre client ait la satisfaction d'utiliser un site qui ne plante pas tous les deux jours. Si l'on écrit du code propre et refactorisé, c'est pour que notre client n'ait pas le déplaisir de devoir payer une refonte tous les six mois. Si l'on optimise les performances, c'est pour que notre client ait la satisfaction de satisfaire ses propres clients.

De même, il ne s'agit pas de manipuler son client en cachant la poussière sous le tapis. Il faut viser une satisfaction durable et de valeur, ce qui passera de toutes façons par une bonne qualité technique.

Il ne s'agit pas non plus de se laisser marcher sur les pieds et d'accepter n'importe quoi. Comme on ne rend pas service à un enfant en cédant à tous ses caprices, on ne peut pas servir un client si celui-ci ne comprends ni ne respecte notre position de professionnel.

Heureusement pour nous, ces différents objectifs vont dans le même sens. Du moins, la plupart du temps. C'est quand ils divergent que les problèmes surviennent. Que faire en cas de conflit de valeurs ? Comment réagir dans les cas difficiles ? J'en vois au moins trois.

Client vs. Bonnes pratiques

Le premier cas, c'est quand le client demande quelque chose qui va à l'encontre de nos bonnes pratiques ou de l'état de l'art. « Je veux de la musique sur mon site qui se lance toute seule. Passez-tout en comic-sans, ça donnera un air jovial. » Bien entendu, en tant que professionnels, nous ne sommes pas que de simples exécutants, nous avons un devoir d'expertise et de conseil. Mais si notre client reste sourd à nos arguments et refuse l'évidence, que faire ? Faut-il se plier à ses désirs, ou l'envoyer sur les roses ? Je sais déjà ce que Mike Monteiro répondrait.

Ces exemples ne sont pas trés pertinents, parce qu'ils ne permettent pas d'apprécier la subtilité du conflit de valeur en jeu. Évidemment, je refuserai de mettre une musique de fond sur un site de ecommerce quelconque, de la même manière qu'un bon garagiste refusera toujours de boucher une fuite d'huile avec un chewing-gum. Mais dans les cas plus subtils, comment trouver le juste milieu ? Quand faire une entorse à sa conscience professionnelle, et quand persister, quitte à mettre fin à la collaboration ?

Client vs. Lui-même

Le deuxième cas, c'est quand le client demande quelque chose qui va à l'encontre de ses propres intérêts. « Je veux un carousel sur la page d'accueil », demande typique, alors que l'on sait maintenant que cette pratique est néfaste. Ou quand il s'obstine à demander une fonctionnalité qui lui plaît à lui au lieu d'apporter de la valeur à ses propres clients. La tentation est grande de vouloir imposer notre propre vision du projet, et d'utiliser nos sources de pouvoir (expertise, conseil, mot de passe du serveur) pour influencer ses décisions. Mais à quel moment outrepassons-nous notre responsabilité ?

Ma chère et tendre, qui est assistante sociale et passe sa vie à gérer des cas sociaux, m'expliquait récemment qu'il faut apprendre à respecter les objectifs de la personne, même s'ils vous paraissent absurdes. Par exemple, certains sans-abris refusent les logements qu'on se casse le c** à leur trouver, parce que tout simplement, ce n'est pas leur objectif. Ce n'est pas ce qu'ils recherchent (ce n'est pas le cas de tous, hein !). Il est parfois tellement difficile de ne pas substituer ses désirs à ceux de son interlocuteur.

En définitive, si un client souhaite gérer son projet n'importe comment, c'est son droit le plus strict, et il n'y a pas de jugement à avoir là dessus. La différence est parfois subtile, entre conseiller et imposer sa vision. Là encore, comment trouver le juste milieu ?

Un peu de déplaisir pour beaucoup de plaisir

Le troisième cas délicat, c'est quand il faut infliger à son client un peu de déplaisir pour lui procurer du plaisir plus durable sur le long terme ((Je sens qu'il y en a qui vont mal interpreter mes propos. Je le sens.)). L'exemple typique, c'est celui du refactoring qu'il va devoir payer deux ou trois jours, indispensable pour maintenir une bonne qualité technique, mais qui reste parfaitement abstrait et invisible pour lui.

Si le client refuse de payer, que faire ? Laisser tomber et attendre que tout pète ? Le faire en douce, comme nous le conseillais Peter Gasston ? L'imposer quitte à aller au clash ? Se barrer avant que le projet ne devienne trop pénible à maintenir ?

Le clash des valeurs

J'ai laissé de côté le cas caricatural où le client est simplement un abruti jamais content. Heureusement, ce genre d'énergumène est loin de représenter la majorité.

En définitive, je suis convaincu (pour le moment) que le but ultime à viser dans une collaboration professionnelle est la satisfaction du client, ce qu'on oublie parfois. Cependant, ce n'est pas le seul objectif qui m'importe : je n'ai pas envie de produire de la m**de sur commande, et j'ai le droit d'être payé à l'heure. Comment réagir, quelle position adopter, quels compromis accepter ou non dans le cas de conflits de valeurs ? Je n'ai pas de réponses toutes faites, mais y penser au préalable me parait un premier pas.

Je suis curieux de vous entendre là dessus, des opinions ?