Aller au contenu principal

15. Découper un changement pour apprendre plus vite

Pourquoi ce chapitre existe

Un changement trop large mélange habituellement plusieurs inconnues : règle métier, modèle de données, contrat externe, migration et déploiement. Lorsqu'il échoue, personne ne sait laquelle est en cause. À l'inverse, découper arbitrairement par couche — d'abord la base, puis l'API, puis l'interface — peut produire des livraisons qui ne créent aucune valeur et dont l'intégration reste risquée.

Le bon découpage réduit simultanément le temps de feedback et le rayon d'action, tout en conservant un comportement compréhensible. Il ne consiste pas à faire des tickets minuscules ; il consiste à produire de petits engagements cohérents.

Les idées essentielles

  • Un lot est petit lorsqu'il limite une hypothèse à vérifier, pas seulement lorsqu'il contient peu de lignes.
  • Une tranche verticale traverse ce qui est nécessaire pour rendre un comportement observable, même si elle reste volontairement limitée.
  • Les prérequis techniques sont légitimes lorsqu'ils réduisent un risque précis et possèdent une suite identifiable.
  • Le découpage doit préserver l'intégrabilité : chaque étape doit pouvoir être fusionnée, déployée et comprise indépendamment.

Découper par incertitude et par risque

La première question est rarement « quelles tâches techniques faut-il créer ? ». C'est plutôt : quelle hypothèse, si elle est fausse, rendrait le plan dangereux ou inutile ? Pour une nouvelle règle de prix, l'incertitude déterminante peut être le comportement sur l'historique. Pour une intégration, ce peut être l'idempotence du partenaire. Pour une interface, ce peut être le parcours réel des utilisateurs.

Un premier incrément doit apporter une preuve sur cette inconnue, avec une exposition limitée. Il peut être une lecture seule, un calcul comparé à l'ancien, une activation interne ou un traitement sur un échantillon. Ce n'est pas une « demi-fonctionnalité » : c'est une décision délibérée d'apprendre avant d'engager tout le système.

Découpage fragilePourquoi il échoueDécoupage utile
« Créer toutes les tables »Fige le modèle avant la règleAjouter une structure compatible pour un scénario réel
« Extraire le service »Déplace code, réseau et données en une foisIsoler un contrat puis détourner un flux à faible risque
« Faire l'UI »Donne un aperçu sans prouver le comportementRendre un parcours limité réellement exécutable de bout en bout
« Migrer tout l'historique »Rend le rollback et le diagnostic difficilesMigrer par lots avec rapprochement et seuil d'arrêt

Préserver l'état intégrable

Un travail est intégrable lorsque son état intermédiaire ne casse pas le système et n'exige pas une coordination cachée pour être déployé. Les techniques de compatibilité, de flag et de code mort temporaire peuvent aider ; elles doivent être utilisées pour créer des points de contrôle, non pour reporter indéfiniment l'intégration.

Anti-patterns

Réduire la taille en séparant les responsabilités

Une PR de schéma, une PR de backend et une PR d'interface peuvent être courtes sans être indépendantes. Si elles ne deviennent correctes qu'ensemble, la véritable unité de risque reste grande. Les étapes doivent pouvoir être examinées et déployées dans un ordre sûr.

Construire le socle général avant le premier usage

Une fondation abstraite semble préparer l'avenir, mais elle consomme du temps sans confronter les hypothèses à un comportement réel. Préférer un premier usage qui contraint l'abstraction ; extraire ensuite ce qui se répète pour une raison démontrée.

Laisser un flag sans propriétaire

Un flag facilite l'activation graduelle. Sans critère de retrait, il devient une branche permanente de comportement et double la charge de test. Son cycle de vie doit être une partie du changement, pas une tâche facultative.

Bonnes pratiques

Énoncer le résultat de chaque lot

« Ajouter une colonne » décrit une activité. « Permettre au système de lire deux versions de la préférence sans changer encore son écriture » décrit un état sûr et le but de l'étape. Cette formulation aide la revue, le déploiement et la décision sur la suite.

Terminer une tranche avant d'ouvrir la suivante

Un découpage efficace ne multiplie pas les chantiers partiellement intégrés. Il crée une boucle : hypothèse, petit engagement, preuve, apprentissage. Une équipe garde ainsi le contexte et réduit la quantité de travail qui devra être réconciliée plus tard.

Checklist — Un lot est-il réellement petit ?

  • Quelle hypothèse ou quel risque ce lot réduit-il précisément ?
  • Quel comportement ou quel signal rendra son résultat observable ?
  • Peut-il être fusionné et déployé sans dépendre d'un autre lot non livré ?
  • Quelle compatibilité, configuration ou donnée provisoire introduit-il ?
  • Quel critère déclenche l'étape suivante, la correction ou l'arrêt ?
  • Que faudra-t-il retirer une fois la transition réussie ?

À retenir

Découper n'est pas fragmenter. C'est construire une série de changements intégrables qui transforment les inconnues importantes en preuves, tout en limitant ce qui peut casser à chaque étape.