C’est quoi TDD (test driven development) ?
Qu’est-ce que le TDD et comment cela peut améliorer votre développement ?
Le test Driven Development, TDD pour les intimes, est un processus de développement de plus en plus utilisé dans les équipes de développement.
TDD permet de développer les différentes fonctionnalités d’un projet de manière itérative. On appelle cela faire des baby-steps. Ce principe permet de découper la complexité d’un programme en se basant sur une seule problématique à la fois.
En appliquant cette technique, les développeurs et développeuses obtiennent un super pouvoir qui permet de faire “pause” à tout moment dans l’écriture de leur code. Cette pause est le moment idéal pour réfléchir sur ce que l’on fait, prendre des décisions métiers et techniques et appliquer plus facilement les autres compétences de développement que l’on maîtrise.
TDD, le grand quiproquo des développeurs
Cette technique est un éternel débat dans le monde du développement. On considère plusieurs groupes :
- Ceux qui ne connaissent pas
- Ceux pour qui ça ne marche pas
- Ceux qui trouvent ça overkill
- Ceux qui ne jurent que par cette technique
- Les autres
Le premier groupe ne prend pas part à la discussion, c’est évident, mais le second et le troisième existent parce qu’il y a une incompréhension sur ce qu’est réellement TDD. En réalité, cette technique est simple et peut s’utiliser dans beaucoup de cas.
Mais la simplicité disparaît avec l’apparition du quatrième groupe, ceux qui ne jurent que par cette technique. En effet, en devenant des maîtres de l’art, ils transforment TDD en technique de haut niveau.
Cela est dû au fait que TDD a d’excellentes synergies avec les techniques avancées de développement. C’est d’ailleurs pour cette raison que je vous encourage à découvrir cette technique.
Pourquoi pratiquer TDD ?
Pour les synergies justement. Le pouvoir de mettre sur “pause” pendant le développement nous donne tout le temps nécessaire pour analyser la situation et prendre la meilleure décision, en fonction du contexte et de nos capacités.
Imaginez, vous jouez au foot, vous êtes devant les cages et là, vous mettez sur pause. Vous avez l’occasion d’analyser où sont les défenseurs, où est le goal, où est le ballon. Les chances de réussir votre tir augmentent drastiquement, parce que vous avez désormais le temps. Le temps de choisir. Vous pouvez tirer, faire une passe ou dribbler, à vous de choisir la meilleure solution en fonction de vos compétences.
En apprenant TDD, vous ne deviendrez pas meilleur en design, en test, en algorithmie ou en architecture. Mais vous obtiendrez la capacité de sublimer chacune de ces compétences (et bien d’autres), actuelles ou que vous assimilerez dans le futur.
Comment apprendre TDD ?
Il y a plusieurs manières pour apprendre TDD.
J’ai constaté que la plupart du temps, on aborde la méthode en même temps que ses synergies. Et cela fonctionne, puisqu’il y a de plus en plus de monde qui pratique TDD. Cependant, cette méthode requiert un énorme investissement en temps et en effort. Ce n’est qu’à la fin d’une formation intense que l’on peut appliquer ce que l’on a appris. Dans ce genre de cas, ce n’est pas TDD que l’on apprend mais la technique du formateur ou de la formatrice. Vous apprenez à développer comme cette personne.
Mon approche est différente !
Vous découvrez la base de la méthode TDD, celle qui permet de faire des baby-steps en étudiant le concept des 3 lois de TDD. L’objectif est de commencer à appréhender la puissance du développement itératif et de l’intégrer dans votre travail quotidien. Sur le papier, cela paraît simple, mais en règle générale, l’approche est déroutante, en particulier pour les développeurs expérimentés.
Vous verrez ensuite le cycle RED-GREEN-REFACTORING et les synergies de base qui vont avec comme les tests et le refactoring. Ces compétences sont en fait deux thématiques complexes dans le monde du développement, nous n’aborderons que les points essentiels à TDD.
La formation se poursuit par une série de travaux pratiques en alternant avec des exercices (que l’on nomme katas) et des cas concrets issus de vos projets. Le but est d’intégrer ces nouveaux concepts à votre technique de tous les jours, sans chambouler vos habitudes.
Une fois passée cette étape, on continue avec une présentation des synergies plus avancées, comme le design du code ou l’architecture. Celles-ci vous donneront des axes d’apprentissage à suivre par la suite une fois que vous êtes à l’aise.
Résumé des avantages de la méthode TDD
En apprenant le Test Driven Development, vous multiplierez la valeur de votre bagage technique. Une fois habitués à cette méthode, vous serez en mesure de mettre en place un nouveau process dans vos développements. Les choses complexes deviendront plus simples, les erreurs moins nombreuses et le stress de gérer plusieurs choses à la fois vont disparaître petit à petit.
Le meilleur moment pour apprendre TDD était lorsque vous avez commencé à coder. Le deuxième meilleur moment est maintenant.
N’attendez plus, améliorez votre processus de développement !