Agile Tour Toulouse jl-letouzey

36
GESTION DE LA DETTE TECHNIQUE Jean-Louis LETOUZEY Lead de l'initiative « Technical Debt » de l'Agile Alliance Auteur de la méthode SQALE pour manager la D.T. Expert consultant chez Inspearit [email protected]

Transcript of Agile Tour Toulouse jl-letouzey

Page 1: Agile Tour Toulouse jl-letouzey

GESTION DE LA DETTE TECHNIQUE

Jean-Louis LETOUZEYLead de l'initiative « Technical Debt » de l'Agile AllianceAuteur de la méthode SQALE pour manager la D.T.Expert consultant chez Inspearit

[email protected]

Page 2: Agile Tour Toulouse jl-letouzey

• L’Agile Alliance• Le concept de Dette Technique• L’initiative “Technical Debt” de l’Agile Alliance• Le jeu “Dice of Debt”• Les autres apports de l'initiative• Les travaux en cours

Agenda

Page 3: Agile Tour Toulouse jl-letouzey

L’Agile Alliance • L’Agile Alliance

• Créée par les signataires du manifeste agile• Plus de 23.000 membres• Un nouveau site qui attire plus de 50.000 utilisateurs par

mois • LA conférence Agile : 2.500 participants• Devient de plus en plus globale (Agile Europe en Pologne,

Agile Brésil)

Page 4: Agile Tour Toulouse jl-letouzey

• L’Agile Alliance• Le concept de Dette Technique• L’initiative “Technical Debt” de l’Agile Alliance• Le jeu “Dice of Debt”• Les autres apports de l'initiative• Les travaux en cours

Agenda

Page 5: Agile Tour Toulouse jl-letouzey

A practical definition• The feeling that, over time, writing or maintaining code is like running

through mud.

5Et vous, jusqu’où ? (1…. à 5)

Page 6: Agile Tour Toulouse jl-letouzey

A textbook definition• What is technical debt?

• The increased difficulty in writing new code, or maintaining code, that is the natural result of…

• Shortcuts• Bad coding practices• Hacks• Other times when you wish, in hindsight, you had coded more carefully

6

Page 7: Agile Tour Toulouse jl-letouzey

7

You now Future you

I’M GETTING TONS OF CODING DONE!

WHEEEEEE!

everything about the code is too hard

Page 8: Agile Tour Toulouse jl-letouzey

• “With borrowed money you can do something sooner than you might otherwise, but until you pay back that money you will pay interest.

• “I thought borrowing money was a good idea. I thought that rushing software out the door to get some experience with it was a good idea. But that of course you would eventually go back and as you learned things about that software you would repay that loan by refactoring the program to reflect your experience as you acquired it.”

8

Page 9: Agile Tour Toulouse jl-letouzey

How do you create it?• Very easily, and here are a few common

examples• “I didn’t have the time to write a simpler

class…”• “No time to re-think the design of the class, • just keep adding new stuff to it!”• No time to think about how • someone else will fix or extend the code• No code review leads to culture of sloppiness• Didn’t think of the impact of generic error

handling• Many other sources

9

Page 10: Agile Tour Toulouse jl-letouzey

• L’Agile Alliance• Le concept de Dette Technique• L’initiative “Technical Debt” de l’Agile Alliance• Le jeu “Dice of Debt”• Les autres apports de l'initiative• Les travaux en cours

Agenda

Page 11: Agile Tour Toulouse jl-letouzey

L’initiative T.D. de l’Agile Alliance• Un projet de volontariat supporté par l’Agile Alliance

• Démarré en Juillet 2015• Une équipe de six membres : Declan Whelan, Jean-Pierre

Fayolle, Tom Grant, Dan Sturtevant, Thierry Coq, Jean-Louis Letouzey

Page 12: Agile Tour Toulouse jl-letouzey

L’initiative T.D. de l’Agile Alliance : les produits• Livre blanc et video

• Introduction to the technical debt concept• A2DAM (Agile Alliance Debt Analysis Model)

• Un référentiel pour évaluer et analyser la dette technique du code • Project Management Guide

• Des pratiques qui ont fait leur preuve• Dice Of Debt game

• Eduquer et sensibiliser sur l’importance de gérer la dette technique

12

https://www.agilealliance.org/resources/initiatives/technical-debt/

Page 13: Agile Tour Toulouse jl-letouzey

• L’Agile Alliance• Le concept de Dette Technique• L’initiative “Technical Debt” de l’Agile Alliance• Le jeu “Dice of Debt”• Les autres apports de l'initiative• Les travaux en cours

Agenda

Page 14: Agile Tour Toulouse jl-letouzey

“Dice of Deb” : IntroductionPrincipes du jeu

Vous appartenez à une équipe de développement travaillant sur un projet de 10 sprints. Votre objectif est de créer le plus possible de valeur.La dette technique (D.T.) peut réduire considérablement cette valeur. Heureusement vous pouvez prendre des mesures pour la réduire. Ces mesures qui permettent de réduire votre dette ne sont pas gratuites. C'est à vous de décider laquelle sera la plus rentable.

Page 15: Agile Tour Toulouse jl-letouzey

“Dice of Deb” : Les règles• A chaque tour (qui représente un sprint), votre équipe dispose d'une capacité limitée de

création. Cette capacité est représentée par 12 dés. • Au 1° tour, votre capacité est de 8 dés pour créer de la valeur ajoutée et de 4 dés pour

créer de la dette technique.• A chaque tour, vous jetez les dés “Valeur Ajoutée” et retenez le total obtenu : VA. Ensuite

vous jouez les dés “Dette Technique” et vous totalisez le résultat DT. La valeur ajoutée nette (VAN) est égale à VA – DT.

• Vous pouvez réduire votre D.T. et son impact, c'est un investissement qui réduit votre capacité à court terme de produire de la VA. Vous avez le choix entre 4 mesures possibles.

• Vous ne pouvez investir qu'en une seule mesure à la fois. Ce n'est qu'à la fin de la période d'investissement relative à une mesure que vous en tirerez les bénéfices. A ce moment là vous pouvez investir dans une autre mesure (si vous le souhaitez)

Page 16: Agile Tour Toulouse jl-letouzey

“Dice of Deb” : Réduire la dette Réduction de la complexité (et du copier/coller)

Bénéfice : Transforme 2 dés DT en 2 dés VA pour le reste de la partie Coût : 2 dés VA pendant 3 tours

Revue de pair Bénéfice : Transforme 1 dé DT en 1 dé VA pour le reste de la partie Coût : 3 dés VA pendant 2 tours

Intégration continue (y compris analyse statique du code) Bénéfice : rejouer à chaque tour 1 dé DT pour le reste de la partie Coût : 1 dé VA pendant 2 tours

Amélioration des tests (de leur taux de couverture) Bénéfice : Soustraire 3 du TD de chaque tour pendant le reste de la partie Coût : 1 dé VA pendant 3 tours

Page 17: Agile Tour Toulouse jl-letouzey

“Dice of Deb” : La feuille de jeu

Page 18: Agile Tour Toulouse jl-letouzey

Remplir la feuille de jeu

X X

1 1

7 74 4

-3 -3 -3 -3 -3 -3 -3 -3

7 74 4

269

1717

30121835

Page 19: Agile Tour Toulouse jl-letouzey

Remplir la feuille de jeu

X X

1 1

7 74 4

-3 -3 -3 -3 -3 -3 -3 -3

7 74 4

269

1717

X X

3 3

5 54 4

30121835

Page 20: Agile Tour Toulouse jl-letouzey

“Dice of Deb” : La table de jeuxDés investis (ne sont pas joués)

Dés VA

Dés TD

Page 21: Agile Tour Toulouse jl-letouzey

“Dice of Deb” : La feuille de suivi

Page 22: Agile Tour Toulouse jl-letouzey

“Dice of Deb” : Résultats

SCORE max possible : 501 SCORE moyen : 206,5Record actuel : 258

Page 23: Agile Tour Toulouse jl-letouzey

• L’Agile Alliance• Le concept de Dette Technique• L’initiative “Technical Debt” de l’Agile Alliance• Le jeu “Dice of Debt”• Les autres apports de l'initiative• Les travaux en cours

Agenda

Page 24: Agile Tour Toulouse jl-letouzey

You will always face some Technical Debt

• Some amount is to be expected• EX: Unintentional TD

• The amount of TD will never be zero• But it has to be manageable

• There can be situations in which you want to take on TD

• EX: Architectural experiment, don’t want to take the time to “do it right” if it doesn’t work out

• …As long as you clean it up• Of course, the problem is, people usually don’t

24

Page 25: Agile Tour Toulouse jl-letouzey

Address the individual sources: the code

25

Name Good practice Affects Rationale RemediationTested-CCOV A file has an acceptable

level of code coverage.Reliability

Unit tests verify that the code performs as expected without errors.

Write tests in order to cover uncovered lines. Test variable values.

Clear-INVL

A "for" loop iterator is not modified in the body of the loop.

Reliability

Modifying the loop iterator inside the loop may lead to unreliable behavior. Code is also more difficult to understand.

Restructure the code.

Clear-DEST

All "if"/"for"/"while" structures are delimited by curly braces.

Changeability

Using curly braces for control structures helps to better understand the code.

Enclose the core of the structure with curly braces.

Clear-CLDO Public classes and public methods are documented.

Maintainability

Code is easier to understand

Identify public classes and public methods without documentation.Write additional meaningful comments.

Assess your TD with the Agile Alliance Debt Analysis Model (A2DAM)

Page 26: Agile Tour Toulouse jl-letouzey

A2DAM• Une liste de base de bonnes pratiques relatives au code• Toutes les pratiques

• Sont vérifiables par des analyseurs de code• Ont été revues par des experts provenant de 10 sociétés éditeurs d’outils

d’ analyse de code • Sont caractérisées avec leur impact, leur coût de remédiation….

A2DAM

Page 27: Agile Tour Toulouse jl-letouzey

80%

69%

20 KLOCper year

8KLOC per year

Percent timeon features

DeveloperproductivityWell written code

Code with excessive technical debt

Time wasteddebugging

20%

Percent timeon features

Developerproductivity

Time wasteddebugging

31%

Developers understand

the code

Development team confused and

frustrated

Page 28: Agile Tour Toulouse jl-letouzey

Address the individual sources: the team• Many project management-level measures, such as…

• Follow the Boy Scout Rule• Make code review part of the done criteria• Dedicate some percentage of each sprint to TD reduction and prevention• Do static code analysis at some interval• …

28

Get advice from Project Management and Technical Debt document from the TD AA initiative

Page 29: Agile Tour Toulouse jl-letouzey

Address the individual sources: the team

29

Page 30: Agile Tour Toulouse jl-letouzey

The conclusion should be obvious

30

Short-term investment in technical debt reduction and prevention allows for increased productivity in the future

Technical debt just keeps accumulating. Our productivity plummets.

Page 31: Agile Tour Toulouse jl-letouzey

• L’Agile Alliance• Le concept de Dette Technique• L’initiative “Technical Debt” de l’Agile Alliance• Le jeu “Dice of Debt”• Les autres apports de l'initiative• Les travaux en cours

Agenda

Page 32: Agile Tour Toulouse jl-letouzey

Les travaux en cours• Un version en ligne du jeu « Dice of Debt »• Un quizz pour tester ses connaissances en matière de D.T.• Un document montrant des résultats de simulation entre des

scénarios de gestion de la D.T.

• Une version light du simulateur de scénarios de gestion de la D.T.

Page 33: Agile Tour Toulouse jl-letouzey

Modèle dynamique de la DT : hypothèses• Plus la D.T. est élevée, plus l’équipe introduit de bugs durant un

sprint• Plus la D.T. est élevée, plus l’équipe livre de bugs à la fin du sprint• Plus la dette d’évolutivité est élevée, plus il faut de temps pour

implémenter une user story• Plus la dette de maintenabilité est élevée, plus il faut de temps à

un nouveau membre de l’équipe pour devenir expérimenté • Plus la dette de maintenabilité est élevée, plus le taux de

démission des membres expérimentés augmente

Page 34: Agile Tour Toulouse jl-letouzey

Modèle dynamique de la DT : Exemple 1

Le projet résoud les bugs au fur et à mesure qu’ils apparaissent, mais laisse la D.T. s’accumuler

460 Jours

Page 35: Agile Tour Toulouse jl-letouzey

Modèle dynamique de la DT : Exemple 2

Le projet résoud les bugs au fur et à mesure qu’ils apparaissent et assigne 20% du temps à la réduction de la D.T.

250 Jours

Page 36: Agile Tour Toulouse jl-letouzey

Questions ?

N'oubliez pas de donner votre feedback !

Jean-Louis [email protected]