Retour d'expérience du travail en Kanban d'une équipe de 20 développeurs et l'impact sur les besoins d'organisation du code.
Quelques spoilers :
1/ De façon aussi logique chaque fonctionnalité est développée de façon totalement indépendante du reste (carte kanban)
2/ Vous avez dit tout sur des branches ? Mais vous êtes fous !! Cette organisation contre intuitive permet en fait de livrer à tout moment ce qui est prêt (Continuous Delivery)
3/ Mais comment vous évitez les conflits et risque de bloquage entre deux fonctionnalités ? Notre secret est un d'avoir un outillage pensé et adapté pour détecter les incompatibilités et nous aider à garder chaque travaux indépendants
Depuis bientôt 3 ans nous avons un rythme de mise en production d'environ 1000 branches par an en 250 releases par an, pour une équipe de 25 développeurs sur le même repository de code.
http://lanyrd.com/2017/agilefrance/sfrhrk/
8. @YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli
Leçon #1 : Livrer tôt, livrer souvent
• L’intention: réduire le délai
• Pouvoir livrer quand c’est prêt
• Faire des petits lots
• Impacte l’organisation
• Gestion du code source
• Organisation de la qualité (autonomie des développeurs)
• Fail fast, Fail safe:
• Echouer vite (si echec), échouer seul
10. Lean Kanban
1. Visualiser le travail
2. Limiter l’encours de travail (Limit WIP)
3. Mesurer et gérer le flux
4. Rendre les règles explicites
5. S’engager dans une Amélioration Continue
6. Encourager Leadership
10
12. 1 - Visualiser le travail
• Tableau de pilotage et cartes kanban
• Lignes d’eau, Files d’attentes
• Customisation des cartes
• Rendre visible l’état du projet
12
Règles
Indicateurs
13. 2 - Limiter le WIP
• Work in Progress (WIP)
• Limiter le nombre d’élements (min / max)
• Bien visibles et respectées
• Réglées pour fluidifier
13
41. @YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli
Kanban as Code
Règles :
• # Une fonctionnalité livrable par carte kanban (indep.)
• # Une modification du code par carte (indep.)
• # Pouvoir livrez ce qui est prêt
• # Limiter le nombre de Cartes (flux tiré)
Pourquoi ça marche ?
• # Assure l’indépendance des taches (non adhérence)
• # Risques très faibles de conflits sur 500.000 lignes de code
• # Détection non bloquante des conflits
60. @YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli
Nos Stratégies d’évitement de conflit
1. Eviter d’avoir des zones de conflit (dette technique)
2. Modifier une des branches
3. Supprimer une des branches (mise en attente)
4. Fusionner les branches (date de sortie commune)
5. “Rebase” d’une branche sur l’autre (sortie en séquence)
6. Publier une résolution de conflit (git-octopus)
65. @YourTwitterHandle@YourTwitterHandle@beastiefurets@dbaeli
Le Continuous Merge
• Garder les fonctionnalités séparées jusqu’au dernier moment
• Alors que tout le monde les fusionne par défaut !!!
• Merge Continu (comme outil de test):
• Détecter les conflits (sans être bloqué — build incassable)
• Laisse le temps d’éviter les conflits
• Autorise à jeter facilement, ou mettre de côté sans frais
• Bonus:
• Le code non terminé n’est pas accessible aux autres !