C’est la faute du développeur

C’est la faute du développeur

Quand un projet tourne au cauchemar, les développeurs ont souvent le réflexe de pointer du doigt un management irresponsable. Mais quand peut-on parler de leurs responsabilités ? Où est la ligne qui sépare les vrais professionnels du reste des développeurs ?



Essence ordinaire

Il y a bien longtemps, dans une galaxie lointaine, très lointaine je travaillais sur le backend d’une application. Une énorme API Symfony 3 avec un sonata admin maquillée comme une voiture volée. Niveau code, c’était beau. C’était propre. On aurait pu bouffer par terre.

On n’avait aucune pression. On était dans les temps pour la livraison.

Je dis on, car on travaillait en binôme. Lambert, côté frontend, est un développeur talentueux. Il développait une application mobile Android et IOS avec Apache Cordova. Il se basait sur mon backend pour la data. Et ça se passait bien aussi dans le code de Lambert.

On est vendredi soir. Une semaine avant la deadline. On a déjà tout fini.

C’est très rare comme situation donc j’insiste. Que ça soit à l’arrière avec mon backend ou à l’avant avec l’application de Lambert, on est en avance.





Nous sommes en plein milieu d’un chaud mois d’aout dans le centre de Lyon. C’est le monde d’avant. Aucun virus à l’horizon. Toute notre agence de communication s’entasse sur la terrasse d’un bar. Une légère brise vient nous rafraichir toute la soirée. Ça et les grandes pintes qu’on se met.

La vie est belle.



Darwin. I Ching.

Lundi matin. Les nuages empêchent le soleil de percer. J’arrive avec un peu de retard à l’agence. Quand Lambert me voit arriver, il se lève et vient immédiatement vers moi.

Lambert : T’as vu le mail de Greg ?
Moi : Olala qu’est ce qui se passe ?
Lambert : C’est la merde. Ils ont ajouté 3000 features.
Moi : …
Lambert : Et c’est la même date de livraison !
Moi : Mais non t’inquiètes.

Lambert : Regarde le mail Mehdi !!!!
Moi : Il fait toujours ça Greg ! Il raccourcit les délais pour faire courir les gens.

Il transpirait le stress. Je l’avais jamais vu comme ça. En quelques minutes, tout avait basculé.





La vérité c’est que j’étais autant stressé que lui. Je savais que des changements aussi brutaux étaient signe de pression énorme en amont. Pression dont on allait bientôt hériter.

Mais surtout je savais qu’on allait devoir affronter Greg.

Greg est le directeur de l’agence. Avec Lambert, normalement, on travaille avec un chef de projet sur nos projets. Pour tous les développeurs, c’est pareil. Si tout d’un coup Greg se mêle aux discussions, il n’y a qu’une seule raison possible.

Les enjeux financiers sont énormes.





Le client est un énorme laboratoire pharmaceutique. On est dans le top 10. Il faut bien comprendre que le secteur pharmaceutique, niveau thune, c’est absolument indécent.

Certains responsables dans ces laboratoires n’hésitent à payer cher pour dépenser tout leur budget de l’année. S’ils ne le font pas, leur budget est réduit l’année d’après. On est à ce niveau de thune là. Et malgré le fait que cette application soit une application interne au laboratoire : on parle de vraiment beaucoup d’argent.

Il faut faire bonne impression. Si on fait bonne impression, les contrats seront encore plus grands. Sinon, ils iront voir ailleurs.



Ça ne rentre pas

Avec Lambert, on a passé la matinée à estimer les changements. Ils étaient abominables ces changements. On devait ajouter beaucoup de features. Y’avait beaucoup d’écrans en plus. Mais surtout, on changeait presque tous les écrans existants.

Tu connais mon opinion sur les estimations. Déjà à l’époque, j’avais cette position. Déjà à l’époque, je ne donnais pas de chiffre absolu.

On est le 10 aout. Ce WE c’est le 15 aout. Ça doit être livré en prod le lundi 17 aout.

On estime que ça prend entre 2 à 3 semaines ce qu’on nous demande. Ça ne rentre pas. Même en bossant le WE, ça ne rentre pas. Ajouter un autre dev pour nous aider ? En si peu de temps, ça ne marchera pas à cause du ramp up. De toute façon, tout le monde est sous l’eau.

On a beau retourner le problème dans tous les sens, ça ne rentre pas.





Et puis on a eu une idée.

On peut raisonnablement faire une partie des nouveaux écrans -les plus importants- sans toucher au flow existant en une semaine. On va proposer ça. Ça va bien se passer.



Jazz

Le meeting avec Greg était juste après la pause du déjeuner. En temps normal, ce n’est pas simple d’avoir une discussion normale avec lui. Il est connu pour toujours arriver à te forcer la main. En te tordant le poignet s’il le faut.

Avec la pression financière de ce projet, son visage était devenu une porte de prison.

Le meeting le plus important de toute cette histoire était sur le point de commencer. Étant le plus senior des deux, il s’adressait énormément à moi. Ça m’agaçait. Du coup, je m’adressais énormément à Lambert. Ça l’agaçait.

La discussion a duré plus d’une heure.

Très honnêtement, je ne me souviens pas de toute la discussion. Et certainement pas mot pour mot. Par contre, je me souviens bien de la partie qui nous intéresse.

Moi : Tu ne peux pas rajouter du travail sans rajouter du temps de travail. C‘est juste logique.
Greg : Vous êtes en avance. C’est toi qui me l’as dit.

Lambert : Les changements sont trop grands. Une semaine d’avance c’est pas assez.
Greg : *s’adressant à moi* Il faut juste deux semaines c’est ça ?
Moi : *s’adressant à Lambert* Deux semaines minimum ! Il nous faudrait entre deux et trois semaines. Voir plus !
Lambert : *s’adressant à Greg* Voir plus !
Greg : Il vous faut 10 jours. On est lundi. Si on compte aujourd’hui, qu’on inclue ce WE, ça fait déjà 7 jours. Avec vos talents combinés, vous avez les capacités de le faire. On peut faire des choses rapidement, en dur comme vous dites, je suis sûr que vous êtes capable. Vous avez déjà fait des miracles. Pourquoi pas cette fois ?

Je me rappelle rien répondre et bloquer complètement à ce moment-là.





Il écoute pas ce qu’on lui dit ou il le fait exprès ?

Greg : Vous le savez que ce client est important. On va le garder. Ils font leur démo lundi, on sera prêt lundi. On s’est engagé sur cette date de livraison. On va la tenir. C’est indispensable pour eux donc c’est indispensable pour nous.

OK. Il le fait exprès, car le client est persuadé que tout va bien.


Greg : Je vous paye évidemment vos deux jours majorés ce WE. Vous pouvez compter sur une prime en plus. Je fais des efforts et je trouve des solutions. On a besoin de vous.
Moi : *s’adressant à Lambert* Ce meeting ne sert à rien. On n’a pas le choix.
Lambert : …
Greg : *en se levant* Je crois en vous. Vous êtes les meilleurs. Vous allez y arriver.
Moi : Ça ne rentre pas. Mais écoute, on va essayer. Qu’est-ce que tu veux que je te dise ?



Collatéral

Les premiers dégâts ont été les tsunamis de stress qui venaient fréquemment fouetter notre santé mentale. Dans une situation comme la nôtre, chaque bug, chaque imprévu est une injection pure d’anxiété en intraveineuse. Un bug, ressenti 60.

Les dégâts sur notre temps libre étaient lourds. Juste avant le WE, on était tout sauf dans les temps. Quand on a accepté les heures supplémentaires, Lambert et moi avions des plans chacun de notre côté pour ce 15 aout. Je me souviens recevoir un appel de mes potes bourrés me demandant ce que je foutais.

J’était trop occupé pour m’expliquer au téléphone.





C’est également là qu’on a commencé les dégâts sur la qualité. Exit les tests, les builds fréquents, le clean code, les reviews et la QA. Tout notre process normal fracassé au sol. Ça donne toujours l’impression que tu vas plus vite sur le coup.

La communication aussi a pris des dégâts importants. Déjà avec la direction. Ces irresponsables étaient la source de nos malheurs. On le faisait ressentir dans nos réponses.

Les dégâts étaient aussi importants entre nous. Entre Lambert et moi. La panique et la précipitation ne sont pas compatibles avec la courtoisie. En particulier au milieu d’un brulant dimanche après midi sans la clim toujours à bosser sur cette foutue application.

Surtout qu’on savait ce qui nous attendait. On le savait que ça ne rentrait pas. On avait beau accélérer et encore accélérer, on savait comment allait finir cette folle course contre la montre.

Avec bruit et fracas.





Notre application parfaitement fonctionnelle à été remplacée par une application à peine utilisable le lundi 17 aout au matin.

Pendant que Lambert et moi on dormait, ils ont plus ou moins réussi à montrer des choses lors de cette fameuse démo. Mais l’application avait des comportements très étranges. Trop étrange. Ils ont dû la relancer. À plusieurs reprises.

On était sur le contraire absolu de « la forte impression » attendue.



Trauma

Le laboratoire pharmaceutique a fait le mort après cette histoire. Ils ne nous ont pas sollicité pour d’autres contrats. Ils ne nous ont même pas demandé de mise à jour sur cette application.

Et le plus gros des dégâts était encore à venir.

Presque un mois plus tard, Lambert vient sans raison s’asseoir à côté de moi. C’était son dernier jour. Il venait de se faire licencier pour une raison bénigne. Une petite erreur de rien du tout lui a couté son poste.

Absolument toute l’agence, sous le choc, parlait de licenciement abusif.

À juste titre.





Je lui ai tout de suite dit que ça devait être lié à cette histoire d’application. Il s’en foutait complètement. Il était juste venu me dire au revoir. Il était content. Il allait enfin quitter cette agence -qu’il avait fini par détester- avec son indemnité et le chômage le temps de trouver autre chose.

Il trouva dès la semaine suivante pour la petite histoire.

Quelques mois plus tard, je suivais le conseil de Lambert. Je posais ma démission sans aucune explication. J’étais déjà loin dans ma tête. Je me préparais à quitter la France pour m’expatrier au Canada.

Pendant cette transition j’étais persuadé que les seuls et uniques fautifs de toute cette histoire étaient la direction. C’est tout sauf ma faute! Encore moins celle de Lambert. C’est entièrement la faute de cette agence d’amateurs et d’irresponsables.

J’avais tort.



Do or do not

Toutes les conséquences de cette histoire sont entièrement de ma faute. L’erreur la plus grave a été mon attitude durant la réunion avec Greg. Je savais qu’il était impossible d’arriver au résultat dans le temps imparti. Et pourtant j’ai dit quoi ?

J’ai dit qu’on allait « essayer ».

J’ai dit ça pour éviter la confrontation. J’ai dit ça, car les enjeux étaient trop importants. J’ai dit ça pour être bien vu. J’ai dit ça aussi pour avoir une chance d’être le héros. Celui qui arrive à faire le travail à temps.





C’était fondamentalement malhonnête et non-professionnel de ma part.

On attend d’un professionnel qu’ils disent non, peu importe la personne et les enjeux en face.

Un développeur professionnel impose la réalité face au pouvoir. Un développeur professionnel défend ses dates de livrables avec la même agressivité qu’une direction veut les changer. Un développeur professionnel dit non quand les enjeux sont énormes. C’est justement là où c’est le plus important de le faire.

Un développeur professionnel fait tout pour livrer un travail de qualité dans le temps imparti. Et parfois ça veut dire non à des délais stupides. On peut réduire le scope, reporter une date, livrer par itération et de manière générale imposer des contraintes qui vont permettre de s’engager sur une date.

On s’engage à le faire, car on sait qu’on le fera. On n’essaye pas.

J’aurais dû tenir tête à Greg. Lui faire comprendre que c’était impossible. Fermer toute possibilité avec ces conditions. Anéantir clairement et de façon répétée tous ces espoirs. Le forcer à accepter notre solution alternative. Le forcer à appeler le laboratoire. Le forcer à décaler la démo.

Greg aurait dû quitter la réunion furieux contre moi. Persuadé que ça ne rentrait pas. À la recherche d’une autre solution.

Qui sait, le client aurait peut être accepté de décaler. Le client aurait peut-être trouvé une autre alternative. L’agence aurait peut-être trouvé une autre alternative. Greg aurait peut-être fini par accepter notre alternative.

Peut-être que ce client serait toujours client aujourd’hui.

Mais non. Il est sorti confiant. J’avais décidé d’essayer. J’ai condamné mon entreprise à l’échec en évitant ce conflit.

Et par la même occasion, j’ai forcé Lambert avec moi dans cette mission suicide.





Amateur

Toutes mes actions qui ont suivi ensuite hurlent l’amateurisme.

J’ai accepté de faire des heures supplémentaires alors qu’il n’y avait aucun plan B. C’est la recette du chaos. Il faut exiger un plan B si ton entreprise exige des heures supplémentaires.

J’ai volontairement supprimé les process de qualité pour aller plus vite. En plus d’être irresponsable et stupide, ça ne permet pas d’aller plus vite. Même sur le court terme.

J’ai géré la pression de façon désastreuse. Ça se ressentait dans mes communications et dans mon travail. Par souci de longueur je ne dis pas tout, mais plusieurs échanges pas du tout professionnels ont eu lieu entre nous et l’agence.

J’ai livré une application en production en étant sûr qu’elle était défectueuse. En tant que développeur, je crois que c’est la définition même du non-professionnalisme.

J’étais un irresponsable amateur qui accusait les autres d’être responsables de tout. Je ne pouvais accepter ma responsabilité à ce moment-là. C’était inconcevable pour moi, j’était la victime, pas le responsable.

Ça fait mal quand on se rend finalement compte de la réalité.





Professionnel

Je ne me suis pas rendu compte de tout ça via une épiphanie soudaine en me réveillant un matin. Je me suis rendu compte de tout ça en lisant un classique.

Ma recommandation du jour : Clean Coder.

En une phrase, ce livre est le code de conduite du développeur professionnel.

Ce livre m’a ouvert les yeux sur mon attitude et tous les problèmes qui en découlaient. Savoir quand et comment dire non est en effet quelque chose de capital qui me manquait. Mais c’est loin d’être tout ce que j’ai appris via ce livre.

Ce livre m’a appris à prendre mes responsabilités comme un professionnel. Il m’a appris à gérer mon temps, il m’a donné un véritable cadre pour estimer mes taches, il m’a appris à gérer la pression comme un professionnel, mais aussi à mieux collaborer.

Dans un monde où les développeurs se contentent de coder sans poser de question, les professionnels font bien plus que ça.

Ils sont alors vite identifiés comme « les bons éléments » dans une équipe. Et ça fait toute la différence.





Il s’adresse à tous les développeurs, peu importe leur niveau. Je dirais même que le plus tôt, le mieux. Encore un bouquin que j’aurais voulu lire en début de carrière.



Épilogue

Un vrai professionnel est un atout considérable pour une entreprise. Une personne fiable sur laquelle on peut compter. On peut compter sur son travail, mais aussi sur la façon dont elle le fait. Elle le fait de façon honnête et toujours dans l’intérêt de son entreprise. Même quand ça signifie rentrer en conflit. Surtout quand ça signifie de rentrer en conflit.