Voici la suite du patch-work bizarristique de ma précédente incarnation professionnelle. Se référer à l’article précédent pour le début.
Je vais maintenant vous décrire …
Mes chefs
Cheffette Gothique
Il s’agissait de ma cheffette directe, dans notre fameuse équipe de personnes (A, B, C, D) au graphe complet de déblaterration-les-uns-sur-les-autres. (cf. vocabulaire de la théorie des graphes (https: //fr.wikipedia.org/wiki/Graphe_complet)).
*)
Je l’aimais bien. Par respect pour elle, j’ai vraiment essayé de modérer mon cerveau et de l’empêcher de me faire fantasmer sur ses nichons. Je ne peux pas prétendre y être totalement parvenu. On va dire que le fait d’avoir essayé suffit à constituer une marque de respect.
Là où j’ai moins aimé, c’est quand elle a commencé à attraper une ‘schizophrénie cheffale’. Vous connaissez ? Y’a le chef qui vous dit : « tu n’es pas obligé de faire toutes ces heures supplémentaires ni de travailler les soirs et les week-ends », et juste après il vous dit : « L’important c’est l’Engagement. Quand tu nous donnes une estimation de temps tu dois t’y tenir. Le MégaChef m’a prévenu qu’il donnerait des avertissements si on ne tient pas nos Engagements ».
C’est cette dernière petite phrase terrible qui a contribué à ce que je m’auto-force à pourrir mon temps de vie personnel par du temps de travail en rabiot, jusqu’à ce que mon ras-le-bol déborde et provoque mon départ. Mais je n’ai pas eu de méchants avertissements. Je suis un gentil petit soldat.
*)
J’ai eu à inspecter une partie de son code. Pas très beau à voir. J’ai bien conscience qu’on a toujours tendance à trouver que le code des autres est pourri. J’essaye de tenir compte de ce sentiment pour modérer mes envies de quolibets et de destructions par la foudre. Mais là, quand même, elle avait réussi à me foirer un calcul de distance dans un espace de dimensions infinie. En karmagraphie, c’est un peu la base de tout, quand même.
J’aimerais bien rencontrer en vrai une femme qui code bien et que ça passionne. Je sais qu’il en existe. Parmi les vilains sentiments qui surgissent dans mon cerveau et dont j’ai infâmeusement honte, celui de « c’est une femme donc elle code mal » tient une place significative. Cheffette Gothique n’est pas une personne qui m’a aidé dans la lutte contre ce sentiment. Tant pis, peut-être une autre fois.
Chef Random
L’ex-chef de ma cheffette. C’était un tocard social de taille assez conséquente.
*)
Réunion concernant le projet fou avec les relevés automatiques et massifs d’acariens. On en était au début, j’avais commencé à digérer les specs et voyais à peu près comment architecturer le bazar. Random me demande : « la réalisation, ça prendrait combien de temps ? ».
C’est toujours sympa de devoir faire une estimation alors qu’on n’a pas été prévenu qu’il fallait en faire une. J’y réfléchis à fond pendant deux secondes. Comme d’habitude, une partie de mon cerveau me hurle d’annoncer trois fois plus long car c’est de toutes façons le temps que ça prendra réellement même si personne ne veut encore le reconnaître. Je rabat le caquet à cette partie de cerveau. Je me tourne vers Collègue Nounours avec un regard de pitié et donne un délai qui ne me semble pas trop pourri. Nounours n’affiche aucune réaction, montrant bien que je suis seul à m’Engager sur ce sujet (en même temps, je le comprends).
Entendant mon estimation, Chef Random pousse instantanément un râle de mécontentement : « Rrrraaah putaaaaaiiiiiin !!! ». Il n’a rien ajouté de plus. La demi-dizaine de personnes présentes à la réunion n’a absolument pas su comment réagir face à un comportement aussi bizarre. Il y eut un blanc de conversation tout comme j’aime, puis on est passé à autre chose.
Le bramement de Random était tellement immédiat qu’on a tous plus ou moins réalisé qu’il avait prévu de le pousser quelle que soit mon estimation. Il a dû penser que cela ferait ainsi naître en moi un sentiment de culpabilité et me forcerait à mettre les bouchées doubles d’heures sup’ pour terminer le plus vite possible. C’est un crétin peu respectueux.
Inévitablement, la réalisation a été quatre fois plus longue que mon estimation initiale. Je tiens à (re)préciser que je n’ai que très peu truandé de temps libre, chez Zarma.pro en général et pour ce projet en particulier. Par contre, bosser avec des scientifiques fous, ça aide pas à terminer dans les délais. Mais vous saviez certainement déjà cela.
*)
Chef Random ne priorisait jamais les actions. J’avais souvent plusieurs choses à faire sur des sujets relativement différents, à moi de choisir l’ordre que je préférais. Ça fonctionnait pas trop mal. Disons que lorsque je me faisais engueuler, ce n’est pas parce que j’avais incorrectement ordonné mes tâches, c’est juste qu’il trouvait que globalement tout allait trop lentement et son humeur du moment l’invitait à m’engueuler.
D’ailleurs il ne m’engueulait jamais explicitement. Il suggérait juste de manière non-subtil que c’était pas le moment de prendre des congés ni des RTT. Ça aussi, ça a fortement contribué à mon ras-le-bol global.
À un certain moment de son incarnation professionnelle, Chef Random a été progressivement démis de ses fonctions de chef. J’ai pas suivi tous les détails car je m’en branlais. Vu de mon balcon, je dirais simplement que les autres MégaChefs se sont aperçus que Chef Random était un tocard.
Il y eut donc une période de transition durant laquelle nous avions deux chefs : Random et « ». (Je parlerai de Chef « » juste après).
Je me suis dit : « nouveau chef, nouvelle façon de travailler ». Un jour que mes tâches en cours était quelques peu hétérogènes, je me fendis d’un mail aux deux chefs, (le plus court possible, 6 ou 7 lignes à peine), dans lequel je résumais ces tâches et demandais un ordonnancement éventuel. J’obtins une réponse immédiate de Chef Random contenant des priorités claires et explicites. J’étais plutôt content.
Un peu plus tard, réunion avec des collègues et Chef Random. Ce dernier explique que Chef « » va assurer le suivi d’un petit peu tout (voilà un périmètre d’action très clair et très défini). J’en profite pour dire que du coup j’ai bien fait d’écrire ce petit mail pour demander les priorités. Chef Random répond alors « Non, Réchèr. Pas bonne idée. Chef « » m’a contacté ensuite et a rouspété comme quoi ‘ce sont des vrais gamins’. C’est pour ça que j’ai répondu très vite en fixant les priorités. C’était pour vous sauver la vie. S’il avait eu à répondre par lui-même, il vous aurait dévissé vos gueules et chié dans vos cous ».
Ah d’accord. Bon eh bien je vais continuer de m’auto-fixer mes priorités. Mais ça m’a permis d’apprendre que Chef « » me considère comme un gamin. Vraiment super.
Je veux bien admettre que les chefs, lorsqu’ils sont entre eux, parlent de leurs ouvriers-codeurs en termes insultants. On fait pareils lorsqu’on parle entre nous de nos chefs. Mais la moindre des choses c’est de ne pas répéter tel quel les propos proférés durant ces dialogues privés. Chef Random a donc bien tocardisé sur ce coup là.
*)
Il a vilainement encaissé le démettage de responsabilités qui lui a été imposé, il était tout triste de ne plus se sentir important dans la boîte. Il s’en est épanché auprès de différents collègues. Pas moi, mais j’ai fini par l’apprendre indirectement.
Il a été très bien inspiré de ne pas effectuer ses épanchements sur mon épaule, sinon je lui aurais rentré dans le lard direct. Sérieusement quoi ! Il gardait son salaire pharaonique de MégaChef, tout en obtenant une charge de travail très inférieure. Moi j’avais un salaire très bas au départ, qui l’est resté puisque je n’ai jamais été augmenté en 4 ans de boîte, par contre ma charge de travail et de pression culpabilisatoire, elle, a bien augmentée.
En fait ça m’a fait chier d’apprendre qu’il s’était plaint, sans qu’il soit venu se plaindre directement auprès de moi. C’est presque comme si j’avais eu à subir ses jérémiades sans avoir eu l’occasion de lui rentrer dans le lard. C’est la faute des gens qui ont véhiculé ses plaintes. D’autant plus que les gens en question ont eu l’indécence de compatir à ses problèmes. Ouais, j’avais quelques collègues un peu lèche-bottes.
*)
Finalement, la plus haute charge qui est restée incombée à Chef Random était ‘responsable du site’. (On ne sait pas en quoi ça consiste). C’est ce qui lui a permis de provoquer le moment le plus merdique que j’ai vécu à Zarma.pro.
Pour une raison quelconque, on venait de déménager dans une autre pièce, que moi et mes collègues étions en train de réarranger. C’était pas forcément très optimisé ni très feng shui. On avait fait un simple gros carré de bureaux en plein milieu, avec une zone spéciale pour notre bordel d’appareils karmagraphiques (les extrapoleurs de champs et autres quincailleries). C’était viable, et vu la quantité de bastringue matériel requis à portée de main, il était difficile de maximiser le feng shui.
Chef Random nous tournait autour en inspectant nos actions et nos décisions, sans véritablement nous aider. Je suppose qu’en tant que « responsable du site déchu de toutes ses autres fonctions », il s’est senti investi d’une mission divine de décorateur d’intérieur. Il a passé toute la matinée à nous houspiller et à dénigrer notre agencement : « C’est moche », « C’est pas raccord », « Ça fait pas rangé », … On a senti en lui la volonté de vouloir faire évoluer ces dénigrements en attaques personnelles. Il arguait que même dans son atelier chez lui, c’était mieux organisé, et que si c’est comme ça dans ce bureau, il serait curieux de savoir comment c’est chez nous. Blabla blabla.
Moi je m’en fichais. Mais ça a justement ajouté au problème, car il s’en est aperçu et m’a regardé bien dans les yeux en m’interpellant : « Vous vous en fichez, à vrai dire ? ». J’ai pas su quoi répondre. Il avait tellement raison.
Ce sketch qu’il nous a fait, je l’ai toujours en travers de la gueule. Cheffette Gothique a essayé de réduire l’hémorragie en nous conseillant de ne pas nous formaliser sur ses écarts de comportements. Eh bien si justement, je préfère me formaliser. Il nous a jeté inutilement des morceaux d’excréments, tout ça parce qu’il voulait se donner l’illusion qu’il possédait encore un petit pouvoir.
Sur ce coup là, Il a magistralement tocardisé.
Quelques semaines plus tard, alors qu’il passait dans notre tout nouveau bureau, il me demande « Eh bien Réchèr, vous me faites la tête ? Ça fait un petit moment que vous ne venez plus me dire bonjour ».
Je ne crois pas avoir eu la volonté de le snober. En tant que chef, il avait son beau bureau à lui tout seul (magnifiquement bien agencé par lui-même, of course). Je n’allais pas le saluer lorsque sa porte était fermée, car il pouvait avoir envie de ne pas être dérangé, pour cause de conversation importante de chef. C’est ce que je lui ai répondu et c’en est resté là.
J’ai scanné mes souvenirs des jours précédents, j’y ai effectivement trouvé que sa porte était souvent fermée, provoquant une suite de non-bonjours pouvant être assimilée à un faisage de tête. Ceci dit, il est fort possible que j’ai inconsciemment décidé de le snober réellement, et que mon cerveau m’ait caché cette décision interne car mon cerveau est une putain de petite fiotte.
Que mes actes aient été inconscients ou pas, Chef Random a cru que je lui faisais la tête, ce qui tend à prouver qu’il avait quelque chose à se reprocher. Tocard.
Encore quelques semaines plus tard, on voulait faire déménager Collègue NinjaBlingBling dans notre toujours-aussi-nouveau bureau (on lui avait fait une place au milieu de notre bastringue). On avertit Chef Random, qui ne nous donne pas d’avis particulier. On l’annonce ensuite à Collègue NinjaBlingBling, qui rétorque « Je ne peux pas travailler à proximité de vous. Vous êtes tout le temps au téléphone avec des clients, moi je bosse sur des nouvelles technologies, j’ai besoin de me concentrer ». Ça nous embêtait un peu.
On a signalé ce refus à Chef Random, qui a continué de ne pas donner son avis. En tant que fameux ‘responsable du site’, il aurait dû, soit être d’accord et obliger Collègue NinjaBlingBling à déménager, soit ne pas être d’accord et nous dire dès le départ qu’il n’était pas question de le déménager. Il n’a fait aucune des deux actions, car « il s’en fichait, à vrai dire ».
C’est donc bien un tocard social, doublé d’une petite fiotte.
*)
Un jour que j’étais seul dans la pièce, Chef Random débarque et regarde le bureau de Collègue Drache-Code. D’un ton blasé, il lâche : « C’est le désordre. Il y a un énorme tas de stylos, des feuilles de partout, une fourchette en plastique cassée et des gobelets vides ». J’avais envie de troller quelque chose comme : « Au fait, les capotes usagées que j’ai mis dans ma corbeille, ça se recycle ? ». Mais j’ai juste dit « Oh lala, c’est pas classe. Vous voulez que je lui en parle pour qu’il range un peu ? ». Il m’a répondu que ce n’était pas la peine et a ajouté, sur son ton toujours aussi blasé, que « chacun vit comme il veut ».
En fait il n’osait pas en parler directement à Collègue Drache-Code, et n’osait pas non plus le dire aux autres collègues. Il s’est adressé à moi seul car il savait que de manière générale, j’ouvre pas trop ma gueule. Son intention devait être que je transmette sa remarque à Drache-Code. Comme ça, il se mouille pas, mais il a quand même le sentiment d’avoir accompli son travail de ‘responsable du site’.
C’est donc bien un tocard social, doublé d’une petite fiotte. (J’aime bien copier-coller des phrases).
Je n’ai bien évidemment absolument rien transmis à Collègue Drache-Code.
*)
Pour finir avec Chef Random, je mentionnerai rapidement les trois heures de déplacement professionnel que j’ai dû faire avec lui, coincé dans la même voiture.
C’est des choses qui arrivent et je ne peux en vouloir à personne. Mais quand même, c’était horriblement décrépissant. On essayait de trouver des sujets de conversation pour meubler, tout en restant dans la banalité car on ne se connaissait pas assez pour savoir si on avait des intérêts en commun.
J’ai du me retenir de péter pendant trois heures. Mes gaz, ne pouvant s’échapper, ont finis par se répartir dans mes tuyaux internes. Lorsque je suis arrivé à ma maison, ils n’ont donc pas pu tous sortir d’un coup et j’ai passé la soirée à pourrir progressivement mon chez-moi. Dur dur.

Moi et Chef Random, souriants, durant notre road trip qui a créé une amitié éternelle entre nous deux.
Chef « »
Le Chef de Cheffette Gothique et de plein d’autres gens. Il s’appelle « » car je n’ai eu que très peu d’occasions de lui parler directement, et en général c’était plus lui qui parlait tout seul pour nous engueuler. Ce sentiment d’absence de contact s’est propagé dans son propre nom, qui est lui aussi devenu absent.
*)
En fait je suis un peu mauvaise langue : j’ai eu l’occasion de lui parler directement. Lorsqu’il voulait joindre Cheffette Gothique et qu’elle n’était pas disponible, c’est moi qui décrochait le téléphone. Il me demandait : « Ça va ? ». J’avais 2 secondes pour trouver un sujet cool pouvant potentiellement aboutir à une conversation cool de 30 secondes. Évidemment, comme j’étais concentré dans d’autres trucs qui étaient rarement cools, je ne trouvais rien à lui dire et répondais juste : « ça va ». Je ne suis peut-être pas assez doué pour l’improvisation.
Mais lui était tellement fan d’improvisation qu’il aimait provoquer des réunions là-tout-de-suite-maintenant. On avait des maintenance prévues avec des clients, on était en déplacement ou en congés. Osef. Si tu peux pas être à la réunion, c’est tant pis pour ta gueule. (Ou tant mieux, puisque dans ces réunions on se faisait principalement engueuler).
*)
Chef « » tenait à ce que nous soyons soudés comme ‘une équipe’. C’est fort louable. Mais je ne sais pas si ça a bien fonctionné (cf le fameux graphe de déblaterration complet).
Soudés ou pas, il ne voulait pas entendre parler de nos éventuels problèmes internes. Pour lui, l’interlocuteuse principale était Cheffette Gothique et personne d’autre. Il nous a bien répété plusieurs fois qu’on n’avait pas à le contacter ‘en direct’. J’ai rien contre les structures pyramidales (je me contrefous de savoir comment une entreprise doit être organisée), mais ce serait tout de même gentil de ne pas trop insister sur le caractère immuable de ladite pyramide, surtout auprès des gens qui en sont au rez-de-chaussée, voire à la cave, voire à la chambre funéraire.
Phrase rigolote : « La structure pyramidale est gravée dans le marbre ». Amis géologues, bonjour.
Un jour, Collègue Eurod’ a fait une connerie assez volumineuse. Suffisamment pour que Cheffette Gothique estime qu’il méritât d’être pourri au point d’inclure Chef « » ‘dans la boucle’. Mais elle ne pouvait pas le faire, puisque Chef « » ne voulait pas qu’on l’embarrasse avec des problèmes individuels.
Elle a donc fait un mail de pourrissage général de l’équipe, citant la connerie faite par Eurod’, sans mentionner que c’était lui. Chef « » a bien évidemment renchéri d’un mail hurlant que toute notre super-équipe devait respecter à la lettre les recommandations re-serinées par Cheffette Gothique. On top of the market, Collègue DRH était ‘en copie des mails’, histoire de bien enfoncer la vis jusqu’à la garde à coup de marteau-piqueur.
Cheffette Gothique m’a ensuite précisé que je pouvais répondre à son mail pour donner mon avis personnel. Le fait qu’il s’agissait d’un pourrissage général me donnait ce droit. Je m’en fichais un peu, mais finalement j’ai décidé de le faire, afin de passer pour un bon élève obéissant auprès d’elle, par contraste avec Collègue Eurod’ le vilain mauvais élève du moment.
Je me fends donc d’un ‘répondre à tous’ et tente de nuancer le pourrissage de la manière la plus courtoise et la plus objective possible. Cheffette Gothique lit ma prose et ne la trouve pas trop déconnante. Je suis plutôt heureux.
Et là, Chef « » nous répond-à-tous, en caractère gras : « veuillez immédiatement arrêter cette joute verbale, on fera une réunion pour mettre tout ça au clair ». Génial.
Évidemment, Cheffette Gothique n’est jamais allée dire à Chef « » que c’est elle qui m’avait incité à joute-verbaler. Ça c’est de la bonne soudure d’équipe.
Évidemment², on n’a jamais fait de réunion pour mettre tout ça au clair. Et même si on en avait faite une, la date aurait été choisie à l’arrache par Chef « », on aurait pas tous été disponibles et il se serait réuni tout seul pour nous engueuler virtuellement, au cours d’une mono-joute verbale des plus magistrale.
(Tiens, j’ai dit ‘mono’, je viens de faire une Euroderie).
*)
Réunion téléphonique à laquelle j’étais semi-disponible (je codais des trucs qui n’étaient en retard que de deux mois, et je n’avais pas de maintenance client en cours). Celle-ci s’éternise et Chef « » commence à en avoir assez. Il nous annonce alors que « il passe trop de temps avec nous par rapport à ce que nous rapportons » et laisse à Collègue SuperCommercial le soin de terminer la réunion.
Il avait sûrement raison et il était en droit de nous dire ça. Mais du coup, je suis parti sans la moindre once de regret.
Une fois, Collègue Nounours l’a appelé directement. Ils ont discuté, se sont pris le bec, et Chef « » a dû se dire que Nounours rapportait tellement pas assez que ça ne valait même pas la peine de consacrer quelques secondes pour lui dire qu’il ne rapportait pas assez. Il lui a directement raccroché au nez.
C’est terriblement prétentieux et méprisant envers les autres de présenter les choses de cette manière. Je ne vous apprends rien en vous disant que la vie d’une personne n’est rien de plus qu’une quantité finie de temps. Chef « » a une si haute opinion de son propre temps, donc de sa propre vie, qu’on ressent bien qu’il pense que la pauvre vie de nous autres ouvriers-codeurs n’est pas aussi précieuse.
*)
On résultait de la liquéfaction de deux mini-équipes, ayant chacune leur nom. Chef « », au début de sa prise de pouvoir, nous suggéra d’en trouver un nouveau par nous-même, qui nous plairait et ferait naître en nous un puissant sentiment d’appartenance corporatif.
Personne n’a moufté que d’alle. J’ai proposé à mes petits camarades : ‘équipe Chou-fleur’, parce que les légumes c’est bien, et que le chou-fleur c’est une très jolie fractale naturelle. Ça n’a pas eu l’écho que je voulais.
Quinze jour plus tard, on reçoit un mail de Chef « » :
Là tout de suite ce matin, réunion pour Test-0-Steron.
On s’est tous demandé ce que c’était que ce nouveau projet ‘Test-0-Steron’ dont on n’avait jamais entendu parler. Collègue Eurod’ a commencé à râler : « Non mais c’est n’importe quoi, on est déjà charrette-brouette sur tous nos projets, et on nous en colle un de plus. Ça va partir en cacahuète-soufflette ! »
(Ce n’était pas exactement ce qu’il a dit, mais sa façon unique d’utiliser la langue française fait qu’il est difficile de retenir et retranscrire ses propos avec fidélité).
Intérieurement, cette nouvelle m’apportait une petite bouffée de bonheur. Un nouveau projet, ça voulait dire une chance de travailler autrement, moins de temps consacré à faire des maintenances sur les projets existants (dont je ne maîtrisais pas la moitié), d’autres clients, et peut-être même, comble de la félicité, pas de clients du tout durant les premiers temps du projet. Ça signifiait également une raison légitime d’avoir du retard sur un petit peu tout, puisqu’on nous augmentait d’un coup notre charge de travail.
Mes espoirs se volatilisèrent lorsque j’appris, (complètement à l’arrache évidemment) que c’était le nouveau nom de notre équipe. Il sortait de nul part. J’ai jamais vraiment su pourquoi on s’appelait comme ça.
En même temps, on s’en est pas trop mal sorti. Une autre équipe gérée par Chef « » avait pour nom ‘Cleveland Steamer’. Aucun rapport avec ça (http:// www. urbandictionary.com/define.php?term=Cleveland%20Steamer), mais personne n’a pu s’empêcher de faire le rapprochement.
*)
Je suis obligé de reconnaître qu’une fois, une seule fois, Chef « » nous a félicité. On avait commencé la nouvelle version de Modeli-Morvax, un logiciel assez innovant qui pouvait texturer des volumes karmagraphiques constitués par l’ensemble des sous-points de gens ayant des personnalités similaires. On stockait dans des bases SQLite des images d’une infinité de pixels répartis dans une infinité de dimensions. Sans déconner, c’était pas trop mal branlé comme truc.
Je dois avouer que quand je l’ai entendu nous féliciter, ça m’a fait plus peur qu’autre chose. Déjà, j’avais pas énormément participé à cette nouvelle version, mais surtout, ça voulait dire qu’il était capable de féliciter des gens. Ça aurait été bien plus rassurant qu’il nous engueule en continu, on aurait fini par faire abstraction et il aurait totalement disparu de nos esprits. Déjà que son nom avait disparu.
Dans ma paranoïa personnelle, je m’imagine qu’il ne souhaitait pas réellement nous féliciter. En fait on était à quelques heures d’une grosse présentation de ce logiciel devant tout le monde de la boîte. Il voulait juste nous mettre en confiance pour éviter qu’on finisse dans un magistral fail publique et que nos conneries éclaboussent sa réputation personnelle.
Ou alors il nous a félicité une seule fois pour légitimer toutes les engueulades qu’il nous éructait. « Je sais reconnaître un travail bien fait, mais je sais aussi reconnaître de la mayrde, et là, vous faites de la mayrde en continu !! »
*)
Voici quelques phrases d’engueulade qui ont provoqué des moments bizarres dans mon corps et mon esprit.
« Modeli-Morvax, il fait n’importe quoi ! »
Il n’avait pas tout à fait tort. C’était la version 1.1, et elle était méga-buggée, car réalisée par Collègue Drache-Code (je parlerai de cette personne un peu plus loin).
« Je ne veux plus entendre parler de problème de discipline au sein de l’équipe. »
Là non plus il n’avait pas tort. Une fois de plus, c’était pas de ma faute, mais il tenait à s’adresser à l’équipe dans son ensemble. Donc on s’est tous ‘pris ce tir’ dans la gueule. Ça fait vraiment bizarre de (ré)entendre le mot ‘discipline’.
*me regarder bizarrement après que j’ai dit ‘bataille navale’.
Ouais bon, je suppose que c’était de ma faute. Collègue Drache-Code discourait sur la notation Shiva-Lingamienne des coordonnées karmagraphiques, c’est là que je me suis immiscé dans la conversation pour énoncer une remarque rigolote : « ça ressemble à la bataille navale ».
Chef « » m’a regardé d’un air « qu’est-ce qu’il me veut ce connard ? ». Je ne savais plus comment réagir et ais préféré me tourner vers mon écran sans rien dire. Quelques secondes plus tard, j’ai voulu voir si le moment bizarre avait été acquitté. Nos regards se sont alors re-croisés, mais cette fois-ci le sien avait un air « qu’est-ce qu’il me veut ce connard, à pas avoir compris ce que j’ai voulu lui signifier la première fois que je l’ai regardé d’un air ‘qu’est-ce qu’il me veut ce connard ?’ ? ».
C’est bête. Je la trouvais super drôle, la blague de la notation Shiva-Lingamienne qui ressemble à la bataille navale.
*)
Lorsqu’on quitte une entreprise, la convention veut qu’on ait droit à un petit dialogue privé avec la hiérarchie. On remonte ainsi la chaîne alimentaire, on découvre ce que chacun des chefs pensait du travail qu’on faisait, et on peut dire ce qu’on pense d’eux. Ça reste hypocrite et langue de bois, car on ne veut pas se griller au cas où on aurait besoin de reprendre contact avec l’entreprise, mais on a une petite marge de lâchage.
Amélie Nothomb a déjà décrit ce remontage de chaîne alimentaire dans ‘Stupeurs et Tremblements’.
C’est une sorte d’entretien annuel final. (Ça rattrape le fait que je n’ai eu qu’un entretien annuel en 4 ans, et que j’en aurais eu zéro si je n’avais pas trépigné et envoyé des mails, mais c’est une autre histoire, osef).
J’ai eu l’occasion d’avoir ce petit dialogue final avec Cheffette Gothique et MégaChef Storitel (j’en parle tout de suite après). Mais Chef « », nullement. Comme quoi, il s’appelait vraiment « », et je ne saurais jamais ce qu’il pensait de moi. Donc : osef.
MégaChef Storitel
Le Chef de Tout. On dit aussi ‘Président du directoire’ ou ‘Directeur du présidoire’. Il s’appelle comme ça car c’est un grand fan de story-telling :
- Lorsqu’on fait une démo à des clients, il faut leur raconter une histoire.
- Le travail qu’on produisait pour l’entreprise constituait aussi une histoire qu’on racontait, et pas juste des actions aléatoires dans le but d’avoir un salaire.
- Par extension, pour nous signifier qu’on avait qu’à partir si on n’était pas d’accord, il disait : « dans ce cas on ne raconte plus la même histoire ».
Du coup, on a l’impression qu’il s’appelle MégaChef Sofitel, et on ne peut s’empêcher de faire des rapprochements scabreux. Mais en fait non, rien à voir.
*)
Lui et ses amis chefs n’ont eu de cesse de nous dire que lorsqu’on estime un temps de réalisation, il faut s’y tenir (le fameux ‘Engagement’). La raison officielle étant que ça complique la gestion des plannings et que ça ne permet pas de décider correctement du lancement ou du non-lancement d’un projet car sa rentabilité ne peut être fiablement calculée. « Sinon on navigue à vue, et vous comprenez bien que c’est pas possible ».
La vraie raison c’est qu’il sait très bien que c’est humain de sous-estimer le temps que prendra une tâche. Il nous laisse nous planter tout seul pour ensuite nous forcer à tenir nos promesses humainement irréalistes en faisant des heures sup’ d’esclaves.
*)
MégaChef Storitel demande à Collègue NinjaBlingBling de faire une estimation. Celui-ci fournit quelque chose qui semble tenir la route.
Réponse de MégaChef : « Je trouve que ce chiffrage est un peu protectif ».
Oui, le mot ‘protectif’. Il existe et pis c’est tout.
C’est génial. Dans tous les cas, on se fait verre-pilo-sodomisé et ça finit avec des heures sup’ d’esclaves. Soit on chiffre bas, on se plante et on fait des heures sup’ parce qu’on est censé ‘tenir nos Engagements’. Soit on chiffre haut, on s’entend dire que c’est protectif, on rechiffre plus bas, go to étape précédente.
Chef « » nous assénait les mêmes coups. Il m’avait répondu (par le biais de Cheffette Gothique puisqu’il ne me parlait pas directement), que telle estimation « était inadmissible ».
C’était devenu très très drôle. Finalement, plus personne n’osait estimer quoi que ce soit. Aucun d’entre nous ne se mouillait, on s’était métamorphosés en gens flippés de nos mères. Pour le coup, l’esprit d’équipe était présent : on était tous dans la même merde. Et donc on était dans la merde. Merde alors.
*)
Le jour de mon pot de départ, j’installe la bouffe et la piache comme il faut sur les tables, puis je bat le rappel pour prévenir tout le monde que ça y est, c’est l’heure de s’en coller une gratuitement. Je termine par le bureau de MégaChef Storitel. Il me dit « tu as 5 minutes qu’on parle un petit peu ? », je dit que oui, et c’est là qu’a eu lieu mon petit dialogue de départ avec lui. J’étais arrivé au bout de la chaîne alimentaire de la hiérarchie.
Sauf que j’ai pas trouvé ça très sympa de sa part, parce que tout le monde m’attendait et ils n’avaient pas osé mettre les bouteilles en perce sans moi. J’ais dit à plusieurs reprises à MégaChef que les estomacs des collègues devaient gargouiller famine et que leurs yeux injectés de sang allaient sortir de leurs orbites pour se plonger d’eux-mêmes dans l’alcool libérateur et expiatoire. Il m’a répondu que se faire attendre et désirer, c’était une bonne technique pour augmenter le bonheur des gens lorsque on apparaît enfin.
J’ai apprécié cette conversation avec lui. Mais ça m’a fait chier qu’il la prenne sur le temps de mon pot de départ. Le pot de départ, c’est un peu le quart d’heure de gloire final d’une incarnation professionnelle. On discute avec les gens, ils demandent ce qu’on va faire après, on peut se lâcher un peu (tout en respectant le minimum d’hypocrisie de sécurité, comme d’habitude). À la fin, on part dans une superbe gerbe d’étincelles pyrotechnique, laissant à ceux qui restent un bon gros sentiment de jalousie bien dégoulinant de cafardisme.
Il m’a volé une partie de ça et je le regrette un peu. (J’ai dit quelques paragraphes plus haut que j’étais parti sans la moindre once de regret, mais j’ai jamais dit que les propos de cet article seraient entièrement cohérents).
*)
Quelques petites phrases amusantes durant ce fameux dialogue d’entretien annuel final.
« Tu travaillais bien. Mais tu aurais pu être plus proactif. »
Ça, en dialogue corporatiste de Chef, ça veut dire : « On n’a jamais pris le temps de s’occuper de toi et de la façon dont tu aurais pu évoluer dans l’entreprise. Alors tu aurais dû faire tout ça par toi-même. »
Je trouve au contraire que j’ai été très proactif. Quand j’ai senti que ça puait dans cette boîte et que je continuais de ne pas être augmenté, j’ai cherché les entreprises alentours qui émettaient des signes d’embauche et j’ai fait une grande quantité de candidatures spontanées. La plupart on échouées, sauf une qui est magiquement réapparue après avoir marinée pendant un an, je l’ai alors proactivement saisie au vol.
Prévoir les choses à l’avance, agir par soi-même, puis attendre patiemment et sans s’énerver que le monde extérieur daigne fournir un retour sur les actions effectuées, tout en continuant de prévoir et d’agir : c’est du proactivisme.
« Tu aurais pu nous le dire avant que tu voulais partir, on t’aurais aidé. »
Ha ha ha ha ha ! Ha ha ha ! Pauvre naïf ! Quel idiot annoncerait qu’il veut partir alors qu’il n’est pas encore sûr de partir ?
Durant les grosses réunions corporate rassemblant toute l’entreprise, Storitel nous faisait des petits discours et des petites présentations. C’est durant ces moments intenses qu’il nous a appris que « on n’était pas dans le monde des bisounours ». Merci du tuyau.
Un ouvrier-codeur qui prévient qu’il va se barrer parce qu’il en a marre du bordel, du salaire de merde et des heures sup’, sans pour autant avoir de piste tangible pour se barrer, c’est pas un peu du bisounoursisme de patron ?
Ah ah, quel tanche géante ! J’en ris encore dans mon cerveau.
« Tu veux partir parce que tu en as assez de faire des heures supplémentaires ? Mais ce sera pareil dans la nouvelle boîte. Durant ta période d’essai tu vas devoir travailler un peu plus que la normale si tu veux qu’ils te gardent, et ensuite si tu baisses le rythme, ils vont pas comprendre pourquoi. »
Là j’ai répondu : « on verra bien ». Je voulais ajouter « ta gueule » et « de toutes façons ça pourra pas être pire », mais j’ai fait comme ce que je fais la plupart du temps dans ma vie : je l’ai bouclé et je me suis barré. Je ne suis qu’une ombre qui passe et je vous emmerde.
Sur ce, passons à autre chose.
Collègue Drache-code
Le pourrisseur officiel de toute librairie, toute classe, toute ligne de code ; passée, présente et à venir.
Je l’ai vu faire, il pisse le code dont il a besoin à l’endroit où est son curseur. Entre ses mains diaboliques, des fichiers sont devenus d’horribles monstres de Frankenstein de plusieurs milliers de lignes et traînant des lambeaux de code mort encore accrochés à leurs commentaires, des fonctions courtoises et prévisibles sont devenues folles à lier et se sont mises à courir frénétiquement sur les murs et au plafond. Une fois, on a appelé un collègue exorciste pour essayer de sauver l’un des projets qu’il avait massacré, le pauvre en a chié dans son froc en continu pendant plusieurs heures.
*)
Quand je codais, je mettais parfois des commentaires de TODO. Je trouvais ça plutôt correct. Ça permettait d’avancer assez vite et de ne pas trop exploser nos estimations de temps, tout en gardant une trace des trucs faits à l’arrache qu’il faudrait corriger après. (Comprendre : qu’on n’avait jamais le temps de corriger et pour lesquels on priait que ça nous pète pas à la gueule).
Un peu plus tard, j’ai fait découvrir à Collègue Drache-Code la notion de ‘dette technique’ : quelque chose qu’on décide de faire plus tard, ou jamais.
Du coup, il a voulu se la péter en réutilisant le mot que je venais de lui apprendre et m’a dit : « ne met plus de TODO dans le code, ça fait de la dette technique. Tu dois tout terminer bien comme il faut, du premier coup ».
Entendre ça de sa part, c’était très drôle.
Je précise aussi que certains TODO étaient là parce qu’il me manquait des éléments pour finaliser le bout de code (specs, config, données réelles, …), ça ne dépendait pas que de moi.
Bref, j’ai continué de coder en laissant des trucs à l’arrache, et j’écrivais mes TODO, non plus dans le code, mais dans un fichier à part que je gardais planqué dans un coin. Il ne s’est jamais aperçu de rien.
Et curieusement, sa remarque a été utile, car je me suis rendu compte que c’était plus intelligent de centraliser les TODO dans un même endroit. On les retrouve plus facilement, on peut les tagger, les classer, les prioriser. En fait c’est comme un bug tracker. Sauf que je ne pouvais pas mettre mes TODO dans notre bug tracker officiel, puisque Drache-Code les aurait vu et m’aurait dit : « Nia nia nia dette technique ».
*)
Comme vous l’avez constaté, j’aime citer des phrases amusantes de mes collègues et de mes chefs. Concernant Drache-Code, quoi de mieux que de citer ses morceaux de code ?
foreach (machin in aMachins) { try { // ici, Drache-Code utilise le machin. } catch { // Ça arrive parfois. On passe au suivant. } }
Il a vraiment écrit un bloc catch contenant uniquement le commentaire « Ça arrive parfois. On passe au suivant ». C’était génial, on était sûr que l’application plantait jamais. Par contre, comme le disait si bien Chef « » : « ça fait n’importe quoi ». Ah, on ne peut pas tout avoir.
Et au passage, ça plantait quand même, mais pas à cause de ce bout de code en particulier. On va pas chipoter pour ce genre de détail.
*)
Collègue Drache-Code a programmé des threads qui faisait tout péter à cause d’accès concurrents sur une même ressource. Erreur classique, ça m’est arrivé aussi. Sauf que moi je m’en suis aperçu au bout de quelques heures. Lui, ce sont les autres qui s’en sont aperçus pour lui au bout d’une semaine, parce qu’il testait jamais rien.
J’étais donc chargé de dépatouiller son bordel de threads. Il me dit, la bouche en cœur : « j’ai un DataSet qui est accédé par un peu tout le monde. Ça vient peut-être de là. Met-le en ‘volatile’ pour voir ».
Un DataSet en volatile ! Mais bien sûr ! Ça va certainement régler d’un seul coup tous nos problèmes d’accès concurrents !
Pour ceux qui connaissent pas, c’est du C#. Je vous explique rapidement.
Un ‘DataSet’, c’est comme une mini-base de données en mémoire RAM. On peut y mettre des tables assez volumineuses, faire des sélections, des tris, des filtres, des jointures entre tables, etc. Ça marche super bien, mais toutes les opérations effectuées dessus ne sont pas atomiques, puisque c’est un objet assez complexe.
Le mot-clé ‘volatile’ peut s’ajouter à la plupart des variables. Il permet de signaler au compilateur que celle-ci sera lue et modifiée par plusieurs threads, et qu’il ne faut donc pas optimiser le code machine qui la manipule sinon ça fait planter.
Le caractère volatile a une influence sur les actions effectuées sur la variable elle-même, mais ne change rien concernant les actions sur le bazar lié à la variable. Lorsque la variable est un type simple (entier, booléen, …), ça ne fait aucune différence. Un DataSet est une référence (un pointeur, pour les gens de la vieille école) vers un gros tas de trucs.
Les actions sur le pointeur en lui-même, on s’en branle. Il doit y avoir tout au plus une affectation initiale. Ce qu’il faut protéger des accès concurrents, c’est tout ce qu’on fait sur le DataSet après l’affectation du pointeur. Pour ça, je ne connais pas d’autres solutions que des locks de partout. Et va donc mettre des locks dans plusieurs milliers de lignes de code pissées aléatoirement ! Ça peut se faire, tout est possible, mais mes chefs me trouvaient des choses à faire qui étaient un peu plus tangibles et dont ils étaient un peu plus sûrs du résultat.
*)
Un truc dont je ne suis pas très fier car c’est quand même un peu de ma faute.
Dans Modeli-Morvax, on voulait ajouter une fonction de clusterisation de persona-pixels multi-dimensionnels. Bon, c’est quelque chose d’assez simple, on en trouve des algos plus ou moins tout fait sur stackoverflow.
Je chope un truc pas trop dégueux, je l’intègre à Modeli-Morvax et le teste sur des petits clusters. Ça marche. Je suis tout fier de moi et montre à Collègue Drache-Code comment ça fait trop joli à l’écran. Sur un ton vilipendieux, il m’interjecte : « tu plaisantes ? Je pensais que tu afficherais des clusters de personnalité entière ! »
Sur le coup, j’ai pas réalisé qu’il était vraiment colère. Mon cerveau a dû faire abstraction de son ton et de ses paroles. Je lui ais calmement répondu que c’était juste des données de tests, et que ça marcherait très bien avec plus de persona-pixels. Il s’est calmé.
Quelques semaines plus tard, les affectations de projet ayant changées (sinon c’est pas drôle), c’était à lui qu’incombait de continuer Modeli-Morvax. Il prend des gros clusters et les balance dans ma fonction. Ça marche pas. J’essaye de comprendre avec lui. Je re-teste la clusterisation de 3 pauvres persona-pixels sur sa version du code. Ça marche pas non plus, ça n’affiche rien. Il me dit que c’est pas grave et qu’il va recoder ça lui-même à partir d’autres morceaux glanés sur stackoverflow. Il y parvient sans problème.
Encore quelques semaines plus tard, les affectations de projet ayant encore changées, je devais afficher des clusters dans un écran tridimensionnel gélatineux. Je reprends son code, l’adapte à la gélatine, et voilà que ‘paf !’ ça se plante en une boucle infinie (on a failli solidifier la gélatine). J’ai repris mon code originel que j’ai vaguement réussi à faire fonctionner. Je parvenais à afficher un cluster sur deux.
Je crois que ça venait de la façon dont on stockait les coordonnées des persona-pixels. Lui les avait ordonné par couleur, moi par densité. Mais je n’ai jamais réussi à comprendre où était réellement le problème. Je ne pouvais pas afficher ses clusters avec ma fonction, il ne pouvait pas afficher les miens avec la sienne.
Mais je n’ai pas non plus complètement réussi à afficher des gros clusters avec ma propre fonction, et c’est pour ça que je ne suis pas très fier de moi.
Malgré tout, je me dis que ma façon de coder et de tester est, dans l’ensemble, plus sécurisée que la sienne. Lorsque ma fonction plantait, elle ne renvoyait rien. Lorsque sa fonction plantait, elle faisait une boucle infinie.
*)
Collègue Drache-Code crée une classe A contenant parmi ses variables membres une classe B, puis il ajoute dans la classe B des appels à des fonctions statiques définies dans la classe A. Ça fonctionne, ce n’est pas une dépendance circulaire (et encore moins une redondance cyclique, hahaha). Mais c’est un peu bizarre.
Ces fonctions statiques étaient assez génériques et méritaient d’être dans une classe statique C, qu’on aurait utilisé un peu partout. La façon dont il l’a fait montrait vraiment qu’il pissait son code là où y’avait son curseur.
*)
On avait un gentil stagiaire. Un mec plutôt dégourdi, qui avait par ailleurs marqué « musique electro » sur son CV (osef). Il a commencé par récupérer toute notre base de code. Son PC moulinait sa mère à la compiler, quand soudain, boum ! Vautrage comme une otarie bourrée à la bière !
Je ne suis pas plus choqué que ça. Une recompilation complète à partir de zéro, ça marche jamais du premier coup. Même en essayant plusieurs fois de suite, dans le but d’avoir plusieurs ‘premiers coups’.
Le stagiaire m’appelle à l’aide, j’investigue (comme on dit en parler moche), et m’aperçois que les projets qui ont foirés sont ceux sur lequel Drache-Code travaille. Celui-ci m’informe alors de sa joyeuse voix auto-validatrice : « ah oui, j’ai committé des trucs qui compilent pas ».
Je lui rétorque gentiment : « n’est-ce pas le mal absolu par rapport à ce qu’on avait décidé de nos processus de production ? ». Il me répond alors, toujours aussi auto-validatoirement : « je dois sauvegarder vraiment fréquemment car vu la vétusté de mon PC, j’ai peur que mon disque dur crame d’un moment à l’autre ».
Génial ! Du coup tu mets quoi dans tes commentaires de commit ? « Morceau de code qui ne se suffit pas à lui même et dont je ne peux faire un commentaire cohérent » ? Ah non suis-je bête, tu mets rien dans tes commentaires de commit.
La prochaine fois, chers ex-collègues de Zarma.pro, vous utiliserez git ou mercurial et vous ferez des branches, bandes de paltoquets. Vous aimez faire les bûcherons, vous devriez aimer les branches, non ?
*)
Et on va finir par des expressions rigolotes, pas en code, mais en langage naturel.
« L’application a besoin d’être stabilisée. »
Moui… Pour moi, une application est soit finie, soit pas finie, soit buggée. Mais ‘instable’, c’est vraiment bizarre. Ça sonne encore pire que ‘buggée’. On sent l’aléatoire, on sent le « ça fait n’importe quoi ».
On peut faire des conneries quand on code, j’en fais plein. Mais on ne fabrique jamais quelque chose ‘d’instable’. La seule fois où ça m’est arrivé, c’est parce que je dépendais d’éléments tierces et c’est eux qui étaient instables (notre fameux middleware tantrique de merde dont j’ai parlé dans l’article précédent).
« Ça pète de partout ! »
« Ah ouais, il se merde. » (En parlant d’un truc qu’il a codé et qui plantait).
De jolis cris de détresse. À nouveau, on sent la notion de hasard complet, le fait que tout ce qui arrive semble être complètement fortuit. C’est pas vraiment de sa faute, ce sont des éléments qu’il ne maîtrise pas et qui semblent être doté d’une volonté propre. Drache-Code créait des programmes qui finissaient par être vivant.
« Je ne fais pas de démo, parce que ça marche jamais au moment de la démo ».
Ça, je peux comprendre. Le fameux ‘effet démo’, je me le suis pris dans la gueule plusieurs fois, dont des fois où c’était entièrement de ma faute. Mais ce genre de phrase, il ne faut pas l’annoncer directement à un Client ! Qui plus est un Client potentiel qui veut savoir ce qu’on crée, et à qui justement on n’a encore jamais fait de démo.
To be continued
J’ai encore un package de chose à dire, et je mentionnerais un peu comment ça se passe dans la nouvelle boîte (toujours aussi bien pour l’instant, mais je reste prudent). À bientôt !