Agile technical debt management
Maxime Thoonsen
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
Forum PHP 2016 - Agile technical debt management
By Maxime Thoonsen
Forum PHP 2016 - Agile technical debt management
- 5,527