Le découpage vertical divise une histoire en fonction des résultats attendus par les utilisateurs ; le découpage horizontal la divise en fonction des couches techniques. Ce choix unique détermine si chaque tranche aboutit à un résultat concret ou non. Les tranches verticales apportent de la valeur. Les tranches horizontales apportent des promesses.

La découpe horizontale, c’est comme lorsque l’on coupe la pâte au couteau : on obtient deux moitiés vides.

La différence

Le découpage horizontal s’effectue selon les couches architecturales : le front-end lors de ce sprint, le back-end lors du suivant, la base de données lors du sprint d’après. Le travail s’inscrit dans les sprints, mais aucun sprint ne produit à lui seul un résultat concret pour les utilisateurs. Les chiffres de vélocité de l’équipe augmentent ; le journal des modifications destiné aux utilisateurs reste vide.

Le découpage vertical s’effectue en fonction des résultats pour l’utilisateur. Une tranche fine qui touche toutes les couches : un seul bouton qui fonctionne réellement de bout en bout, même s’il ne gère qu’un seul cas d’entrée. L’équipe livre moins par tranche, mais chaque tranche est un élément concret et prêt à être livré. Le journal des modifications se remplit, les utilisateurs constatent les progrès, et l’équipe peut ajuster son cap en fonction de l’utilisation réelle plutôt que de l’utilisation prévue.

A layered cake split horizontally versus the same cake split vertically Horizontal Vertical UI Logic Data → shipped nothing for users until all three land UI Logic Data slice 1 ships end-to-end, on its own sprint 1: nothing usable sprint 1: working slice
Les tranches horizontales sont transmises couche par couche. Les tranches verticales transmettent une colonne active : un peu de chaque couche, immédiatement utilisable.

Lorsque le découpage horizontal semble nécessaire

Ce n’est généralement pas le cas. « Nous avons besoin du schéma de la base de données avant de pouvoir développer l’interface utilisateur » est l’argument classique, et il cède presque toujours la place à « nous pouvons coder en dur la réponse, livrer l’interface utilisateur et créer la base de données lors de la prochaine itération ». Le malaise lié à la livraison d’un faux backend est bien réel, mais il est moindre que celui de ne rien livrer pendant trois sprints.

L’exception : le travail de base sur les plateformes

Certaines infrastructures ne disposent d’aucune partie accessible aux utilisateurs tant qu’elles ne sont pas achevées : migration vers un nouveau fournisseur d’authentification, remplacement du backend d’une file d’attente, refonte du pipeline de déploiement. Il s’agit là de projets, et non de « stories ». Traitez-les comme tels : ne les divisez pas horizontalement pour faire semblant. Évaluez-les à l’échelle d’un projet, communiquez le calendrier et acceptez que la vélocité de l’équipe reflète l’investissement nécessaire. Présenter une migration s’étalant sur trois sprints comme trois « stories » ne fait que tromper le graphique de progression.

Si une « slice » ne fournit rien dont un utilisateur puisse se servir, ce n’est pas une « slice ».

Foire aux questions

Qu’est-ce que le découpage vertical dans la méthode agile ?

Le découpage vertical consiste à diviser une fonctionnalité en fonction des résultats attendus par l’utilisateur, de sorte que chaque tranche corresponde à une coupe fine traversant toutes les couches (interface utilisateur, logique et données) et qui apporte à l’utilisateur quelque chose de concrètement utilisable, même si elle ne traite qu’un seul cas de figure. Chaque tranche peut faire l’objet d’une mise en production indépendante.

Quelle est la différence entre le découpage horizontal et le découpage vertical ?

Le découpage horizontal s’effectue par couche technique : un sprint est consacré au front-end, le suivant au back-end ; ainsi, aucun sprint ne produit à lui seul un résultat exploitable par l’utilisateur. Le découpage vertical s’effectue en fonction du résultat attendu par l’utilisateur ; ainsi, chaque tranche fournit un parcours fonctionnel de bout en bout. Les tranches verticales apportent de la valeur ; les tranches horizontales apportent des promesses.

Pourquoi le découpage vertical est-il préférable ?

En effet, chaque tranche constitue un élément concret et livrable. Le journal des modifications s’étoffe, les utilisateurs constatent les progrès réalisés et l’équipe peut ajuster son cap en fonction de l’utilisation réelle plutôt que de l’utilisation prévue. Le découpage horizontal permet d’augmenter les chiffres de vélocité tout en conservant inchangé le produit destiné aux utilisateurs pendant plusieurs sprints d’affilée.

Dans quels cas le découpage horizontal est-il acceptable ?

Lorsque le travail concerne des éléments fondamentaux de la plateforme et qu’aucune partie visible par l’utilisateur n’est prête avant l’achèvement du projet : migration des fournisseurs d’authentification, remplacement du backend de file d’attente, remplacement du pipeline de déploiement. Il s’agit là de projets, et non de « stories » : évaluez-les en tant que tels et communiquez le calendrier prévu, au lieu de faire comme s’ils pouvaient être fractionnés.

Lectures complémentaires