Jeudi dernier avait lieu une nouvelle session du
Lava JUG :
Organisation, Méthode, Devops, Usines logicielles,… avec
Dimitri Baeli.
Dimitri a travaillé pendant 3 ans comme responsable qualité chez
ExoPlatform, éditeur open source, avant de prendre la tête de l’équipe R&D de
LesFurets.com. Il organise aussi plusieurs événements dans le domaine du développement logiciel comme
Lean & Kanban France et l’Agile Tour Rouen.
Le sujet de la conférence de Dimitri était de nous présenter la transformation opérée dans l’équipe R&D de LesFurets.com depuis son arrivée en passant d’un cadre d’éditon logicielle Scrum à un mode de gestion par flux.
Sa présentation était articulée en deux parties: pourquoi ce changement et comment y arriver.
Le but de cette transformation était de réduire le temps entre le développement d’une fonctionnalité et sa mise à disponibilité au client (Time to Market).
Avec la gestion de projet en place à l’arrivée de Dimitri, les fonctionnalités étaient délivrées par sprint d’un mois. Les fonctionnalités développées en début de sprint attendaient donc plusieurs semaines avant d’être déployées en production.
L’équipe a donc commencé à se transformer par petites touches pour tendre vers un modèle de déploiement continu et ainsi livrer une fonctionnalité prête au plus tard une journée après son développement.
Pour arriver à cela, Dimitri et son équipe ont fait pas mal de recherches sur des bonnes pratiques et des méthodes à mettre en place telles que le continuous delivry, kanban, lean, etc.
Ils ont aussi modifié leurs outils et le changement leur ayant apporté le plus de valeur ajoutée fut le passage de Subversion à Git. En effet, plus qu’un changement d’outil de gestion de version, cette transition fut pour eux le début d’un changement de philosophie dans leur processus de développement. La facilité qu’apporte Git dans le maniement des branches leur a permis d’en faire une utilisation massive.
Avec Subversion, tout le monde développait dans Trunk et une branche était créée pour la livraison. Ainsi, les deadlines étaient inévitables afin de synchroniser les développements de chacun, avec comme inconvénient que les fonctionnalités non prêtes devaient être désactivées d’une manière ou d’un autre.
En passant à Git, ils ont renversé la situation en faisant de la branche master la branche de livraison et en créant une branche par fonctionnalité à développer, modèle simplifié inspiré du
modèle de branches Git de
Vincent Driessen. Ainsi chaque fonctionnalité terminée est fusionnée sur master et prête à être livrée. Un job de compilation, l’
octopus, permet de s’assurer que toutes les branches fusionnent bien avant de les basculer vers master.
En conclusion, ce que je retiendrai en premier lieu de cette présentation est le temps et les moyens investis par Dimitri et son équipe dans l’amélioration continue de leurs pratiques, qui a vraiment été la clé de leur réussite et que l’on néglige parfois trop souvent !
Merci au Lava JUG et à Dimitri Baeli pour cette agréable soirée !