mardi 13 décembre 2011

Global Code Retreat Paris 2011

Que faire un Samedi matin de Décembre aux alentours de 8h sous le crachin parisien ? Aller rejoindre une bande de Geeks pour coder toute la journée !


Le 3 décembre j'ai participé au Global Code Retreat 2011 organisé à Paris par Xebia et Arolla et facilité par Jean-Laurent de Morlhon et Cyrille Martraire leader de la communauté parisienne de Software Craftsmanship. Le Global Code Retreat consiste à réunir partout dans le monde un même jour des développeurs qui ont envie de consacrer une journée entière à s'entraîner et à adopter de nouvelles pratiques. L'inscription se fait sans restriction d'âge, d'expérience, de technologie ni de langage, il n'y a pas de silo c'est le partage qui prime.

Cette journée de Code Retreat proposait un exercice très particulier : à chaque heure on forme une paire de programmeur avec un nouveau participant, on commence ensemble un nouveau programme, on met en place ses tests, on code, on avance, puis le temps vient à manquer et on supprime son code pour pouvoir mieux recommencer ! Frustrant, presque sacrilège, cette suppression pousse pourtant à varier les approches, les langages et les implémentations. On se rend vite compte qu'elle rend plus libre d'explorer puisqu'on est pas ici sommé de finir et de livrer son code. Il y a la une différence fondamentale avec un hackathon par exemple, le chemin importe bien plus que la destination. Nous sommes souvent sous pression dans nos environnements de travail, sommés de livrer vite. Ce contexte ne facilite pas la remise en cause régulièrement de nos pratiques, il y a toujours le risque de s'endormir sur ses lauriers et de stagner. Le Software Craftsmanship prône l'apprentissage et propose aux développeurs de prendre le temps nécessaire à l'entrainement intentionnel, un code retreat est une occasion pour cela.

Le sujet commun à tous était de réaliser une implémentation du jeu de la vie de Conway, un automate cellulaire que j'ai rencontré il y a pas mal d'années durant mes lointaines études, que j'avais d'ailleurs du coder en Pascal à l'époque... souvenir...

Pour ma part j'ai réalisé avec mes différents binômes une première itération en Java, une seconde en Javascript, une troisième en Java, une quatrième en Python et une cinquième en Fantom. Quelles structures ? quels objets ? que tester ? comment nommer cela ? toutes les questions y passent. Entre chaque itération Jean-Laurent et Cyrille proposent d'adopter de nouvelles pratiques telles que "TDD as if you meant it" ou le ping-pong pairing. J'ai testé différentes façons de travailler en binôme, d'avancer un design en TDD, d'approcher le problème par le fonctionnel ou par les détails, de le tester.

Avec le recul j'ai deux approches qui me restent en tête. Dans l'implémentation en Fantom nous sommes partis sur un test très fonctionnel basé sur la vérification de ce que devrait être l'étape suivante sur un ensemble de grilles. L'implémentation est restée complètement adhoc c'est à dire qu'elle vérifiait effectivement les tests mais sans réellement implémenter les lois du jeu de la vie. Dans cette approche l'implémentation réelle intervient très tard et peut être découverte de façon heuristique, c'est du Test Driven très poussé. L'autre approche que nous avons tenté et qui me reste en tête est un test exhaustif sur une petite grille. Chaque cellule est entourée de 8 cases, vivantes ou mortes, soit 256 combinaisons possibles pour l'entourage d'une cellule. 256 c'est bien trop pour écrire les tests à la mains mais tout à fait accessible pour tester automatiquement tous les cas sur une grille 3x3. La méthode de comptage des voisins peut ainsi être vérifiée exhaustivement sur une petite grille. Cette implémentation a été faite en Python.

J'ai surtout constaté la grande variété des approches que nous avions tous sur ce simple exercice. Coder 5 fois le jeu de la vie semble un exercice bien répétitif mais le simple fait d'avoir envie de prendre le problème sur un nouvel angle, d'écouter les autres, et surtout de composer avec son binôme rend chaque itération unique. "Seul on va plus vite, ensemble on va plus loin" ! Merci les gars !

L'organisation était nickel, le lieu le café et les sushis rendaient l'événement très accueillant et Jean-Laurent et Cyrille ont su animer la journée et susciter les prises de parole à chaque fin d'itération. Une fois rentré chez moi je me suis confortablement installé pour terminer l'implémentation Python que j'avais de manière fourbe conservé et la voir tourner, en continuant le développement entièrement en test first. Une récompense pour une journée assez exceptionnelle.
crédit image : Violin maker's workshop view 2 de Matthieu Deltour

Aucun commentaire:

Enregistrer un commentaire