Apprendre en pratiquant avec des katas de code

Lorsque j’ai appris à faire du vélo, j’ai commencé à en faire dans mon jardin, dans la Drôme. Mon vélo avait deux petites roulettes sur la roue arrière, ça m’aidait beaucoup. On peut dire que j’étais dans un cadre sécurisant : à l’intérieur de mon jardin, avec peu de risque de chute et sans circulation de véhicules. J’ai pédalé des heures et des heures pour améliorer ma maîtrise. J’ai appris par la pratique, en répétant, en essayant, en m’améliorant. J’étais à l’aise, bien plus qu’à Paris lorsque j’utilisais les anciens Vélib - les tanks.

Les katas de code forment un moyen très intéressant pour apprendre par la pratique. On découvre, on explore, on essaie, on répète, on améliore. Bref, on apprend. Et à l’image du vélo à roulette, on est dans un cadre sécurisé et simplifié.

Je fais des katas pour apprendre de nouvelles choses. Ces choses peuvent être très variées. Des langages par exemple. Je me suis amusé avec Kotlin, Typescript, Clojure, Elixir, Elm ainsi que F# récemment. Des langages très hétérogènes. Ça me permet d’agrandir ma vision, d’obtenir de nouvelles connaissances et d’être moins lié à un éco-système ou à une façon de faire. Via les katas de code, j’apprends aussi des concepts comme CQRS et Event-Sourcing, ou le Mutation Testing. Je m’entraîne à toujours mieux concevoir mon code, le rendre plus simple, plus compréhensible, à mieux retranscrire le métier.

Avec les katas, je répète des gestes pour parfaire ma maîtrise. Le mot kata est d’ailleurs un terme japonnais qui vient des arts martiaux. Le but est de travailler des techniques en toute sécurité en répétant des gestes. On apprend par la répétition dans un environnement dédié à l’apprentissage (ce n’est pas un vrai combat). J’utilise les katas de code pour répéter l’écriture de tests, le TDD, le Refactoring. C’est par une longue pratique et des contextes différents que l’expérience vient. On n’acquiert pas une maîtrise après avoir lu un article et une vidéo sur YouTube. Je vais parfois faire plusieurs fois le même kata de manière différente, et parfois répéter la même manière mais sur des katas différents.

La nature éphémère et simple d’un kata de code apporte un cadre favorisant l’apprentissage (à opposer avec un projet perso ou la production en entreprise). Je peux expérimenter comme bon me semble, je peux recommencer autant que je veux, je peux prendre le temps que je veux. Je choisis mes contraintes. Il n’y a pas de mise en danger ni d’impératif.

Il n’y a pas d’âge pour faire des katas de code. Je suis Junior, je suis Senior, je sors d’école, j’ai 12 années d’expériences… En fait, la bonne affirmation serait plutôt j’ai toujours à apprendre et à approfondir. Que ce soit dans notre domaine de prédilection ou dans d’autres qui restent à explorer. Je fais partie d’un groupe de kata pour coder et réfléchir ensemble, composé de développeurs expérimentés. Malgré tout, on continue d’apprendre et de se casser quelques dents. Et on aime ça.

Je fais des katas seul, pour explorer ce que je veux, quand je le veux. Et je fais également des katas en groupe pour démultiplier mon apprentissage. En mob-programming, nous partageons, nous discutons, nous confrontons des visions, nous essayons différentes solutions. Nous nous ouvrons et nous apprenons les uns des autres.

C’est tout ça, pour moi, la magie des katas. C’est un très bon levier d’apprentissage et terrain de jeu. Bien sûr, ce n’est ni le seul moyen d’apprendre, ni suffisant. Je vais aussi lire des livres pour obtenir plus de théorie et de profondeur, assister à des conférences, pratiquer sur des projets réels, etc.

Votre prochain kata

J’en arrive à la fin de ce que je voulais raconter. Il me reste à vous partager des liens pour trouver vos futurs katas de code ainsi qu’une petite sélection de ceux que j’apprécie, puis je retournerais m’amuser.

Je ne peux parler de kata sans mentionner Emily Bache. Coach et auteur du livre Coding Dojo Handbook, Emily possède un compte GitHub qui fourmille de katas (un grand merci à elle). Elle les prépare et les utilise pour accompagner des équipes; vous en aurez pour tous les goûts.

Certains sites et pages GitHub recensent également des katas. En voici trois que j’utilise régulièrement pour piocher des sujets : Coding Dojo, Kata-log et Awesome Katas. Et n’oubliez pas votre moteur de recherche préféré, il se fera un plaisir de vous en faire découvrir d’autres.

En ce moment, je suis sur un kata bien sympa qui reprend les mécaniques d’un jeu de carte dans le style de Hearthstone, le Trading Card Game. J’aime également le Bank Account, le Mars Rover, le Game of Life et le GildedRose. Ils font partie de mes classiques. Ils sont simples et très efficaces. Ils permettent de s’amuser avec de multiples concepts différents et d’expérimenter plusieurs solutions.

Vous voilà avec de nombreuses raisons de vous lancer, et toute une liste de katas potentiels. Bon apprentissage !