Agile france 2013 - Dette Technique

71
La dette technique Francois Wauquier @wokier Aurélien Pelletier @toutantic #AgileFrance

description

Tenir un engagement et s’endetter techniquement ou ne pas transiger sur la qualité. Qui n’a jamais été confronté à ce dilemne ? La dette technique est une puissante métaphore, présenté par Ward Cunningham en 1992 pour symboliser le fait que la dette s’accumule et que les interêts sont de plus en plus importants. Pourtant cette dette est encore floue pour beaucoup d’équipes. Et il y a un lien évident mais parfois ignoré entre qualité et vélocité. En faisant toujours le choix de la dette, le risque est se rapprocher d’un code legacy dont l’équipe a perdu le contrôle. Cette présentation en binôme vous donnera des clés pour visualiser et maitriser votre qualité avec de grandes exigences tout en restant concret et pragmatique. Nous vous proposerons différentes stratégies pour faire face à ce dilemme. Nous montrerons des exemples et des outils en java. Que votre application ait un mois ou 10ans, en repartant de cette session vous aurez des outils, des pratiques et du vocabulaire pour faire vos choix en connaissance de cause. Devenez un fin gestionnaire de votre patrimoine de code.

Transcript of Agile france 2013 - Dette Technique

Page 1: Agile france 2013 - Dette Technique

La dette technique

Francois Wauquier @wokierAurélien Pelletier @toutantic

#AgileFrance

Page 2: Agile france 2013 - Dette Technique

C'est la crise !

Page 4: Agile france 2013 - Dette Technique

3,93 % TEG FIXE

Page 5: Agile france 2013 - Dette Technique
Page 6: Agile france 2013 - Dette Technique
Page 7: Agile france 2013 - Dette Technique
Page 8: Agile france 2013 - Dette Technique
Page 9: Agile france 2013 - Dette Technique

Entropie logicielle

Entropie

Temps

Page 10: Agile france 2013 - Dette Technique

Entropie logicielle

Entropie

Temps

Page 11: Agile france 2013 - Dette Technique

Entropie logicielle

Entropie

Temps

Page 12: Agile france 2013 - Dette Technique
Page 13: Agile france 2013 - Dette Technique

Vélocité / Dette Technique

Temps

Page 14: Agile france 2013 - Dette Technique

Vélocité / Dette Technique

Temps

Page 15: Agile france 2013 - Dette Technique

Vélocité / Dette Technique

Temps

Page 16: Agile france 2013 - Dette Technique

Vélocité / Dette Technique

Temps

Page 17: Agile france 2013 - Dette Technique

Vélocité / Dette Technique

Temps

Page 18: Agile france 2013 - Dette Technique

Délais pour corriger un bug en production

● Minute● Heure● Jour● Semaine● ...

Page 19: Agile france 2013 - Dette Technique

Taille du Bug Tracker

Page 20: Agile france 2013 - Dette Technique

Temps d'intégration d'un nouveau développeur

Page 21: Agile france 2013 - Dette Technique

Build long

http://xkcd.com/303/

Page 22: Agile france 2013 - Dette Technique

Environnement obsolète

Page 23: Agile france 2013 - Dette Technique

Quadrant de Martin Fowler

Aventureux Prudent

Délibéré Pas le temps de designer

Nous devons livrer et assumer

Négligeant C'est quoi ces couches ?

Nous savons maintenant

comment nous aurions du faire

Page 24: Agile france 2013 - Dette Technique

Dette technique

Page 25: Agile france 2013 - Dette Technique

Vélocité en chute libre

Page 26: Agile france 2013 - Dette Technique

Faillite

Page 27: Agile france 2013 - Dette Technique

Motivation

Page 28: Agile france 2013 - Dette Technique

Problème

Page 29: Agile france 2013 - Dette Technique
Page 30: Agile france 2013 - Dette Technique

Planning Game

Complexité

XLValeur métier

0

Page 31: Agile france 2013 - Dette Technique
Page 32: Agile france 2013 - Dette Technique
Page 33: Agile france 2013 - Dette Technique

Comportements d'équipe● Endettement● Economie● Remboursement

Page 34: Agile france 2013 - Dette Technique

[Effet]

[Description...]

[Avantage] [Inconvénient]

[Pattern]

S M L

Page 35: Agile france 2013 - Dette Technique

ComportementsEndettement

Page 36: Agile france 2013 - Dette Technique

Livrer des story 'presque fini'

Endettement

Faire la demo, livrer mais ne pas clore la story pour rattrapper le retard dans le sprint suivant

+ Client est content

M

Page 37: Agile france 2013 - Dette Technique

Sprint de livraison

Endettement

Réaliser des story 'presque finie' et dédier un sprint à la préparation de la mise en production.

- Casse le rythme

L

Page 38: Agile france 2013 - Dette Technique

Story Technique

Endettement

● Intégrer au backlogdes Story Technique● Valeur métier : 0● Définir des règlesavec le PO

+ Endettement visible

Visible Invisible

Valeur Métier Forte

User Story Architecture

Valeur Métier Faible

Bug Story Technique

L

Page 39: Agile france 2013 - Dette Technique

Livrer et oublier

Endettement

Livrer 'en l'état' à la fin du sprint

- Le code n' oubliera pas...

L

Page 40: Agile france 2013 - Dette Technique

Livrer et oublier

Endettement

Livrer 'en l'état' à la fin du sprint

- Le code n' oubliera pas...

Page 41: Agile france 2013 - Dette Technique

ComportementsEconomies

Page 42: Agile france 2013 - Dette Technique

"Definition Of Done" forte

Economies

Ne pas livrer une story qui ne respecte pas tous les critères Done Done

+ Qualité- Risque de paralysie

Page 43: Agile france 2013 - Dette Technique

TDD

Economies

● Test● Code● Refactor

+ Couverture+ Documentation+ Design

Page 44: Agile france 2013 - Dette Technique

Binomage

Economies

Page 45: Agile france 2013 - Dette Technique

Revue de code à chaud

Economies

Revue sur place avant commit

+ Au plus proche

Page 46: Agile france 2013 - Dette Technique

Revue de code à froid

Economies

Revue à distance● Pull Request● Document de revue de code

+ Outillage- Moins formateur que Binômage

Page 47: Agile france 2013 - Dette Technique

Quick Start

Economies

● Documentation proche du code○ README / Getting started

● Utilisation de standards○ git clone○ vagrant up○ mvn clean install○ mvn jetty:run

+ Gain de temps d'intégration d'un nouveau

○ bower install○ npm install○ grunt server

Page 48: Agile france 2013 - Dette Technique

Règles de code

Economies

● Style● Design

○ Single Responsibility Principle○ Couches / Couplage faible○ Communication adaptée

+ Facilité lecture de code+ Détection Bug simples

Page 49: Agile france 2013 - Dette Technique

ComportementsRemboursement

Page 50: Agile france 2013 - Dette Technique

Remboursement Opportuniste

Remboursement

Profiter d'une évolution fonctionnelle pour rembourserSeule la User Story est visibleRien ne se fait sans valeur métier associée

+ Transparent

L

Page 51: Agile france 2013 - Dette Technique

Remboursement Opportuniste

Remboursement

Profiter d'une évolution fonctionnelle pour rembourserSeule la User Story est visibleRien ne se fait sans valeur métier associée

+ Transparent

L

Page 52: Agile france 2013 - Dette Technique

Remboursement

"Le camp doit être plus propre que lorsque l'on est arrivé"

Baden Powell

+ Amélioration progressive- Pas visible

SBoy Scout

Page 53: Agile france 2013 - Dette Technique

Refactoring

Remboursement

Remaniement de code pour● le rendre plus lisible ● éviter les duplications● faciliter la maintenance● permettre l'extension

+ Qualité- Nécessite bonne couverture AVANT

L

Page 54: Agile france 2013 - Dette Technique

Bug DayEconomie

L

Page 55: Agile france 2013 - Dette Technique

Objectif de couverture

Remboursement

Définir un nouveau seuil minimum de couverture

+ Rattrape le retard

L

Page 56: Agile france 2013 - Dette Technique

Automatiser

Remboursement

● Livraison● Tests Fonctionnels● Documentation● Installation Poste Dev

+ Gain temps- Coût du Ticket d'entrée

L

Page 57: Agile france 2013 - Dette Technique

Accélérer

Remboursement

Accélérer ce qui est déjà automatisé

Définir stratégie de tests automatiques

+ Gain temps

S

Page 58: Agile france 2013 - Dette Technique

Migration Version

Remboursement

● Suivre les versions stables par petit pas

+ Bénéficier des corrections

S

Page 59: Agile france 2013 - Dette Technique

OutilsAnalyse de code

Page 60: Agile france 2013 - Dette Technique

Informatif

Page 61: Agile france 2013 - Dette Technique

Analyse de code (informatif)

● IDE vérification active● IDE vérification à la demande● Contrôle durant IC build séparé● Outils Externe (ex: Sonar)

Distance du développeur

IDE Intégration Continue

Outil Externe

Build Local

Page 62: Agile france 2013 - Dette Technique

Poka Yoke

Page 63: Agile france 2013 - Dette Technique

Poka Yoke

Page 64: Agile france 2013 - Dette Technique

Analyse de code (Poka Yoke)

● Contrôle durant IC build principal● Contrôle au commit

○ Server-less Continuous Integration○ Unbreakable build

Distance du développeur

IDE Intégration Continue

Outil Externe

Build Local

Page 65: Agile france 2013 - Dette Technique
Page 66: Agile france 2013 - Dette Technique
Page 67: Agile france 2013 - Dette Technique
Page 68: Agile france 2013 - Dette Technique
Page 69: Agile france 2013 - Dette Technique

Do Thing Right, but...

DoRightThing

DoThingRight

Fast

Page 70: Agile france 2013 - Dette Technique

Merci

Francois Wauquier @wokierAurélien Pelletier @toutantic

#AgileFrance