Voilà le récit d'une expérience qui m'a forgé en tant qu'agiliste : j'ai fait partie d'une équipe "high performance" - 🏎️ une vraie 🏎️ !
Il y a de ça quelques années, j'ai rejoint une écurie de F1 perdue dans la cambrousse, plus particulièrement à Enstone. Pour ceux qui ont regardé Drive to Survive, vous aurez deviné qu'il s'agit de l'actuel emplacement d'Alpine F1. A l'époque nous avions Kimi R. et Romain G. comme pilote et l'écurie montait sur le podium plusieurs fois dans la saison. hashtagexcitingtimes
Me voilà à débarquer là -bas du haut de ma petite trentaine en tant que Dévelopeur .NET au sein de cette belle équipe. Mon job? Rejoindre une Scrum team pour les aider dans la création d'une application très audacieuse à destination de toute l'écurie.
Du haut de mes 5+ années d'expérience de dev j'étais clairement au top de ma forme et convaincu de faire partie de l'élite en arrivant là bas ! J'avais vu du gros programme cycle en V rouleau compresseur et j'y avais survécu 🫡
J'étais fraichement certifié à Scrum, avec très peu d'expérience dessus, et c'est ce qui m'avait permis de décrocher le job.
Lundi matin 8h30 *sharp* à l'usine, pour démarrer la journée par un Daily Scrum avec mes nouveaux collègues. Je fais connaissance du contexte et de l'équipe. Je suis entouré de trois developpeurs (un Anglais, un Espagnol et un Indien) et trois profils de testeurs/BA (deux Anglais et une Indienne) et nous sommes épaulé par un architecte. Tou.te.s bien plus senior que moi.
Notre PO? Rien de moins que l'ex ingénieur de course de Fernando Alonso champion du monde et quelques mois plus tard nous avions le responsable de la performance. Des ingénieurs, des vrais, avec des CVs phénoménaux.
Notre Product Goal, travailler d'arrache-pied pour livrer une application permettant de faire le setup complet de la voiture pour le premier Grand Prix de la saison en Australie en 2014. 🤯
Droit à l'erreur : zéro. Si l'application ne fonctionne pas, la F1 ne démarre pas. La pression n'était pas seulement au comptoir du Pub, mais clairement aussi sur nos épaules. Cela promettait un hiver long et agité. Plus de 350 personnes, ingénieurs, mécaniciens, l'équipe du simulateur, ceux de la soufflerie, ceux du banc de test, auraient besoin de cette application pour contribuer au setup de cette voiture composée de près de 15 000 pièces.
Tout ça avec seulement 6 personnes ? 🤔 🤔
Craftsmanship avant tout
Développer une application client lourd pour autant de personnes en si peu de temps, avec seulement 4 développeurs et 3 testeurs, s’annonçait comme un véritable défi. Quand je suis arrivé, un POC existait déjà, et c'était à nous de transformer ce concept en réalité, avec toute la complexité que cela impliquait. Et comme vous le savez, beaucoup de concepts ne deviennent jamais des produits… 🫥
Le premier choc pour moi, en tant que superstar dev (souvenez-vous 🤭🤭), a été de réaliser qu’avec ces contraintes et ces enjeux, nous ne pouvions absolument pas négliger la qualité. Moi qui m’étais habitué aux terribles abaques de l’ancien monde – où 30% de tests unitaires semblaient largement suffisants parce qu’il fallait aller viiiiiite – je me suis pris un mur. 🧱
Mes collègues m’ont pris la tête pendant des heures et m’ont accompagné jusqu’à ce que j’accepte l’inacceptable : 100% de notre code devait être couvert par des tests unitaires et d’intégration. Et ce n’était pas négociable. J’avais l’impression de patauger dans des tests au lieu d’être VRAIMENT productif. L’horreur, la douleur. 😖😩
En quelques semaines, nous avions déjà ajouté des milliers de lignes de code et plusieurs centaines de tests. La base grossissait à vue d'œil. Mais à un moment, il a fallu casser, refondre, améliorer, corriger. Et c’est là que l’illumination s’est produite : d’abord en voyant une centaine de tests virer au rouge écarlate sur mon écran 🔴🔴🔴 🥵. Puis en réalisant que ces tests étaient mon filet de sécurité. En les corrigeant, je savais non seulement que mon code tiendrait le choc, mais aussi que je pouvais avancer sans craindre d’avoir tout cassé ailleurs.
Nous étions littéralement en escalade sur une falaise quasi verticale, mais assurés en permanence par notre intégration continue. 😰
Et je ne compte pas le nombre de fois où nous nous sommes retrouvés avec des tests en vrac, passant des heures à les corriger. Mais une fois le job done, on pouvait rentrer chez nous sereins, sachant que les collègues pourraient continuer d’avancer sans crainte.
Sans cette exigence collective, jamais l’application n’aurait vu le jour. Personne ne nous l’avait imposée en dehors de notre équipe Scrum. Mais l’expérience de mes collègues, combinée au niveau d’exigence d’une écurie de F1, nous a naturellement menés vers cette discipline. La culture de l’usine transpirait dans notre code ! Et je ne remercierai jamais assez mes collègues de m’avoir pourri… enfin, ouvert les yeux et appris à produire du code de qualité. 🙏
🏎️🏎️ High Performance Scrum 🏎️ 🏎️
Souvenez-vous, nous étions 7 - pas mercenaires - dans l'équipe. Voilà quelques détails de notre manière d'implémenter Scrum dans ce contexte si particulier.
Tout d'abord, nos bureaux étaient tous proches les uns des autres, formant une ellipse, ce qui nous permettait de facilement nous retourner pour discuter avec un collègue. Cela peut sembler anodin mais rien que cette disposition nous à permis de vraiment faciliter nos échanges et discussions. Le simple fait de pouvoir se retourner pour aider, questionner un collègue accélérait les choses. Et quelque part cet agencement et cette promiscuité nous aidait à être "in the zone", focus dans nos flows tous ensemble au même moment.
Le pairing, et même le travail en groupe (sans parler de Mob) était très régulier, souvent impromptu. Cela nous permettait d'avancer vite, surtout sur des sujets vraiments complexes. Le simple fait de se retrouver avec un QA à côté de soi pour challenger immédiatement une fonctionnalité, un bout de code, un test était d'une valeur inouie. Beaucoup d'équipes sous estiment la puissance du feedback instantané !
Nous avions un board, un tableau à trois colonnes très simple : To Do, In Progress, Done. Nous avions un outil pour gérer nos Product Backlog Items, (Azure DevOps) et répliquer ce board, mais rien de plus. Du très basique, pas de custo. Un PBI = une évolution, une fonctionnalité à livrer dans le sprint. Et chaque jour nous passions 10 à 15min en Daily Scrum pour discuter des nos items ensemble. L'aspect magique était qu'avec seulement un post it représentant un PBI sur notre board, et parce que nous communiquions en continu, nous savions tous exactement ce qu'il se passait sur chaque élément, qui était en charge de quoi et dans quelle étape précise. Une vraie symbiose. Les items traversaient le board d'heure en heure et le Daily ne nous servait finalement que de point de discussions et de remontée d'alertes.
Autre aspect vraiment puissant de notre implémentation, le PO n'écrivait pas nos PBIs. Il était bien trop occupés à imaginer les prochains setups, pièces, paramétrages à venir pour gagner de la performance sur la voiture. Nous avions des contacts brefs mais réguliers, principalement pour de l'alignement sur des objectifs plus que sur des acceptances criterias précis. C'était à l'équipe de convertir ces objectifs en fonctionnalités. Tous ensemble, nous étions responsables du PB et nous l'alimentions. Les bénéfices ? Chacun connaissait les items, peu de surprise pendant les sprints, quand un problème survenait, nous connaissions tous le sujet... Nous étions capables de prendre des décisions rapidement, permettant un gain de temps considérable. C'est au travers de la contrainte de ne pas avoir notre PO assis à côté de nous que nous avons transcendé une implémentation "mécanique" de Scrum.
Aussi, nous maitrisions la qualité et notre notion de Done de bout en bout. En équipe, avec nos outils, nos tests automatisés, pipelines et nos scénarios de tests exploratoires nous avions tout le nécessaire pour livrer et valider l'incrément. Cela signifiait que nous étions parfaitement capable de livrer une mise à jour de l'application dès qu'un élément du sprint backlog était done, sans aval du Product Owner. Nous étions en pur continuous delivery & deployment. Et le fait d'avoir nos harnais de sécurité sous forme de tests automatisés et de tests exploratoires poussés permettait de livrer de la haute qualité.
Pour résumer, Scrum n'était qu'une plateforme nous permettant d'exprimer tout notre potentiel.
Anecdotes
▪️ Nous travaillions à "l'usine", nous devions tous respecter les horaires de début et fin de journée (8h30-17h30) et pointer. Les cols bleus avaient une tenue complète, les cols blancs devaient porter une chemise à logo Lotus F1.
▪️L'usine était entourée de champs et de prairies. Nos voisins direct? Des moutons. Nous avions des sentiers pour profiter d'une pause en plein air après le déjeuner.
▪️Nos bureaux surplombaient les "baies" de construction des F1. Il y avait souvent au moins une F1. L'équipe revenait souvent entre les GPs pour reconstruire intégralement les F1.
▪️Le "crew" s'entrainait aux pit stops l'hiver sous nos fenêtres, et dans ces moments là nous n'avions pas d'autre choix que de mettre un casque ou des écouteurs tellement le bruit des pistolets pneumatiques pour serrer et desserer les écrous était fort !
▪️L'usine était équipée d'imprimantes 3D extremement sophistiquées, d'un simulateur F1, d'une soufflerie, de bancs de tests moteurs et chassis, fours autoclaves, machines outils... Tout ce qu'il fallait pour produire, tester une grande partie des nombreuses pièces de la voiture.
▪️Les vendredi de GPs, et souvent dès le jeudi, nous avions un flux vidéo direct vers les garages ou nous pouvions voir le montage et la préparation des voitures.
▪️La fibre de carbone était réalisée sur place, tout comme le volant !
▪️A la machine à café vous pouviez croiser Nicolas Prost ou Romain Grosjean. Ou encore le jeune Esteban Ocon qui faisait ses débuts en F1.
▪️Nous avions une salle de sport sur place, avec tout l'équipement sportif le plus à jour grâce à nos sponsors.
▪️De retour de weekends de GP, nous avions un débrief pour tous de la part du General Manager. Et en bonus, après des podiums, nous pouvions prendre en main les trophés récoltés par l'équipe!
Vous avez aimé mon article? Suivez-moi et connectons-nous ! Je poste aussi sur linkedin régulièrement.
Credits photo: rmsothebys