Article coécrit par Hubert Sablonnière, Tristan Lescut et François Descamps.

Nous vous proposons au travers de cet article de partager avec vous le premier code retreat de Lille.

La session était hébergée par la société Efidev. Cette dernière était le sponsor de cet événement (Grand Merci à eux pour l’accueil). La journée était organisée par Adrian Bolboaca, un passionné des « Code Retreat ».

La page officielle de l’événement :

Un Code Retreat a pour objectif de permettre aux Developpeurs de pratiquer leur Art. En effet, contrairement aux musiciens/sportifs qui passent la majeure partie de leur temps à répéter ou à s’entraîner et finalement très peu sur scène ou en compétition, le développeur lui passe le plus clair de son temps sur scène. Notre volonté :  améliorer notre compétence programming.

Un Code Retreat se déroule sur une journée complète. Il est découpé en sessions d’une heure. Chaque session se décompose en deux parties : 45 mins de pratique en binôme et 15 mins de partage avec tout le groupe. Le binôme change à chaque session et des contraintes s’ajoutent. Le problème à résoudre est le même à chaque fois : « Le jeu de la vie ».  « Le but n’est pas de finir mais d’avoir un code « clean » avec un design cohérent et efficace tout en essayant diverses méthodes de travail à chaque session ».

Pour information, les règles du jeu de la vie (Conway’s game of life) sont :

1. Cellule vivante avec moins de deux voisins vivants meurt,
2. Cellule vivante avec deux ou trois voisins vivants vit,
3. Cellule vivante avec plus de trois voisins va mourir,
4. Cellule morte avec trois voisins exactement va naître.

Mon programme (toujours en mode Pair Programming) a été le suivant :

09:00 Accueil par Efidev + Café entre nous, le temps de se présenter
09:45 Adrian nous présente ce qu’est un Code Retreat et le fil rouge de la journée (« Le jeu de la vie »)
10:00 Itération 1 (avec Yannick) en C# : sans contrainte particulière, pour moi ça été l’occasion de tester le TDD : « j’écris le test, je vais le passer et je le refactor » + Approche par les données et états du problème du jeu de la vie.
10:45 break&partage, suppression du code
11:15 Itération 2 (avec Hubert) en Javascript Pur et avec QUnit pour les TU : TDD + Respecter les contraintes du « Simple Design »:

1. Passes its tests,
2. Maximizes clarity,
3. Minimizes duplication,
4. Keep it small,

(Note : Nous avons aussi eu la volonté d’avoir des objectifs très courts et de toujours avoir quelques avancements à montrer.) + Approche par les données et états du problème du jeu de la vie.

12:00 break, suppression du code
12:30 pause pizzas
13:45 Itération 3 (avec Jérémie) en Java/JUnit : Contrainte TDD as if you meant it. Nous nous étions fixer un objectif supplémentaire : Avoir toujours des noms de méthodes/variables/classes « très » parlant : « N’importe qui doit toujours comprendre le rôle de chaque composant ». De plus, nous avons toujours essayé d’avoir des tests parlants à montrer. Approche par le comportement du problème du jeu de la vie.
14:30 break, suppression du code
14:45 Itération 4 (avec Thierry) en Java :PingPong Pair Programming,Contraintes sans if, sans while, sans structures de données, méthode de moins de 4 lignes + (re)développer les méthodes Assert dont nous avions besoins. Approche par le comportement du problème du jeu de la vie.
15:30 break, suppression du code
15:50 Itération 5 (avec Loïc) en Java/JUnit : Tell, don’t ask + une forte volonté d’essayer de finir le jeu (nous y étions presque !!!)
16:35 break, suppression du code (+bilan de la journée pour certains)
17:00 Itération 6 (Avec Aurélien et François) en Php : Essai avec un pattern Observer/Observableen Php5 plus longue : 1h30/1h45 => Jeu fini
18:45 break, suppression du code, bilan de la journée
19:30/19:45 FIN

Comme nous pouvons le constater chaque session à ses propres objectifs. Cela permet d’essayer dans un vrai contexte de nouvelles méthodes de travail. Merci à Adrian pour la variété des problématiques posées. Nous notons aussi que les sessions sont à chaque fois « trop » courtes. Un sentiment de frustration se fait souvent sentir car nous aimerions terminé le problème avec notre binôme. Cette contrainte de temps est aussi là afin de stimuler (avec les autres paramètres) la créativité et de pousser nos réflexions dans leurs retranchements. Les périodes de travail étaient chronométrés afin de vraiment tenir les 45 minutes. Ces dernières étaient rythmées par le fameux synthétiseur vocal d’Adrian : « Delete your code now » !

Puis nous nous retrouvions durant des moments de partage. Ces derniers sont l’occasion d’échanger sur le travail de chaque binôme  :

  1. Langage utilisé,
  2. Framework de test utilisé,
  3. Concepts développés,
  4. Méthodes de travail utilisé,
  5. Avancement dans la résolution du problème,
  6. Difficultés rencontrées,
  7. Que retenir de cette session,
  8. etc…

Nous nous rendons compte que finalement aucune session ne se ressemble. En effet, avec chaque binôme, avec chaque contrainte, avec chaque objectif, avec chaque environnement de dév, il est impossible de faire deux fois la même chose.

A la fin de la journée, tout le monde peut dresser son propre bilan de la journée (Nous sommes tous fatigués). Ce dernier s’articule autour de trois questions :

  1. Quel est votre ressenti global de la journée ?
  2. Qu’avez-vous appris ?
  3. Que mettre-vous en application Lundi au travail ?

Ce genre d’événement est clairement à vivre. Tous les binômes étaient intéressants et passionnés et nous avons tous appris énormément que ce soit dans nos manières de coder ou de tester nos applications.

Merci à Aurélien Fontaine (Efidev) pour l’organisation et à Adrian Bolboaca pour l’animation.