SoCraTes à Rennes le 24 juin, venez me voir 😉
"Mind blowing!"; c'est ainsi que je résumerais les 4 jours de cette non-conférence pour ma première participation.
Nous sommes mis dans le bain dès notre arrivée jeudi en fin d'après-midi : chacun s'assoit à une table ronde, avec d'autres participants, se présente, et propose des sujets de discussion : diversité, design émergent, refactoring de systèmes basés sur des technos peu ou plus utilisées (COBOL, Fortran…), bonnes pratiques de mob programming… juste un petit tour de chauffe avant le dîner!
Assis à côté d'un expert Scala, on continue pendant le dîner : programmation fonctionnelle, importance et usage de la programmation réactive dans nos applications modernes : 🤯. Je prends des notes, et pose (beaucoup) de questions.
Et ce rythme continue jusqu'au dimanche midi, avec, pour clôturer ce SoCraTes 2022, un cours particulier de Vivien, développeur senior C++, sur le fonctionnement d'un compilateur. Merci à lui!
Entre les deux, de nombreux ateliers et échanges extrêmement enrichissants :
J'ai particulièrement apprécié la bienveillance de tous les participants. Pas d'égo, ni de "querelles de chapelle"; c'est ça l'esprit SoCraTes. Alors merci aux organisateurs et aux participants. Merci également à OCTO qui m'a permis d'y assister. SoCraTes fût une très belle expérience; nul doute que je ferai mon possible pour être présent à la prochaine édition!
Il y a des endroits où l’on va chercher un regain d’énergie, une source de motivation et/ou quelques bons conseils … et je place SoCraTes dans la liste de ces endroits.
A chacune de mes participations - la troisième pour moi -, je reviens fatigué par 4 jours de conversations et de katas à toutes heures du jour et de la nuit, mais aussi avec plein de motivation pour continuer à défendre certaines convictions sur le craft, tester de nouvelles idées ou en re-tenter des nouvelles.
C’est aussi le plaisir de recroiser des personnes que l’on a pas vu depuis quelques années, et de reprendre la conversation là où elle s’était arrêtée. En 2019, lors de ma dernière participation, j’avais beaucoup discuté de Trunk Based Développement et de continuous delivery avec les participants et notamment Thierry de Pauw avec qui, lors d’une session autour de "Kick Starting Continuous Delivery”, nous avons ré-évoqué cette année le Toyota Improvement Kata (3 ans après notre première conversation).
Il y a des choses qui ne changent pas (par exemple: une passion pour la programmation fonctionnelle qui ne semble pas vouloir s'essouffler).
Mais il y aussi des changements plus profonds qui semblent être à l'œuvre. Cette année, le Domain Driven Design (DDD) était sur beaucoup de lèvres et dans pas mal d’oreilles … une confirmation de l’intérêt de la communauté craft pour le sujet ?
Si je ne devais retenir que 3 sessions :
La démonstration rafraîchissante de Michel Grootjans sur le flux de travail, que j’ai trouvé bluffante de clarté … et les conclusions sur la corrélation - ou son absence - entre estimation et lead time, sur l’impact de l’organisation du travail et des WIP sur l’efficience du flux.
Les conversation sur extreme programming (XP) et son extrême simplicité
The fridge game, par Christophe Thibaut et Laurent Bossavit, sur lequel je ne m’étendrai pas pour ne pas gâcher la surprise mais qui regroupe ce que j’aime le plus dans les sessions : Un juste milieu en mode participatif et une démonstration d’un point théorique.
Il faut cependant que je confesse quelque chose : Je suis toujours venu à SoCraTes avec quelques idées de session mais que je n’ai jamais osé proposer. Promis, la prochaine fois, j’amènerais quelque chose dans mes valises.
J’ai découvert SoCraTes il y a quelques années quand Romeù Moura m’a dit un jour “Si tu veux faire ce métier, il te faudra un coach et il faudra que tu ailles à SoCraTes”, l’un n’ayant à première vue aucun rapport avec l’autre. Et bien sûr je n’avais fait ni l’un ni l’autre jusqu’à maintenant, quand en fin d’année dernière Victor nous a parlé d’y aller, j’ai sauté sur l’occasion. Deux coups en un, vivre cette expérience et passer du temps avec des Octos “au vert”.
Voici un petit panel de quelques talks fun / waouh / inspirants auxquels j’ai pu assister, je tente un exercice forcément déceptif et très partiel de pitchs ou de résumés.
How to sabotage a craft coach?
Quelques exemples dans les plus classiques :
"<ça>, ça ne marchera pas chez nous… tu comprends avec notre legacy (remplacer <ça> avec n’importe quelle pratique du craft qui vous vient à l’esprit)"
"ah c’était aujourd’hui le kata"
"on n’a pas le temps, on a des problèmes de prod"
...Et une dizaine d’autres encore
Category Theory “you already know it”
J’ai redécouvert un vocabulaire que je n’avais pas utilisé depuis mes jeunes années d’étudiant, et finalement faut croire que c’est comme le vélo … en tout cas une approche très pédagogique et compréhensible dans ce talk en rodage et qui va tourner dans quelques futures conf.
The fridge game et The life out the fridge
pour ne pas divulgacher ce sujet que préparent Laurent Bossavit et Christophe Thibault pour Devoxx juste un teaser très marketting : Le system thinking appliqué à un frigidaire
et d’un point de vue personnel les discussions avec le plus d’effets waouh et en sortie une liste de lecture incluant quelques bouquins de G. Weinberg (“An Introduction to General Systems Thinking”, “Secrets of Consulting: A Guide to Giving and Getting Advice Successfully”, …)
SOLID vs CUPID
une lecture rapide des propriétés CUPID (Composable, Unix Philosophy, Predictable, Idiomatic, Domain-based) proposées par Dan North (https://dannorth.net/2022/02/10/cupid-for-joyful-coding/) et est-ce que ça remplace(rait) les principes SOLID ? A vos copies doubles, vous avez 2 heures ;-)
TCR Kata
Essayer de faire un kata (le bowling) avec la contrainte proposée par Kent Beck comme un exercice, si les tests (T) passent on commit (C), sinon le code (de prod pas de tests) est remis comme il était (revert R)
Très honnêtement, avec mon binôme (Laurent) on a pas mal galéré (petit coup à l’égo ;-)) et on s’est fait reverter un certain nombre de fois avant de trouver un moyen de faire vraiment des tout petits pas grâce à Laurent qui pointe “TDD as if you meant it” de Keith Braithwaite (articles à ce sujet “https://cumulative-hypotheses.org/2011/08/30/tdd-as-if-you-meant-it/”, “https://gojko.net/2009/02/27/thought-provoking-tdd-exercise-at-the-software-craftsmanship-conference/” )
Kotlin Kata (with constraints)
se donner des contraintes complètement farfelues pour faire une refacto
Le code doit rimer, on change de navigateur toutes les 10s, le code doit avoir une forme carrée, pas de type primitif, …
Des contraintes arbitraires incompréhensibles avec des deadlines irréalistes ça ressemble à quelque chose IRL … mais à quoi ?
Patterns (Laurent Bossavit)
Grâce aux immenses connaissances de Laurent Bossavit complétées de celle de Christophe Thibaut, et de Rachel Davies, un parcours autour de l’inspiration de Christopher Alexander (Architecte - pas logiciel, décédé le 17 mars) sur le mouvement des design patterns (logiciels cette fois), les personnes qui y ont participé (Kent Beck, Eric Gamma, Ron Jeffries, Ward Cunningham et tellement d’autres…) et l’impact direct qu’ils ont toujours sur la vie de toutes les personnes qui travaillent dans ce domaine.
Pour finir
Ces 3 jours ont été pour moi un de ces trop rares moments qui remuent, qui me font me poser des millions de questions, me donnent des millions d’envies de lecture, d’expérimentations et le sentiment de découvrir encore une fois l’immense étendue des savoirs dont j’ignore l’existence.
Mon challenge pour la prochaine édition sera de proposer moi aussi des sujets qui je l’espère plairont aux participants. Juste pour essayer de rendre un tout petit peu de ce qu’on m’a donné pendant ces 3 jours.
Je veux remercier chacun des participants de cette édition pour votre immense générosité. Et bien sûr un immense merci à Houssam (houssamfakih) et à toute la team des organisateurs.