> « À votre avis, combien de temps ça va prendre à faire ? »
- Cette question, que les développeurs logiciels redoutent et détestent, a été remise en perspective par mon lave-linge
- Ce que mon lave-linge m’a appris sur la difficulté de l’estimation de l’effort logiciel (Software Effort Estimation)
- En emménageant dans une nouvelle maison, l’installation du lave-linge a pris bien plus de temps que prévu
- Une tâche qui se termine normalement en 10 minutes a cette fois pris 4 heures
- Des obstacles imprévus (blockers) sont apparus en cours de route et ont retardé l’installation
- J’ai réalisé que ce processus ressemble beaucoup à ce qui rend l’estimation de l’effort difficile en développement logiciel
- Obstacles et solutions
- Obstacle 1 : impossible de brancher le lave-linge à l’alimentation électrique faute d’ouverture
- Solution 1 : achat d’une scie cloche de 60 mm dans un magasin de bricolage pour percer un trou
- Obstacle 2 : une perceuse grand public ne permettait pas d’utiliser la scie cloche
- Solution 2 : emprunt et utilisation d’une perceuse plus puissante
- Obstacle 3 : les tuyaux d’arrivée et d’évacuation d’eau étaient plus courts que prévu dans la nouvelle maison
- Solution 3 : tentative d’achat de nouveaux tuyaux extensibles, puis constat que les tuyaux existants ne pouvaient pas être prolongés, avant de racheter de nouveaux tuyaux
- Obstacle 4 : un capuchon métallique solidement fixé au robinet ne pouvait pas être retiré
- Solution 4 : achat d’une clé plus grande pour retirer le capuchon
- Obstacle 5 : le spigot de l’évacuation était bloqué par une paroi en PVC
- Solution 5 : perçage de la paroi en PVC avec une perceuse, puis raccordement du tuyau d’évacuation
- Au total, il a fallu 5 visites au magasin de bricolage et 4 heures de travail pour installer correctement le lave-linge
- Obstacle 1 : impossible de brancher le lave-linge à l’alimentation électrique faute d’ouverture
- Pourquoi l’estimation de l’effort en développement logiciel est difficile
- Même pour une tâche familière, un environnement différent augmente fortement la probabilité de variables imprévues
- Si les estimations fondées sur l’expérience passée se trompent souvent, c’est à cause des « inconnues inconnues » (Unknown Unknowns)
- Quelques exemples :
- une bibliothèque prévue n’est plus maintenue et doit être corrigée directement
- un outil de développement a été mis à jour et la méthode utilisée jusque-là ne fonctionne plus
- une nouvelle version de l’OS fait que des dépendances existantes ne fonctionnent plus correctement
- un nouveau composant a été ajouté à l’infrastructure, mais ne se comporte pas comme prévu
- Conclusion
- Cette expérience dans une nouvelle maison montre à quel point l’estimation de l’effort est difficile en développement logiciel
- Avant de commencer à développer, il faut examiner les exigences aussi minutieusement que possible, mais l’apparition de blockers imprévus reste inévitable
- Même si un projet logiciel ressemble à une tâche familière, un nouvel environnement peut faire surgir des défis totalement différents
- Il faut donc ajuster de manière souple le planning et les ressources en tenant compte de ces variables
1 commentaires
Commentaires Hacker News
Les estimations logicielles sont une blague. Il n’y a aucune sanction en cas de sous-estimation
Excellent article, mais il manque une différence essentielle avec l’expérience logicielle
Les projets DIY se passent toujours comme ça
J’ai appris ce que signifie rester bien droit pendant 25 minutes après avoir percé, ainsi que l’intérêt étonnant des écouteurs à réduction de bruit
Bonne histoire. Mais mon expérience est presque exactement l’inverse
Cela me rappelle la phrase : « la réalité a des détails surprenants »
Quand l’auteur perce un trou pour le câble d’alimentation, il ajuste proprement un insert en plastique
La plupart de mes collègues sont surpris quand je dis que la phase de recherche et d’inventaire prend beaucoup de temps avant le début d’un projet
Point intéressant à garder en tête la prochaine fois que le tarif d’un technicien vous surprend
Que faire quand on ne sait même pas quelles questions poser avant de démarrer un projet logiciel ?