un désalignement concernant l’état de l’art qui prévalait au début du projet, désalignement qui s'est produit lorsque l'équipe en charge a ignoré, omis, ou délibérément oté de sa boîte à outil, la pratique consistant à écrire des [Tests Isolés].
Il est possible que le projet initial était si élémentaire que personne n’a ressenti le besoin de spécifier et vérifier à l'aide de tests isolés sa compréhension de chaque partie du code.
Il est possible que les développeurs se sont naïvement fait la promesse que ce programme sera un « one-shot », qu'il ne fera jamais l'objet d'une évolution ou d'une réutilisation au sein d’un système plus important.
Il est possible qu'ils ne maîtrisaient pas suffisamment les techniques de test unitaire, de mocking, de refactoring et pensaient que la stratégie habituelle « quelques tests d’intégration et de recette » conviendrait.
Une fois que la douleur induite par l'absence de tests isolés s'impose à l'équipe, il est souvent trop tard pour changer simplement de trajectoire. En effet, un projet accablé par les régressions, les retards chroniques et les corrections en urgence n'est pas le meilleur environnement pour acquérir de nouvelles compétences, parce que cela implique inévitablement de ralentir le rythme et de faire des erreurs.
La question de savoir comment remédier à une situation de projet sans tests ressemble à toute tentative de récupération d'un projet en échec stratégique : embrasser du regard l'étendue de l'échec, et commencer immédiatement à réparer les parties du processus qui ont causé cet échec, tout en gérant les attentes avec lucidité. Au lieu de nier la situation en remettant perpétuellement au lendemain le travail nécessaire à une sécurisation de la base de code, il vaut mieux admettre un échec, comptabiliser les pertes, et préparer les parties prenantes à des résultats insuffisants et plus lents à venir.
Quelles que soient les techniques que les développeurs ont besoin d'acquérir et de commencer à pratiquer : test unitaire, refactoring, tests de caractérisations, approval tests, mocks etc., rien ne leur permettra de s'améliorer tout en maintenant leur niveau habituel de productivité. Aussi vrai que "on irait plus vite sans tous ces bugs et ces problèmes de dépendances", il est certain qu'atteindre un nouveau plateau de pratiques et de process ne se fait pas en un jour.
Après tout, serait-ce réaliste de ma part de vous dire: Oui, je pars avec vous faire cette randonnée et dans le même temps je m'achèterai ou je me confectionnerai une nouvelle paire de chaussures ?