En début d’années on prend des tas de  bonnes résolutions. La résolution de cette année 2011 sur le plan professionnel pourrait être “Et si je m’entraînais à coder” ? OK, je sais déjà coder, mais si je m’entraînais pour m’améliorer ?

Randori

Qu’est ce qu’un coding dojo ?

Une citation de Laurent Bossavit exprime bien l’idée :

Si je veux apprendre le Judo, je vais m’inscrire au dojo du coin et y passer une heure par semaine pendant deux ans, au bout de quoi j’aurai peut-être envie de pratiquer plus assidûment.

Si je veux apprendre la programmation objet, mon employeur va me trouver une formation de trois jours à Java dans le catalogue 2004.

Cherchez l’erreur.

Laurent Bossavit

Le dojo est comparable a un entraînement. Les sportifs, les musiciens s’entraînent pour apprendre de nouvelles techniques et simplement rester au niveau. Les informaticiens sont dans un environnement très changeant en matière de technologie et de pratiques et ont besoin d’apprendre et de se tenir à jour.  Comment  mieux comprendre une technologie, une méthode, des pratiques qu’en les voyant mises en oeuvre dans la résolution d’un problème concret ?

Concret certes, mais le but du dojo n’est pas de trouver une solution a tout prix. Le but est de trouver une belle solution, de montrer sa réalisation pas à pas pour la faire comprendre et partager, d’échanger avec le reste du groupe sur les points forts et les points faibles de cette solution. C’est quelque chose qu’on a rarement le temps de faire dans un milieu professionnel où il faut répondre le plus vite possible au problème. Le dojo est un environnement sûr où on peut expérimenter des démarches différentes, apprendre un nouveau langage.

Découvrir, apprendre, et consolider ces connaissances jusqu’à ce qu’elles deviennent des réflexes. Perdre ses mauvaises habitudes de code pas beau. Parvenir à raisonner par défaut avec une démarche pas à pas, vérifiée à chaque étape, c’est à dire TDD (développement dirigé par les tests) et ne pas retomber dans le bidouillage cradouille à chaque fois que l’on fait face à une difficulté. Croyez moi, ce n’est pas facile, la pente du “je fais marcher, on verra après” est assez tentante, et pas mal glissante aussi au bout de quelques étapes.

Mais le dojo est un groupe et il vous rappelera à l’ordre si jamais vous avez quelques tentations. L’organisation en groupe rend cet apprentissage plus intéressant. Il permet de rencontrer d’autres passionnés ou simplement des gens curieux. Mais c’est aussi un moyen de travailler sa technique de travail de groupe : être suffisament discipliné pour ne pas interrompre la présentation à tout bout de champ, savoir expliquer ses arguments sans agressivité, savoir recevoir les critiques et les prendre en compte.

Il faut aussi savoir donner. Il n’y a pas de speaker qui va vous apprendre des choses. Chacun participe d’une certaine manière.

Au final, le dojo se doit d’être ludique pour maintenir la motivation. On ne va pas implémenter des règles de gestion de commandes ou d’attribution de crédit. Les sujets de coding dojo sont en général sans utilité réelle et conçus dans un but ludique.

07-01-02 Randori Camp - Pori FIN (5)

Comment ça se passe ?

Chaque dojo définit des règles de fonctionnement qui lui sont propres.

L’écoute est importante. Les coding dojos commencent souvent par une rétrospective du dojo précédent. Pour partager avec ceux qui n’ont pas pu venir et c’est souvent l’occasion de faire le compte rendu. Le retour porte sur l’exercice,  l’explication dans les grandes lignes de la solution apportée mais aussi sur ce qui s’est bien ou mal passé du point de vue de la démarche : des étapes sautées dans la démonstration qui l’on rendue difficile à comprendre, des gens dissipés, mais aussi une pratique que l’on a bien apprécié et que l’on tr ouve utile. Le débrieffing a froid permet de réduire les tensions et d’avoir envisagé des solutions dans l’intervalle.

Il faut ensuite choisir un sujet. Il n’y a pas de speaker qui vient avec un sujet préparé. Le groupe choisi un des exercices proposés par les membres du groupe.

Il y a deux grands types d’exercices :

  • Le kata préparé : c’est un exercice réalisé par une personne, qui a choisi un problème à résoudre, un langage et a préparé au moins une ébauche de solution. Il peut aussi être réalisé à deux en pair programming, soit en alternant, soit avec un candide qui détaille la démarche
  • Le randori : c’est un exercice collectif dans lequel les membres du groupe vont se succéder en pair programming pour une période assez courte (5 à 10 mn). On remplace une personne à chaque tour pour garder une certaine continuité. Il existe aussi une variante où plusieurs groupes travaillent en parallèle.

Les randori permettent à chacun de mettre les mains dans le code et de s’impliquer. C’est toutefois un peu difficile si les gens ne connaissent pas du tout le langage ou la technologie utilisée. Un autre apport du randori est de travailler sa souplesse. La solution a pu être commencée avec un algorithme qui n’est pas celui que vous auriez choisi. Il faut savoir s’adapter. Il faut aussi savoir remettre en cause ce choix s’il ne mène à rien et le remplacer.

Dans les deux cas, celui qui présente son kata ou est dans son tour de randori doit avoir l’attention de tous. Il ne doit pas être interrompu pendant qu’il présente sa solution et met en oeuvre une étape de sa résolution, jusqu’à la barre verte. La barre verte est l’affichage de la plupart des outils de test unitaire pour montrer que tous les tests passent. Lorsque la personne réfléchi à sa solution et l’implémente, on la laisse se concentrer. Lorsque la barre est verte, on peut discuter des choix réalisés et si nécessaire les remettre en cause. Bien sûr, si la personne est en difficulté, elle peut être aidée à tout moment.

L’exercice dure environ 1h.

Le TDD est indispensable dans ce genre d’exercice car il permet de rendre la main régulièrement  au groupe pour avoir un retour. Les langages sont souvent des langages nouveaux et fonctionnels (Ruby, Scala, Haskell, …) car ils sont plus motivants.

Vous pouvez imaginer des problèmes amusants qui peuvent être résolus en 1h environ. Écrire un convertisseur de chiffres romains est un bon exemple de défi raisonnable. Si vous manquez d’imagination, des sujets types sont présentés sur ces deux sites :

On part d’une page blanche en général  car le but est de tout expliquer pas et pas. La recopie de gros bouts de code amenés dans ses cartons se prête mal à l’exercice. Il existe toutefois des variantes où on part d’une situation donnée issue d’une séance précédente ou dans le but de s’exercer à faire du refactoring.

La session se termine par un debrieffing rapide sur ce qu’on a fait.

Coding Dojo July

Les coding dojos en france (et pas loin)

Et maintenant, il vous faut trouver un groupe près de chez vous :

Si vous connaissez d’autres coding dojos actifs, n’hésitez pas à nous tenir au courant.

Dojo Sticker I

De quoi j’ai besoin ?

Il n’y en a pas et vous voulez vous lancer ?

Pour que tout se passe bien :

  • une salle pour une dizaine de personnes,
  • une machine avec l’environnement de développement requis (IDE ou traitement de texte avec le support du langage, les outils de test, le compilateur)
  • un vidéo-projecteur pour que tout le monde puisse voir le code
  • configurer les affichage pour que tout le monde puisse lire le code confortablement
  • un minuteur pour les tours de randori (on trouve ça sur la plupart des smartphone, sinon un minuteur de cuisine fait aussi l’affaire)
  • une mailing list ou un site de gestion de communauté pour vous mettre d’accord sur les dates et lieux

Et probablement qu’au début vous aurez à fournir vous même beaucoup des sujets pour qu’il y en ait au moins un ;-)

Meteora (I)

Et si j’en veux encore plus ?

Arrivera un jour où votre entrainement hebdomadaire ne suffira plus. Vous aurez envie d’aller plus loin.

Une heure c’est un peu court. On n’a pas vraiment le temps d’explorer différentes solutions ou de mener jusqu’au bout certains exercices.

Cette année on voit apparaître des “code retreats“, des retraites dans un lieu sympa, entre développeurs pour coder une journée entière ou un Week End entier selon les formules.

C’est l’équivalent des stages complémentaires pour les gens qui pratiquent un sport, l’occasion de rencontrer un peu plus longtemps les plus motivés, de rencontrer des experts.

Le premier code retreat a été organisé à Grenoble par l’AlpesJUG le 21 Janvier. Il a été dédié à l’implémentation par plusieurs équipes du jeu de la vie un classique des coding dojos.

D’autres suivront probablement, soyez attentifs.

KataArgs

Les références

J’ai utilisé différentes sources pour réaliser cet article :

Vous pouvez aussi regarder ces documents :

Merci à Isabelle Blasquez pour la relecture et les informations complémentaires.