Agence Dn'D - Kata Learning
Par Maxime, Développeur Web à l’Agence Dn’D

Le Kata learning ou Code Kata est une expression inventée par Dave Thomas, un programmeur, éditeur et auteur, impliqué dans la communauté Ruby. Très sensible sur la question de l’apprentissage dans le monde du travail, il utilise l’expression « Kata learning » dans ses livres en empruntant le terme « Kata » à la culture nippone. En effet, un Kata désigne la répétition d’une séquence de gestes techniques dans de nombreux arts martiaux japonais. Rassurez-vous, cet article n’a pas pour but de vous transformer en maître accompli des arts martiaux, mais plutôt de vous partager une méthode d’apprentissage qui permet aux programmeurs et aux programmeuses de perfectionner leurs compétences, à travers la pratique et la répétition !

Les origines du Kata Learning

Un Kata (ou « Kata de Code ») est un exercice de programmation permettant aux programmeurs et aux programmeuses d’améliorer leurs compétences grâce à la pratique et à la répétition.

 

Introduction au Kata dans le film Karaté Kid (1984)

 

Probablement inventé par Dave Thomas, le terme s’inscrit définitivement dans le concept japonais de kata dans les arts martiaux puisque les développeurs expérimentent aujourd’hui l’exercice dit du « Dojo ». L’exercice du Dojo est pratiqué par des groupes de développeurs qui se réunissent et qui progressent de façon collaborative afin de résoudre des problèmes algorithmiques en groupe. Tout l’intérêt du Dojo, dans le sport comme dans le code, est de créer des automatismes. En algorithmie, un développeur a besoin de nombreux automatismes pour pouvoir écrire son code de façon simple et fluide. Le Dojo est donc une méthode qui permet d’acquérir ces automatismes !

La pierre angulaire du Kata Learning : la mémoire

Les codes kata s’appuient sur un principe simple et évident : la mémoire. En effet, chacun fait constamment appel à ses souvenirs pour s’adapter au présent et pour surmonter ses obstacles. La mémoire constitue la base de tout apprentissage, comme par exemple lorsqu’un lycéen recommence inlassablement les mêmes exercices pour réussir lors de l’épreuve du Baccalauréat. Bien-sûr, il ne s’agit pas de n’importe quelle répétition car même si l’échec peut, dans certains cas, favoriser une montée en compétences, c’est bel et bien la pratique d’exercices adéquats et de façon régulière qui contribuent à cette réussite : c’est ce que l’on appelle la répétition espacée ou SRS (Spaced Repetition System).

Prenons l’exemple d’un haltérophile ; il parvient efficacement à soulever des haltères conséquents en s’entraînant tous les jours à en soulever de plus petits. La répétition de ces exercices permet d’augmenter sa masse musculaire pour parvenir à soulever de plus grosses charges. Ainsi, pour nous développeurs, le muscle à entraîner est notre cerveau et les haltères sont les codes kata !

L’intérêt du Kata Learning

Comment devient-on un grand sportif ou un grand musicien ? La réponse est simple : l’entraînement ! Cela aide d’avoir du talent et de connaître d’innombrables théories… mais pour être un développeur hors-pair, vous améliorerez vos compétences de code par la pratique. Comme le dit Robert C. Martin, ingénieur logiciel célèbre et co-auteur du Manifeste Agile : « Il ne suffit pas de coder de 9h à 17h sur votre lieu de travail pour être un bon développeur, il faut aussi vous entraîner à coder chez vous : la pratique est la clé de tout ! ».
Par conséquent, lorsque vous êtes confronté à un problème sur votre lieu de travail ou dans un projet parallèle, vous saurez quelle technique convient le mieux pour ce problème parce que vous avez déjà pratiqué un kata similaire.

La majorité des personnes peuvent penser que l’apprentissage est meilleur lors de cas concrets, mais le Kata Learning permet aux développeurs de prendre le temps de comprendre un problème et le cheminement vers la solution dans un environnement plus confortable, où l’on s’accorde plus facilement le droit à l’erreur. Dans ce sens, les codes kata sont tout aussi utiles pour un développeur senior expérimenté puisque les exercices effectués sont réalisés dans un contexte rassurant sans enjeu trop important.

Il est primordial de souligner le fait que beaucoup de problèmes rencontrés par les développeurs sont soumis à la pression dite de « l’environnement de production ». Cette pression peut s’avérer stimulante pour certains individus, tout comme elle peut s’avérer néfaste : l’intérêt des codes kata est de s’isoler de cette pression dans le but de développer pour apprendre, en gardant en tête de comprendre autant la logique de résolution du problème que la solution elle-même pour s’améliorer le plus possible.

Quelques adresses pour pratiquer le Kata Learning

Améliorer ses compétences de code et effectuer des compétitions pour mesurer son niveau avec des développeurs du monde entier peuvent représenter des motivations supplémentaires pour pratiquer le Kata Learning.

Voici quelques adresses utiles pour vous prêter au jeu :

    • Codewars.com : Codewars est une plateforme permettant d’aiguiser vos techniques de développement et de relever des défis créés par la communauté pour renforcer différentes compétences. Après chaque Kata, vous pouvez comparer votre solution avec d’autres développeurs pour une meilleure compréhension. Cela vous permettra d’acquérir des connaissances sur des meilleures pratiques et des techniques innovantes pour vous améliorer. De plus, Codewars vous offre la possibilité de créer votre propre Kata, de quoi mettre la communauté au défi avec votre perspicacité et votre compréhension du code.

 

    • CodeChef : CodeChef est une organisation à but non-lucrative dirigée par DirectI, une société Indienne de logiciels basée à Mumbai. Il s’agit d’une communauté de programmation mondiale qui organise des concours, des formations et des événements en ligne pour les programmeurs des 4 coins du globe.

 

    • CodingBat : CodingBat est un site permettant de développer ses compétences de codage sur Java et Python. L’avantage de cette plateforme réside dans le fait que les développeurs bénéficient de feedbacks très rapidement, ce qui leur permet de s’améliorer dans les meilleures conditions, de pratiquer et de comprendre les bases de la programmation.

 

    • HackerEarth : HackerEarth est une société fournissant des solutions logicielles aux entreprises afin de les aider à répondre à leurs besoins en matière de gestion de l’innovation et de recrutement technique. Outre son activité principale, la société a réalisé plus de 1000 hackathons et plus de 10.000 défis de programmation à ce jour. Ainsi, avec ses nombreux programmes proposés, HackEarth aide des développeurs du monde entier à s’améliorer et à atteindre des paliers supérieurs en termes de code.

 

Comment ça marche ?

Le fonctionnement d’un code kata est comparable à l’énoncé d’un exercice mathématique. Il présente une situation dans laquelle nous devons solutionner un problème donné : le but est donc d’entraîner son esprit à le résoudre afin de l’habituer à rencontrer ce genre de situations. Certains codes kata ne nécessitent pas forcément de développer un programme. Lorsque c’est le cas, il est important de le faire dans le langage dans lequel vous êtes le plus à l’aise ou dans lequel vous souhaitez progresser.

Voici les conseils que nous vous donnons pour tirer un réel profit du Kata Learning :

1. Respectez les bonnes pratiques

Comme pour le code destiné à être mis en place sur un site de production, votre code (aussi petit soit-il) doit absolument respecter les bonnes pratiques et les règles du langage de programmation choisi. En effet, il est presque plus important de fournir un code irréprochable plutôt que d’arriver à résoudre le problème en lui-même.

2. Concentrez-vous

Oubliez un instant les distractions extérieures comme la musique ou les conversations de vos collègues. Pour assimiler correctement le code kata et ses enjeux, il est important de se placer dans une ambiance de travail propice à la concentration.

3. Investissez-vous au maximum

Même si le problème semble trop complexe, il est essentiel de réfléchir par soi-même de façon individuelle. En effet, demander de l’aide ou lire la solution ne vous permettra pas de retenir clairement les enjeux du code kata ou encore de développer un sens critique et attentif, très utile lors des sessions de débug.

4. Faites-vous relire

L’élément essentiel de cet exercice réside dans l’échange qu’il faut avoir à la fin. Même si la personne ne connaît pas la solution au problème, le partage des points de vue et les expériences individuelles permettent de faire progresser les deux personnes. Cela rejoint la notion de peer-review que nous avions déjà traité dans un précédent article.

Quelques Codes Kata à réaliser !

Pour Magento

Vinai Kopp, expert Magento et développeur expérimenté, possède une chaîne YouTube intitulé Mage2Katas, à travers laquelle il poste des Katas pour un apprentissage complet sur les différentes spécificités de Magento :

 

Algorithmique

 

Modélisation de jeu

 

Orientation Mathématique

 

String Manipulation

 

Technologies spécifiques

 

Refonte de code et principes de conception

 

Principes de conception

 

Conclusion

Le Kata Learning n’est pas un concept initialement créé pour le monde du développement, mais il est très utile aux développeurs qui souhaitent améliorer leurs compétences. La clef de cet apprentissage est la répétition d’exercices qui permettent de s’imprégner de concepts d’algorithme afin de les restituer lors de projets professionnels à forts enjeux. Il est important de souligner que l’utilité des codes kata ne réside pas uniquement dans leurs résolutions, mais aussi dans la démarche effectuée pour les résoudre. Comme le dit le célèbre dicton : « ce n’est pas le but qui compte, mais le chemin parcouru ».

Cette pratique s’allie parfaitement avec le principe de Test-Driven Development (TDD) qui est une méthode de développement par les tests. L’utilisation de ces deux techniques permet non seulement d’apprendre à développer, mais aussi de comprendre l’ensemble des effets de son développement et son comportement lors de cas spécifiques.
 

Vous avez aimé ?

0