Nether. Rewrite. A. Big. Software. From. Scratch.
(even though I would be the first one to say "let's restart it from scratch")
2 très bons points :
1) il est toujours plus facile d'écrire du code, que de le relire, d'où cette volonté constante de réécrire le code
2) en réécrivant from scratch, on perdra énormément de choses. Des bugs rarissimes qui étaient gérés, des cas chelous qui étaient bloqués, etc.
En bref : réécrire from scratch est souvent une très mauvaise idée. Après, pour moi, il y a quelques raisons qui peuvent justifier ça :
logiciel rédigé dans un langage mourant, qui n'est/ne sera bientôt plus maintenu
impossibilité de migrer par morceaux
grosse refonte complète du coeur du métier (ce qui prendrait plus de temps à faire évoluer qu'à recoder)
En dehors de ces cas là, il faut garder l'existant et le migrer petit à petit. Prendre un morceau, le mettre à jour, le faire évoluer, etc.
Après le souci est aussi autre : pour un dev, un projet from scratch sera toujours 1000x plus cool qu'un projet d'évolution.
Cela pour diverses raisons :
- turnover trop élevé dans l'informatique, personne ne veut passer à faire évoluer un vieux module pendant 3 ans alors qu'il sait pertinemment qu'il ne restera pas 3 ans dans la boite
- quand la boite a tendance à faire passer les profits court-terme avant la qualité, ben tu sais que les refontes ne marcheront pas car en permanence on va te demander de développer de nouveaux trucs. A quoi bon améliorer l'isolation d'une maison si le proprio passe son temps à faire construire de nouvelles pièces à la va-vite autour de la maison ?
C'est pas simple. Mais c'est lié à une incapacité à voir à long terme, à recruter des développeurs qu'on veut garder non pas 3/5 ans mais 20 ans, et à décider d'apprendre à dire non, et de faire passer la qualité avant les contrats.
Seulement à ces conditions ça peut marcher.