Stratégies du livre “Être ou ne pas être CTO”, chapitre “Gérer la dette technique”.

“On doit refactoriser tout le code !” Non. Voici comment gérer tech debt sans paralyser business.

Comprendre la dette technique

Définition réaliste

Tech debt ≠ Code moche

Tech debt =
  Écart entre architecture actuelle
  et architecture idéale pour besoins futurs

Exemples :
✅ Monolithe qui ralentit features → Dette
✅ Tests manquants sur code critique → Dette
✅ Dépendances EOL avec risque sécu → Dette

❌ "J'aime pas ce framework" → Pas dette
❌ "Code pas assez elegant" → Pas dette

Types de dette

Dette stratégique (intentionnelle) :

Exemple :
"On ship MVP en 2 semaines avec quick & dirty
 pour valider marché.

 On sait qu'on devra refacto après."

✅ Acceptable si :
- Conscient et documenté
- Deadline business critique
- Plan remboursement existe

Dette accidentelle (subie) :

Causes :
- Turnover (context perdu)
- Manque expertise (junior team)
- Requirements changés
- Tech evoluée (framework deprecated)

❌ S'accumule silencieusement
→ Nécessite audit régulier

Mesurer la dette

Métriques objectives

1. Code complexity (Cyclomatic)
   Tool : SonarQube, CodeClimate
   Red flag : >15 complexity

2. Test coverage
   Target : 70-80% sur code critique
   Red flag : <40%

3. Dependency freshness
   Tool : Dependabot, Renovate
   Red flag : Deps >2 ans, EOL, CVE

4. Build/Deploy time
   Red flag : >15min build, >1h deploy

5. Bug rate
   Red flag : >10% features avec bugs production

Inventaire dette (template)

Debt Item: Monolithe ralentit features
Category: Architecture
Impact: High (blocks 30% roadmap)
Effort: 6 mois, 3 devs
Risk if ignored: Team velocity -50%
Priority: High
Plan: Extract 3 services Q1 2025

---

Debt Item: Tests coverage 20%
Category: Quality
Impact: Medium (bugs production)
Effort: 3 mois, 1 dev
Risk: Customer churn
Priority: Medium
Plan: 40% → 70% Q2 2025

Prioriser intelligemment

Framework : Impact × Effort

High Impact, Low Effort : DO NOW
- Fix CI/CD lent (2 semaines)
- Update deps critiques (1 semaine)
- Add monitoring (1 semaine)

High Impact, High Effort : PLAN
- Microservices migration (6 mois)
- Rewrite legacy module (4 mois)
- Multi-region infra (12 mois)

Low Impact, Low Effort : FILL GAPS
- Refactor non-critical code
- Improve logs
- Update docs

Low Impact, High Effort : AVOID
- Rewrite parfait
- Over-engineering
- Tech debt "nice to have"

La règle 70/20/10

Budget temps équipe :

70% : Features produit (business value)
20% : Dette technique (sustainability)
10% : Innovation/R&D (future)

Exemple 10 devs :
- 7 devs features
- 2 devs tech debt
- 1 dev exploration

⚠️ Si 0% tech debt → Accumulation dangereuse
⚠️ Si >30% tech debt → Business frustré

Communiquer avec non-tech

CEO veut features, pas refacto

❌ Mauvais :

CTO: "On doit refactoriser le monolithe."
CEO: "Ça apporte quoi au business ?"
CTO: "C'est technique, code plus clean."
CEO: "Pas prioritaire."

→ Tech debt ignorée
→ Crise 6 mois après

✅ Bon :

CTO: "Notre monolithe ralentit delivery features 50%.

      Features prennent 8 semaines au lieu de 4.

      Si on extrait 3 services (3 mois),
      on revient à 4 semaines par feature.

      ROI : 6 mois après refacto, on livre 2× plus."

CEO: "OK, go."

→ Business case clair
→ Budget approuvé

Template communication

Problème :
[Impact business mesurable]

Cause technique :
[Explication simple]

Solution :
[Investment temps/cost]

Bénéfice :
[ROI chiffré]

Risque si ignoré :
[Conséquences business]

Stratégies de remboursement

Approche 1 : Big Bang Rewrite

Quand :
- Legacy complètement unmaintainable
- Business model pivot complet
- Tech stack obsolète totale

Risque :
❌ 12-24 mois sans features
❌ Team frustration
❌ Bugs migration massive

Success rate : 20%

→ À éviter sauf cas extrême

Approche 2 : Strangler Fig (recommandé)

Principe :
Remplacer progressivement ancien par nouveau

Exemple microservices :
1. Identifier service à extraire (Auth)
2. Créer nouveau service
3. Router traffic progressivement
4. Monitorer + rollback possible
5. Deprecate ancien code

Timeline : 3-6 mois par service
Success rate : 80%

→ Business value continue
→ Risque limité

Approche 3 : Boy Scout Rule

"Leave code better than you found it"

Chaque feature = mini refacto zone touchée

Exemple :
Feature dans module legacy
→ Ajouter tests sur fichiers modifiés
→ Refacto fonction touchée
→ Update deps si possible

Effort : +10-15% par feature
Impact : Dette réduite progressivement

→ Pas de "tech debt sprint" dédié
→ Amélioration continue

Pièges à éviter

Piège 1 : Perfect is enemy of good

❌ "On refactorise tout parfaitement"
→ 12 mois, 0 business value
→ CEO furious

✅ "On améliore zone critique 80/20"
→ 2 mois, impact mesuré
→ CEO content

Piège 2 : Tech debt sprint

❌ "Sprint dédié tech debt tous les 3 mois"
→ Business bloqué 2 semaines
→ Patterns pas changés
→ Dette revient

✅ 20% capacity continue
→ Sustainable
→ Pas de disruption

Piège 3 : Ignorer complètement

❌ "100% features, 0% tech debt"
→ Velocity ralentit
→ Bugs augmentent
→ Devs frustré → Turnover
→ Crise forced rewrite

✅ Balance 70/20/10
→ Sustainable long-terme

Prévenir l’accumulation

Standards et guidelines

1. Code review obligatoire
   - 2 approvals minimum
   - Checklist (tests, docs, etc.)

2. Definition of Done
   - Tests passent
   - Coverage >70%
   - Docs à jour
   - No new warnings

3. Architecture Decision Records
   - Documenter choix tech
   - Rationale explicite
   - Facilite maintenance future

Monitoring continu

Dashboard tech health :

✅ Test coverage : 78% (target 75%)
✅ Build time : 8min (target <10min)
⚠️ Dependencies : 3 outdated (update Q1)
❌ Bug rate : 12% (target <8%)

→ Review mensuel avec exec
→ Ajuster priorities

Conclusion

Dette technique = Outil stratégique, pas tabou

Acceptable quand :

  • Intentionnelle et documentée
  • Plan remboursement existe
  • ROI business justifie

Dangereuse quand :

  • Ignorée et accumulée
  • Pas mesurée
  • Bloque innovation

Règle d’or : 70% features / 20% tech debt / 10% innovation


“Être ou ne pas être CTO” inclut templates d’inventaire dette, frameworks de priorisation, et cas réels de migrations réussies.