(Merci à Thomas pour ses suggestions)
Dans le karaté, il existe deux sortes de compétitions : les compétitions de combat et celles de kata. Dans une compétition de kata, les athlètes sont jugés sur la qualité d’exécutions des katas.
D’un exercice permettant de maîtriser les gestes utiles lors d’un combat, le kata est donc devenu une discipline en soi. Les athlètes, lorsqu’ils ou elles atteignent un certain niveau, doivent choisir de se spécialiser dans l’un ou l’autre type.
Les personnes pratiquant le combat continuent probablement à utiliser les katas comme exercice afin d’améliorer leur maîtrise, mais je ne sais pas si l’inverse est vrai : peut être que progresser en kata ne nécessite pas du tout de faire de combats.
En développement aussi on aime les “kata”, c’est à dire les exercices qui permettent d’exercer un pattern ou une approche technique.
À l’image du karaté, je me demande si parfois on ne perd pas de vue que les katas (en informatique) sont en général un moyen de maîtriser une technique, et pas une fin en soi.
Par exemple réussir un kata et surtout utile quand on parvient ensuite à intégrer ce qu’on a appris dans un projet.
(Je parle bien entendu du cas où on fait des katas dans un but utilitaire, si on choisit de faire un kata comme une fin en soi, c’est tout à fait défendable, mais il ne faut pas s’imaginer que l’apport est le même.)
Mon sentiment est que parfois, on inverse la situation et on peut commencer à voir le fait de coder sur des projets comme avant tout une opportunité de trouver la bonne manière d’appliquer des katas.
Cela peut se manifester par une insatisfaction quand on ne parvient pas à dérouler tel ou tel modèle qu’on aime tant à cause des contraintes ou des besoins d’un projet, ou par l’envie, dès qu’on se trouve dans une situation inédite, de trouver un kata à appliquer plutôt que de concevoir une solution.
Pour celles et ceux qui ont connu cette époque, cela me rappelle un peu la situation quand les design patterns faisaient fureur.
Comme pour les design pattern, le name-dropping de kata est un très bon moyen d’afficher sa connaissance technique, ou du moins d’afficher une certaine forme de connaissance technique valorisée par un certain groupe de personnes.
Je n’ai pas de grande morale pour conclure : les projets informatiques sont parfois difficiles et je comprends tout à fait qu’on préfèrerait que le développement consiste moins souvent à choisir entre plusieurs solutions tortueuses, laquelle est la moins pire.
Cependant, il n’existe pas (à ma connaissance en tous cas), de championnat officiel de kata informatique qui récompenserait la seule maîtrise des katas, et il est donc important de ne pas se mentir sur les apports de cet outil qui reste un moyen et non pas une fin.
Cela signifie aussi qu’il faut prendre avec un grain de sel les avis des personnes qui aiment un peu trop collectionner et mentionner les katas quand elles donnent leur avis sur du code projet et en particulier dans les domaines qu’elles ne connaissent que via ce type d’exercice.