La démonstration de katas alimente une discussion récurrente depuis quelques
séances : bien que la combinaison d'un développement piloté par les tests et
d'un remaniement impitoyable amène à une conception émergeante, une telle
démarche permet-elle de "re-découvrir" des algorithmes classiques ? En d'autres
termes : face à un problème algorithmique donné, peut-on monter l'algorithme
complet depuis une approche naïve, strictement "bottom-up", s'intéressant à
faire passer un à un les tests de recette caractérisant cet algorithme ?
Je n'ai pas encore la réponse, mais je soupçonne que la réponse n'est pas aussi
simpliste. En ayant répété le kata à l'avance, la personne qui le présente ne
cherche plus à "découvrir" quel est l'algorithme, mais à l'amener de façon la
plus naturelle qui soit à son assistance. Un peu comme un écrivain peut avoir en
tête un scénario, et cherche à raconter une histoire à son lectorat sans que
celui-ci est l'impression que les actions des protagonistes soient "forcées", à
rebrousse-poil de leur psychologie et du contexte exposés. Bien avant
l'originalité, c'est sur ce critère que je fonde mon appréciation d'une
histoire, qu'il s'agisse d'un film, d'une nouvelle ou d'un feuilleton.
Je commence à entrevoir un aspect important d'une démonstration de kata. Il me
semble inutile de "faire croire" à mon assistance que je ne connais pas
l'algorithme que je vais dérouler, par contre si je l'amène élément par élément,
je peux donner à l'assistance l'opportunité de le "(re)découvrir". Si chaque
test de recette est une opportunité pour amener de nouveaux éléments à mon
algorithme, il m'importe de trouver la manière qui me permet de planter chaque
nouvel élément de la façon la plus innocente qu'il soit, et ne le développer
que dans pour des tests de recette ultérieurs. Je sens une plus-value narrative
à amener chaque élément de mon code comme autant d'intrigues secondaires, qui
ne passent au premier plan que par la suite. L'attention de mon assistance est
accrue, et le scénario/algorithme que je dévoile peu à peu est d'autant mieux
retenu, d'autant plus facile à retenir, d'autant plus apte à susciter un
feedback pertinent.