lundi 16 janvier 2012

CodeRetreat@Lille#2

Le deuxième code retreat des ch'tis s'est déroulé dans les locaux de la société ProxiAD. Une nouvelle expérience riche d'enseignements ...

Un planning bien rodé

Le déroulement de cette journée est identique à la précédente session.

  1. un round de 45 minutes pour résoudre le problème en binôme,
  2. une rétrospective de 10 minutes permettant à chacun de partager son expérience,
  3. une pause de 5 minutes pour prendre un café et trouver son prochain binôme,
  4. GOTO 1.

Sans oublier une pause déjeuner dans l'heure du midi.

De nouvelles contraintes

L'objet de chaque round étant de programmer le jeu de la vie, les binômes sont lancés sans indications particulières lors du premier round, puis avec des directives contraignant l'exercice. On notera, entre autre, les contraintes suivantes :

Baby Steps

La démarche baby steps est très stimulante, elle consiste en une «chasse d'eau» nettoyant le code de tout ce qui n'aurait pas été commité dans un laps de temps assez court (2 à 5 minutes).

Première réaction : le rejet
Comment ! Commiter toutes les 5 minutes, comment est-ce possible ?
Deuxième réaction : la surprise
Quoi ! Ça y est, j'ai réussi ? Dingue !
Dernière réaction : l’adoption
Très intéressante cette solution que nous avons là, c'est à la fois pragmatique et souple.

Object Calisthenics

La démarche Object Calisthenics consiste en l'application des règles suivantes:

  1. Use only one level of indentation per method
  2. Don’t use the else keyword
  3. Wrap all primitives and strings
  4. Use only one dot per line
  5. Don’t abbreviate
  6. Keep all entities small
  7. Don’t use any classes with more than two instance variables
  8. Use first-class collections
  9. Don’t use any getters/setters/properties

Ce round a été l'occasion de revoir la façon de concevoir la programmation, un peu comme après avoir lu clean code, et force à travailler l'interaction entre les objets.

TDD As If You Meant It

Cette démarche consiste à n'écrire qu'un seul et unique test à la fois, et tout le code nécessaire dans le test : code de test + code de production. Cette expérience m'a conduit à écrire un code de production simple et un code de test complexe. Plusieurs étapes de refactorisation plus tard, le code de test s'est transformé en code de production et le petit code simple est alors relégué au rang de code de test. Un résultat pour le moins inattendu.

#Success

Cette fois, j'ai eu l'occasion de voir des langages qui me sont inconnus :

  • Smalltalk : maintenant je sais d'où vient l'Objective-C et InterfaceBuilder ;)
  • C# : pas vraiment dépaysant quand on a connait Java,

#Fail

J'imaginais pouvoir corser l'exercice en utilisant le nouveau langage Ceylon ainsi que l'outil gradle, mais sans succès.

  • Impossible d'employer gradle, ni même maven ou alors ant, car l'essentiel du temps est consacré à échanger avec le binôme sur la façon d'aborder l'exercice, l'IDE se suffisant à lui seul pour lancer les tests et ainsi rester concentrés sur l'objectif.
  • Impossible d'écrire la moindre ligne en ceylon car, à mon sens, un binôme doit comporter au moins un expert de la technologie employée pour avancer, cette contrainte reste trop forte pour de simples mortels.

#Upgrade

Une règle immuable est de supprimer le code de chaque round et repartir d'une feuille blanche au prochain, ce que je fait en supprimant le projet dans Eclipse. Hmm ... oui, je sais, le projet existe toujours sur mon disque, mais je ne m'en sert dans aucun round. Ceci étant, ces projets pourraient constituer un témoignage de la démarche du binôme en plein effort. C'est pourquoi je vais aller un peu plus loin la prochaine fois en effectuant des commit réguliers dans Git et ainsi pouvoir revoir le film à posteriori.

Une belle expérience humaine

Cette session, tout comme la précédente, fut l'occasion d'un échange culturel intéressant entre des participants d'origines et de niveaux différents. Il est également intéressant de constater l'évolution du rapport de chacun au développement dirigé par les tests dans la journée: en début de journée tout le monde sais ce que c'est, et il est simple de distinguer ceux qui le pratique des autres; en fin de journée chacun témoigne d'un progrès personnel dans cette démarche.

Remerciements

  • Un grand merci à Adrian Bolboaca (@adibolb), code retreat coach
  • Un grand merci à Jérémie Hattat (@jhattat), code retreat coach stagiaire ;) et gentil organisateur
  • Un grand merci à la société ProxiAD pour la mise à disposition de ces locaux un samedi et le soutien logistique

Comme si vous y étiez

Des photo de l’évènement sont visibles ici.

1 commentaire:

  1. Merci de cet excellent retour! Journée très riche en enseignements, autant pour les participants que le coach stagiaire ;)

    RépondreSupprimer