Thomas Goldstein
Oct 1 · 8 min read

Les 16 et 17 mai dernier, mes collègues et moi étions à la NewCrafts 2019. Alors oui, je sais, on est maintenant en octobre, et vous vous dites peut-être que j’ai procrastiné avant d’écrire ce petit billet. Mais que nenni, ce n’est pas du tout mon genre, voyons. J’attendais simplement que les vidéos des talks soient mises à disposition afin de pouvoir saupoudrer mon article de liens ici et là. Comment ça, c’est pas crédible ?

Mario essayant de coder sous Paint avec sa souris

Par contre, ma mémoire n’étant plus ce qu’elle était, il m’est difficile de me souvenir des talks auxquels j’ai assisté il y a quelques mois. Tout ce dont je me rappelle, c’est qu’à la NewCrafts, j’ai joué à Super Mario Bros sur la NES Mini. Oui, ça me revient, maintenant… il s’agissait d’un concours au stand de la Société Générale. On avait 3 minutes pour faire le plus haut score, avec des prix à gagner pour les meilleurs participants, du troisième au premier : un Arduino, une Super NES Mini et une Switch. Pour ma part, entre ça et un énième quizz de programmation reposant sur des détails d’implémentation d’une version spécifique de framework, le choix était vite fait.

Inutile de présenter Super Mario Bros, qui est l’un des jeux vidéo les plus populaires de tous les temps. D’un côté, Mario, c’est pour moi un peu comme C# : c’est un ami de longue date, ma zone de confort. De l’autre côté, ce concours, c’est un nouvel exercice pour moi, un nouveau challenge à surmonter. J’ai beau avoir fini le premier Super Mario des dizaines de fois, je n’avais jamais vraiment prêté attention au score. Cela nécessite d’aborder les choses sous un nouveau prisme, et de tout réapprendre de zéro. Il m’était donc nécessaire d’adopter une stratégie pour atteindre mon but et ramener la Switch à la maison. Et si la solution se trouvait dans les différents talks de la NewCrafts ?

Test && Commit || Revert

La première idée qui m’est venue à l’esprit était d’adopter le Test && Commit || Revert (TCR) que Xavier Detant nous a exposé. À l’instar du Test-Driven Development (TDD), on écrit un test puis on implémente. La différence, c’est qu’avec le TCR, on ne commit que si le test passe, sinon on revert le tout (implémentation + test). C’est une approche radicale qui force le développeur à penser différemment, à faire au plus simple et sûr, sous peine de perdre son travail (… je veux dire, le travail qu’il a effectué, pas son emploi).

TCR vs TDD (source : test && commit || revert par Kent Beck)

Appliqué tant bien que mal à Mario, cela reviendrait à procéder à une multitudes de courtes expérimentations dans l’optique de maximiser le score, et de revenir en arrière si ça ne se passe pas comme prévu. Par exemple, tester un chemin particulier ou attaquer les ennemis d’une certaine façon. Si cela donne des résultats concluants (bon ratio score / temps), on continue. Sinon, on recommence. Cependant, je me suis vite rendu compte que je ne pouvais pas appliquer ce principe au concours de Mario, car deux prérequis n’étaient pas remplis :

  • La suite de tests est censée pouvoir s’exécuter quasiment instantanément afin que le TCR puisse être applicable. Ce n’est pas le cas ici, chaque test prenant plusieurs minutes vu qu’il faudrait recommencer depuis le début (évidemment, pas de savestates dans le cadre d’un concours).
  • Je n’avais pas la possibilité de réessayer autant de fois que je voulais. Bien qu’il était permis à chaque participant de tenter leur chance plusieurs fois, cela avait des limites. Les gens faisaient la queue pour participer au concours, et il faut savoir lâcher la manette de temps en temps, bienséance oblige.

Merci pour rien, TCR.

Crafting Compassionate Code

Comme on vient de le voir, l’excès de rigueur et de rigidité ne donne pas forcément les résultats escomptés. Et si, au contraire, on ouvrait les bras au droit à l’erreur ?

Coder en faisait preuve de compassion et d’éthique

C’est une des idées avancées par April Wensel, qui nous a exposé l’importance de la compassion dans notre métier. Au lieu de chercher le confort dans la technique (tout ce qu’on appelle les “hard skills”), l’idée est de mettre au premier plan l’humain (ce qui fait partie des “soft skills”, appellation quelque peu dépréciative à laquelle April préfère le terme de “catalytic skills”). En effet, quand un projet échoue, ce n’est généralement pas pour des raisons techniques, mais humaines. Ainsi, il convient de se défaire de la culture toxique du geek des cavernes, et de la RTFM attitude. Au contraire, il est primordial de faire preuve d’empathie envers les autres (collègues, utilisateurs, clients…), mais aussi envers soi-même.

Adhérant pleinement aux idées et valeurs prônées par April, je me devais de les mettre en application, le jour-même, à notre petit concours. En particulier, comment faire preuve d’empathie envers les autres participants, mais aussi envers moi-même ? Les réponses que j’ai trouvées à ces deux questions :

  • Après avoir tenté ma chance 3–4 fois la veille, je me suis dit qu’il était nécessaire de me modérer afin de ne pas frustrer les organisateurs ni les participants (ne pas trop try hard, quoi, comme disent les jeunes). Concrètement, je me suis fixé comme objectif de ne tenter ma chance qu’une seule fois pour la deuxième et dernière journée.
  • M’accorder le droit à l’erreur. Que ce soit en travaillant ou en jouant, tout le monde commet des erreurs. Après une bourde à Mario, on peut être tenté d’abandonner pour recommencer, mais chercher à atteindre la perfection serait contreproductif. Le fait d’accepter mes échecs et de persévérer malgré tout me permet d’aborder chaque inévitable erreur avec davantage de sérénité, en étant moins déstabilisé.
Mario a trop essayé d’optimiser, et sa cupidité l’a mené au burnout

Comme souvent, ce sont les talks les moins techniques qui m’intéressent le plus. Bref, merci April !

Culture as a Key Factor

Passons à un autre talk qui a retenu mon attention, celui d’Alberto Brandolini. Je ne vais pas tenter de résumer tout ce qu’il a dit (pour ça, mieux vaut regarder directement la vidéo), mais juste ce que j’en ai retenu. Entre autres, notre ami Alberto a souligné l’importance de la culture dans le développement logiciel, mais aussi dans la vie de tous les jours.

Bon, quand on lit juste ce slide, c’est pas forcément très parlant…

Alberto nous a partagé une petite anecdote amusante sur les bus. Pas les service bus, non, mais les bus avec des roues et des gens dedans. En Italie, dont il est originaire, les gens n’ont pas pour habitude de payer leur ticket de bus. Pourtant, dans d’autres pays, les gens paient naturellement leur ticket. Pourquoi cette différence ? On pourrait se dire que les Italiens sont juste comme ça, que c’est culturel, et puis voilà. Mais justement, cette culture a été façonnée par un contexte, un environnement.

Regardons de plus près le fonctionnement des bus en Italie. Premièrement, les tickets ne sont disponibles qu’aux guichets et en machines. Ensuite, on peut monter dans le bus par toutes les portes. Aussi, il est facile de monter en se fondant dans la foule, et au final on sait pas trop qui a composté son ticket ou pas, et peut-être que vous venez de prendre un autre bus et que vous avez donc déjà composté votre ticket, qui sait ? Mises bout à bout, ces circonstances, qui peuvent paraître anodines, font qu’on se sent presque invité à frauder.

Super Mario Bus. Source de la photo et localité inconnues, désolé.

Dans les pays voisins de l’Italie, la donne change. Tout d’abord, la vente de tickets est disponible au sein du bus. La montée, elle, s’effectue à un point d’entrée unique, à l’avant du bus. De fait, on passe forcément devant le chauffeur (voire carrément devant un guichetier, comme à Amsterdam). De plus, une pression sociale est exercée sur ceux qui ne paient pas, les voyageurs ayant tendance à dévisager les éventuels étourdis ou filous ayant manqué de composter leurs tickets, surtout si ceux-ci sont interpellés par le chauffeur ou toute autre personne d’autorité.

Cela démontre bien que le comportement des gens n’est pas tant lié à la culture qu’au système qui l’entoure, et qui a donné forme à cette culture. Et c’est la même chose en entreprise, et aussi dans notre petit concours de Mario. Quel rapport, me direz-vous ? Eh bien, les conditions du concours constituent le fameux “système” qui a façonné une culture commune aux participants. Comme je le disais, la règle était d’obtenir le plus haut score en trois minutes. Initialement, les joueurs tâtonnaient, expérimentaient pour voir ce qui fonctionnait ou pas. Et progressivement, ceux qui ont persévéré ont fini par adopter les mêmes habitudes, les mêmes chemins, les mêmes réflexes, et ce sans même observer ou imiter les autres participants. La règle du concours qui pouvait sembler innocente a fait converger le comportement de chaque joueur.

De manière générale, on voit bien que le système mis en place a une influence sur les gens, et qu’ainsi, il est possible de les encourager à adopter des comportements vertueux. Le penchant ludique de cette approche est la gamification. À l’inverse, un système toxique fera ressortir le pire de chacun.

Une tentative (ratée) de système vertueux (jeu League of Legends)

And the winner is…

Bon, j’avoue tout, j’ai un peu menti. C’est pas vraiment grâce aux talks de la NewCrafts que j’ai fini par remporter le concours de Mario, mais plutôt parce que j’ai passé mon jeudi soir à m’entraîner chez moi comme un forcené.

“Papa il a une grosse boîte et les autres ils ont une petite boîte.” ~ Ma fille

Merci à vous, lectrices et lecteurs téméraires, d’avoir eu le courage de lire ce petit billet jusqu’à sa conclusion, et ce malgré les parallèles lourdingues et alambiqués entre les talks et Mario. Et merci à Younited de me payer pour jouer à Mario !

YounitedTech

Le blog Tech de Younited, où l’on parle de développement, d’architecture, de microservices, de cloud, de data… Et de comment on s’organise pour faire tout ça. Ah, et on recrute aussi, on vous a dit ?

Thanks to François Hyvrier

Thomas Goldstein

Written by

YounitedTech

Le blog Tech de Younited, où l’on parle de développement, d’architecture, de microservices, de cloud, de data… Et de comment on s’organise pour faire tout ça. Ah, et on recrute aussi, on vous a dit ?

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade