Thumbnail image

La Culture De La RĂ©silience À Travers Le DevOps, DevPO, Et DevQA

La rĂ©silience peut ĂȘtre dĂ©finie comme la capacitĂ© d’un systĂšme Ă  maintenir ou retrouver ses fonctions essentielles lorsqu’il est soumis Ă  une perturbation. — source : Les Greniers d’abondance

Front, back, data, PO, 
 La division du travail permet d’ĂȘtre expert sur un sujet mais sans vraiment tout maĂźtriser. A l’inverse on peut ĂȘtre un peu bon partout sans ĂȘtre expert nulle part, nos amis anglophones utilisent l’expression “jack of all trades, master of none”.

En s’attardant trop sur un sujet prĂ©cis on peut avoir du mal Ă  se comprendre et employer un vocabulaire commun dĂšs lors qu’on travaille en Ă©quipe, victime de l’effet bulle, et des malentendus et des aller-retours commencent avec le risque d’ĂȘtre le seul capable d’effectuer certaines opĂ©rations.

Est-ce que l’on a bien compris le besoin, ce qu’on devra tester, comment ce sera dĂ©ployĂ© ou l’architecture avant de commencer Ă  coder ?

Yet another article about DevOps

On entend parler de DevOps depuis 2010, une Ă©ternitĂ© dans le numĂ©rique, pourtant il reste un terme plutĂŽt flou sur lequel on a du mal Ă  mettre le doigt, Ă  mi-chemin entre utopie et fourre-tout. WikipĂ©dia le dĂ©finit comme une pratique technique pour l’unification entre dĂ©veloppement logiciel et l’administration des infrastructures. Donc, une histoire de collaboration avant une histoire d’orchestration de conteneurs. C’est bien sĂ»r cela qui vous vient Ă  l’esprit quand on commence Ă  parler DevOps, n’est ce pas ?

L’évolution de la recherche “DevOps” : https://trends.google.com/trends/explore?date=all&geo=PL&q=DevOps

Entre travail d’équipe et guerre d’égo

Certains disent que les mĂ©tiers du numĂ©rique c’est essentiellement travailler en Ă©quipe, j’en fais partie, et j’ai mis longtemps Ă  m’en rendre compte, Ă©bloui par une soif d’apprendre et de vouloir aller toujours plus loin, mais seul.

Il y a aussi la crainte de toucher Ă  quelque chose car ce n’est pas notre technologie de coeur, ou qu’elle ne servira Ă  rien sur notre CV. Alors que c’est grĂące Ă  ça que le produit final et l’équipe avanceraient. Bien entendu, si vous touchez Ă  du PHP 5.6 depuis plusieurs mois il est temps d’aller voir ailleurs.

Travailler en Ă©quipe, c’est aussi accepter de se montrer vulnĂ©rable aux autres en disant clairement que l’on ne sait pas tout faire. Quand les guerres d’ego et la politique font rage dans les entreprises et que nos salaires en dĂ©pendent, il est comprĂ©hensible de ne pas vouloir montrer que l’on est dĂ©butant sur telle technologie, qu’on a des points faibles et besoin de ses collĂšgues dans certaines situations pour maximiser ses chances d’avoir une promotion et ainsi augmenter son capital symbolique.

DevOps — ou se concentrer sur le collectif

Dans une entreprise, nous sommes de la mĂȘme Ă©quipe, pourtant il arrive que l’on se renvoie les erreurs d’un camp Ă  l’autre “c’est aux ops de faire ça”, “c_’est la faute aux devs si c’est bugguĂ©_”, “le product owner a mal dĂ©fini les specs”, ou mon prĂ©fĂ©ré : le simple “ça marche pas.” sans contexte et sans que la personne ait la moindre idĂ©e du pourquoi.

Quand ces phrases peuvent s’échanger entre les Ă©quipes, il est urgent pour les dĂ©cideurs de l’entreprise de chercher Ă  corriger le tir. En cherchant l’origine de la culture du blĂąme, on pourrait citer les entretiens individuels annuels, oĂč l’on se fera reprocher certaines erreurs si on ne dĂ©place pas la responsabilitĂ© vers d’autres, lĂ  oĂč des entretiens collectifs auraient beaucoup plus de sens pour amener de la solidaritĂ© dans le monde de l’entreprise et rĂ©duire l’individualisme nĂ©gatif. On parle aussi d’augmentation collective pour que ça marche 😉

La compartimentation dans le travail dĂ©termine l’affaiblissement du sens de la solidaritĂ©, lequel dĂ©termine l’affaiblissement du sens de la responsabilité — Edgar Morin

Ces entretiens collectifs permettraient d’assumer enfin que notre travail, notre projet, est avant tout un travail d’équipe, oĂč chacun apporte. Cela encouragerait aussi une culture du partage et de la confiance, oĂč chacun souhaite que les autres progressent avant de vouloir briller seul.

Un outil comme git est souvent dĂ©tournĂ© pour devenir l’outil parfait pour reporter la faute sur quelqu’un d’autre 😣 (et je plaide coupable de l’avoir fait
)

Apprendre Ă  ĂȘtre polyvalent

Quand la responsabilitĂ© passe de l’individu au collectif, le bien-ĂȘtre et la qualitĂ© du produit final s’amĂ©liorent. Pour cela, chaque personne doit ĂȘtre responsabilisĂ©e de A Ă  Z sur la livraison d’un produit, cela va du recueil des besoins au monitoring de l’application une fois livrĂ©e. Et la philosophie qu’on connaĂźt le mieux est DevOps, mais ce concept peut aisĂ©ment ĂȘtre dĂ©clinĂ© en DevPO, DevQA pour reprĂ©senter la polyvalence et la nĂ©cessitĂ© de collaboration de nos mĂ©tiers.

“C’est aux DevOps de faire ça”

DevOps c’est avant tout casser les silos de l’entreprise : on a beau crĂ©er des postes DevOps pour changer les habitudes de notre industrie et mettre de l’agile Ă  toutes les sauces, les silos de spĂ©cialitĂ© existent toujours. Certains postes avec l’intitulĂ© “DevOps” ressemblent Ă©normĂ©ment aux administrateurs systĂšmes Ă  la seule diffĂ©rence que les dĂ©veloppeurs disent maintenant “C’est aux DevOps de faire ça” plutĂŽt que “C’est aux administrateurs systĂšmes de faire ça” : belle Ă©volution des mentalitĂ©s 😐

Il est autant du devoir du dĂ©veloppeur que de l’ops, de pouvoir automatiser son dĂ©ploiement tout en garantissant la qualitĂ© de son application, sa surveillance et la maĂźtrise des coĂ»ts d’infrastructure.

Hors de question d’utiliser une instance trop puissante (💾), ou pas assez (đŸ’„), car ce n’est pas notre domaine d’expertise, analyser le CPU ou la mĂ©moire d’une instance est Ă  la portĂ©e de tous. Interdit Ă©galement de s’apercevoir que l’application est restĂ©e hors service pendant plusieurs jours sans avoir reçu d’alerte automatique par email ou par Slack.

DevPO, DevQA, DevOps— Revendiquer sa polyvalence

Etonnamment on parle surtout de DevOps depuis 10 ans, Ă  croire que la norme du devĂ©loppeur est de coder, de s’occuper de l’infrastructure, et de suivre les instructions des tickets Jira dĂ©finis par les Product Owner — une sorte d’ouvrier moderne. De mon expĂ©rience, c’est lorsque je comprends Ă  100% le besoin que je fais des projets fabuleux. L’avenir du mĂ©tier de dĂ©veloppeur est dans l’unification de tous les mĂ©tiers du logiciel : du recueil des besoins jusqu’au monitoring. La gestion de projet ne doit ĂȘtre rĂ©servĂ©e Ă  des personnes ‘“retraitĂ©es du code”.

J’ai actuellement une casquette d’expert Kafka, et je dois avouer que si je ne lis pas la documentation tous les 6 mois je deviens aussi novice que le premier des dĂ©butants. On peut en conclure qu’au bout de 5 ans sans coder on peut difficilement comprendre la technique, et le dialogue inter-Ă©quipe devient forcĂ©ment problĂ©matique, lĂ  oĂč la communication est la clĂ© pour le succĂšs des projets…

Pour le succĂšs de ces derniers, il faut que les dĂ©veloppeurs s’approprient le recueil des besoins, la gestion de projet, pour sortir de leur rĂŽle de col bleu et pour amĂ©liorer la perception des dĂ©veloppeurs en France.

Sur ce sujet, Emilien Pecoul rĂ©sume bien la situation avec cette phrase dans son article “La France gĂąche son talent numĂ©rique”

Tel analyste financier ne comprenant pas pourquoi les États Unis crĂ©aient des GAFAM pendant que nous crĂ©ons des CapGemini et des Atos.

Toyotisme — un Ă©quilibre à trouver

NĂ©anmoins, en allant trop loin dans ce toyotisme, cet auto contrĂŽle poussĂ© pour ainsi dire, on risque de se culpabiliser de ne pas aller assez loin dans la dĂ©marche, de ne pas ĂȘtre excellent partout, et de finir par s’épuiser au travail : il n’y a pas meilleur exploiteur que soi-mĂȘme.

Appliquer tous ces principes de tests, communication, surveillance, l’infrastructure comme code dans un contexte collectif peut paraĂźtre clairement intimidant, surtout car on doit livrer rapidement trĂšs souvent sans que toutes les problĂ©matiques aient bien Ă©tĂ© pesĂ©es — la culture du sprint dans laquelle nous sommes privilĂ©gie la quantitĂ© plutĂŽt que la qualitĂ©. Devenir expĂ©rimentĂ©.e dans son mĂ©tier veut dire savoir ralentir les cadences, recentrer les prioritĂ©s techniques, prendre du temps pour l’architecture technique de l’application, la partager, expliquer les nuances, changer les rituels qui ne marchent plus, mettre en place les tests, l’intĂ©gration et les dĂ©ploiements continus, pour ensuite Ă©conomiser du temps de façon exponentiel tout le long de la vie de l’application pour le consacrer Ă  l’amĂ©lioration du projet et du service client.

Facteur vĂ©lo — Le danger de la personne clĂ©

Si vous avez dĂ©jĂ  passĂ© plus d’une heure sur un projet avec moi, il se peut — et j’en suis dĂ©solé — que j’ai pu Ă©voquer 3 fois le facteur vĂ©lo, une dĂ©clinaison du facteur d’autobus. Si vous n’avez pas la chance de le connaĂźtre il s’explique par le fait qu’avec l’absence d’infrastructure cyclable et une sociĂ©tĂ© accro Ă  la voiture, une personne derriĂšre son volant peut me blesser, moi sur mon vĂ©lo. Que se passera-t-il si je suis la personne clĂ© d’un projet ? Beaucoup, beaucoup de retard. A moins que l’equipe ait dĂšs le dĂ©but du projet pensĂ© Ă  partager, automatiser les tests, documenter entre plusieurs personnes. Avoir ce principe en tĂȘte lorsqu’on est sur un projet permet de partir en vacances serein, d’avoir moins de problĂšmes en astreintes, car nous avons confiance en nos collĂšgues pour gĂ©rer toutes les situations. Cela construit une rĂ©elle coopĂ©ration, bref je ne peux que vous le conseiller— ainsi que de rouler Ă  vĂ©lo.

Une culture de la résilience

Quand une culture de la rĂ©silience basĂ©e sur l’automatisation et le partage est crĂ©Ă©e, les erreurs humaines sont rĂ©duites et l’entraide et la confiance commencent Ă  ĂȘtre naturelles. Cette culture permet d’assurer une meilleure disponibilitĂ© de la plateforme pour rĂ©pondre au service attendu par les clients et au meilleur coĂ»t.

Dans ces conditions, l’accueil des nouveaux est aussi facilité : des documentations Ă  jour, moins de procĂ©dures orales grĂące Ă  l’automatisation et des outils comme Docker et Docker Compose pour automatiser le lancement des stacks.

La culture de la résilience, ou celle du roseau (credit unsplash)

Les reverts de l’excellence technique

Les capacitĂ©s Ă  s’entraider peuvent ĂȘtre nĂ©gligĂ©es au prix d’expertises techniques et d’exploits individuels apprĂ©ciĂ©s par certains chefs d’entreprises responsables de nos primes et de nos augmentations. Il est souvent plus facile de remarquer les exploits d’une personne plutĂŽt que quelqu’un qui met en avant l’équipe. Avec ceci, c’est la culture du Stakhanovisme qui s’installe, Ă  base de dĂ©veloppeurs rockstars.

Ces personnes peuvent plomber l’ambiance et la productivitĂ© d’une Ă©quipe Ă  trop vouloir briller seules sans se soucier de qui passera derriĂšre elles. Un manque de respect peut aussi apparaĂźtre envers les membres de l’équipe en allant jusqu’au harcĂšlement : quand on est le seul Ă  connaĂźtre comment fonctionne un projet on se sent vite protĂ©gĂ© par un statut d’intouchable.

Pourtant, l’entraide est un facteur d’innovation chez le vivant dans son Ă©volution depuis 3.8 milliards d’annĂ©es, la nature nous apprend que seuls les plus coopĂ©ratifs survivent, mise Ă  part quelques exceptions comme les Tardigrade — un nom alternatif pour les dĂ©veloppeurs rockstars ?

Bien sĂ»r, il faut savoir trouver l’équilibre entre performances individuelles et collectives, il y aura toujours des meneurs dans les Ă©quipes — qui doivent apprendre Ă  parfois s’effacer pour voir les autres Ă©voluer — et il faut aussi savoir se remettre, ou l’organisation, en question si on passe plusieurs longues rĂ©unions ou rituels Ă  ĂȘtre passif.

Les directeurs et managers qui suivent ce principe rendent leur entreprise rĂ©siliente dans les pires crises et s’assurent de longues carriĂšres ou du moins se construisent un rĂ©seau fiable de personnes qui souhaitent travailler avec elles.

Le dilemme du prisonnier — ou, encore une bonne raison de travailler de façon coopĂ©rative

Pour nous aider Ă  enfoncer le clou sur la collaboration, on peut citer les sciences sociales avec la thĂ©orie des jeux et le dilemme du prisonnier. Ce dilemme, citĂ© dans plus de 5 000 articles scientifiques, nous explique que des acteurs en concurrence sur une longue pĂ©riode, nos chers Stakhanovs — ou Tardigrades, choisissent toujours la pire solution, alors que ceux collaboratifs arrivent Ă  la meilleure. En bref, le collectif est plus efficace que l’individualisme.

Dire cela peut paraĂźtre naĂŻf, simpliste voir utopiste, mais on a tendance Ă  oublier Ă  quel point notre sociĂ©tĂ© est coopĂ©rative Ă  travers le bĂ©nĂ©volat, le don, et tous les gestes gratuits du quotidien. MĂȘme dans des temps extrĂȘmement durs, la guerre de tranchĂ©es 14–18 a mis en lumiĂšre la coopĂ©ration. Certains soldats ennemis appliquaient le principe de “laissez vivre pour vivre”, notamment Ă  NoĂ«l ou lors des ravitaillements.

La coopĂ©ration devrait ĂȘtre Ă  notre portĂ©e nous qui sommes tranquillement installĂ©s Ă  nos bureaux.

Pour mettre en pratique ce principe vous pouvez jouer à la théorie des jeux ici (durée 30 minutes) : https://ncase.me/trust/

Par oĂč on commence ?

ReconnaĂźtre la prĂ©sence de silos de dĂ©veloppeurs, testeurs, ops, product owner
 pour mieux les casser est la premiĂšre Ă©tape pour crĂ©er une culture de collaboration et de la rĂ©silience. Demander Ă  l’autre qu’est ce qu’il trouve compliquĂ© ou mystĂ©rieux dans notre Ă©quipe, lui expliquer de la maniĂšre que l’on aurait aimĂ© entendre lorsqu’on a commencĂ© notre spĂ©cialitĂ©, et citer les sources qui nous ont aidĂ©es Ă  y voir plus clair.

J’aime revendiquer que mes compĂ©tences ont Ă©tĂ© acquises grĂące Ă  d’autres, et que je suis redevable de transmettre leur savoir. Je ne serais pas le mĂȘme ingĂ©nieur si je n’avais pas connu Martin Kleppman et ses travaux, Jepsen, certains collĂšgues que j’ai cĂŽtoyĂ©s ou que je cĂŽtoie toujours, ou tant d’anonymes sur Stackoverflow et ailleurs. La citation qui suit illustre tout cela:

Des nains sur des Ă©paules de gĂ©ants — Bernard de Chartres

La seconde Ă©tape doit venir des experts et de la direction de l’entreprise, ces personnes doivent montrer l’exemple, communiquer et dire qu’ils ne savent pas tout. En posant des questions sur des channels publiques ou en rĂ©union, en rĂ©pondant aux questions en citant un maximum de sources pour montrer leurs mĂ©thodes de recherche, et en indiquant les endroits dans le code oĂč la comprĂ©hension est difficile pour eux. Il faut aussi pousser pour que le potentiel de chacun puisse grandir en responsabilisant du recueil des besoins au monitoring, en s’effaçant, en laissant l’autre faire, mais ĂȘtre lĂ  en soutien si un blocage perdure.

Dans un Ă©change intellectuel, celui qui donne ne perd rien et celui qui reçoit prend mais ne dĂ©possĂšde pas son interlocuteur. — Bernard Maris

La troisiÚme étape dépendra de votre maturité DevOps, qui faura faire évoluer vers du DevPO et DevQA pour avoir de la polyvalence dans les équipes.

Donnant, donnant

Il sera considĂ©rable pour les experts, surtout en pĂ©riode de crise, de ne pas Ă  avoir Ă  porter seuls le poids de leur spĂ©cialitĂ© en pouvant compter sur d’autres. Ces autres qui Ă©taient peut-ĂȘtre totalement novices sur leur techno 3 mois avant.

Du cĂŽtĂ© de l’équipe, elle pourra devenir rĂ©siliente, elle saura demander de l’aide plus facilement, le savoir sera mieux diffusĂ©, la rivalitĂ© et le stress seront rĂ©duits ainsi que les futures erreurs liĂ©es Ă  celui-ci, et le plus important notre bien-ĂȘtre au travail sera amĂ©liorĂ©.

Enfin, la derniĂšre Ă©tape dĂ©pendra de votre culture d’entreprise et de votre vision de l’agilitĂ©, mais il n’y aura jamais de recettes miracles d’organisation. Cependant, le bien-ĂȘtre, avec l’instauration de la semaine de 4 jours par exemple, semble ĂȘtre un excellent levier Ă  utiliser en tant que dĂ©cideur pour augmenter la productivitĂ© de l’entreprise.