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.
- un round de 45 minutes pour résoudre le problème en binôme,
- une rétrospective de 10 minutes permettant à chacun de partager son expérience,
- une pause de 5 minutes pour prendre un café et trouver son prochain binôme,
- 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:
- Use only one level of indentation per method
- Don’t use the else keyword
- Wrap all primitives and strings
- Use only one dot per line
- Don’t abbreviate
- Keep all entities small
- Don’t use any classes with more than two instance variables
- Use first-class collections
- 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.
Merci de cet excellent retour! Journée très riche en enseignements, autant pour les participants que le coach stagiaire ;)
RépondreSupprimer