Agile technical debt management

Maxime Thoonsen

@maxthoon

Why should you care about technical debt ?

A short personal story...

Avoid the Game Over

Keep a good velocity

Prevent bugs

Increase security

Broken windows theory

Dev mental health

Why should you monitor your technical debt ?

To know the trend

Prioritize

Less bad surprise

What is technical debt ?

Metaphor from Ward Cunningham in 1992 to communicate with non technical stake holders.

Reduce Quality ?

=> Debt

Reduce Productivity ?

=> Debt

Code quality

if (isset($all) && isset($moules) && isset($pieces) && isset($chassis) ){

//On traite toutes les pièces
//Tant qu'il y a besoin de produire des pièces, on avance dans le planning
$encoreaproduire = true;
$j = -1;
$capaamig = $this->container->getParameter('capaamig');
$capagm = $this->container->getParameter('capagm');
while ($encoreaproduire && $j<5){
    $encoreaproduire = false;
    $j++;
    foreach($pieces as $p){
        if ($p['restealivrer']>0){
            $encoreaproduire = true;
            if ( $moules[$j][1] < $capaamig || $moules[$j][2] < $capagm  ) {
                //Pas de contrainte de capacité, voyons du coté des chassis
                //On regarde pour tous les modèles possibles
                if (isset($all[$p['id']])){//Il n'y a pas forcément de modèle
                    foreach($all[$p['id']] as $unmodele ){
                        $chantier = $unmodele['chantier'];
                        //On regarde pour tous les types de chassis
                        
                        foreach($unmodele['chassis'] as $typedechassis){
                        //On regarde pour tous les chassis
                            foreach( $chassis[$typedechassis]['chassis'] as $unchassis){
                                if ($unchassis['date'] <= $j  && $p['restealivrer']>0 && 
                                    ((($chantier == 1 || $chantier == 3 ) && $moules[$j][1] < $capaamig ) 
[.........................................................................................................]
                                        }  
                                        }
                                    }
                                }
                            }
                       }
                    }
                }
          }
       }

Complexity

Bugs

Deployment Pipeline

Security

Architecture misconception

Broken/Lack of tests

Dev environment

Lack of documentation

Good technical debt

POC value < cost debt ?

POC

Debt

Communication

Warnings in the code

How can you manage technical debt ?

Identify on the fly

Evaluate

Map it: Trello board

I - Copy the template

II - Tag people

III - Add a description

IV - Evaluate the ticket

Monitor your debt 

Σ(points of tickets) ?

Monitor your debt 

Standard:

Σ(points of tickets) < 500 points  

Monitor your debt 

Monitor your debt 

Monitor your debt 

Scrutinizer

Scrutinizer

SensioLabs Insight

Human metrics

Fight the debt !

Boy scout rule

Focus on one battle

Request time to fix it

Distribute responsibility among the team

WITH DEADLINES !

Prevent the debt !

Motivation tips

Motivation tips

Joconde effect

Make choices adapted to your team

Code review

Go for simplicity

Is it simple to understand ?

Many loops ? Many "if else" ?

Is it tested ?

Are my tests easy to understand ?

...

Checklist using Github Template on PRs

More tests != less features

DO YOUR JOB CORRECTLY

Retrospective

Motivation / interest / discipline droped

Debt is quite well known

Debt is a popular subject

4 actions to do right now

I - Create the board (10')

II - Pitch it to your team (45')

III - Create your metrics (15')

IV - Involve your client (15')

Questions ?

 

http://www.slideshare.net/lemiorhan/technical-debt-do-not-underestimate-the-danger

http://www.slideshare.net/zazworka/identifying-and-managing-technical-debt

http://www.ustream.tv/recorded/86180723

http://topbusinessinsurers.com/business-insurance/the-consequences-of-accumulating-technical-debt/

http://www.infoq.com/articles/managing-technical-debt

http://www.slideshare.net/zazworka/identifying-and-managing-technical-debt

http://verraes.net/2014/06/managed-technical-debt-revisited/

http://blog.smartbear.com/code-review/the-secret-to-code-quality/

Sources

Made with Slides.com