• # Théorie bancale

    Posté par (site web personnel, Mastodon) . En réponse au journal Conseils aux libristes, 2ème partie: résister à la tentation de la réécriture à partir de zéro. Évalué à 10.

    Pour prendre un autre exemple du monde réel, dans mon précédent taf, que je ne nommerais pas mais qui commence par sky et se termine par blog, on est repartis de zéro, on a réécrit l'intégralité du code vieillissant (php2/3) pour une nouvelle base objet (php 5), tout en changeant complètement d'architecture (passage de génération statique, oui tous les blogs étaient re-générés intégralement un à un en statique à chaque modification par une queue, donc quand on arrive à XX millions de blogs et XXX millions/milliards de posts/commentaires par jour, ça devient vite long, à une structure dynamique basée sur memcached/mysql/sharedance/fluxy/des raclettes qui sentent bon dans tout l'openspace/etc.). Et bien non seulement ça a bien marché mais en plus ça n'a pas tué le projet ni la boîte.

    Ce n'est pas le seul exemple que j'ai vécu comme réécriture qui s'est bien passée.

    Le problème de la réécriture à mon avis c'est qu'on veut trop en faire en même temps. Ré-écrire du code vieux/sale/moche/ARG oui, mais si on veux en même temps revoir complètement le design, les fonctionnalités, etc. il est fort probable qu'on ne verra jamais le bout du tunnel, ou que le développement sera anormalement long et difficile. Pour la simple et bonne raison que la partie chiante (ré-écrire du code qui marche) est cumulée avec la partie intéressante (créer de nouvelles choses), donc les dévs vont se lasser si ça dure trop longtemps, car enfermés dans un boulot peu créatif, et le boulot créatif n'aura pas de public avant des mois/années, plutôt déprimant. Il faut donc simplement séparer la partie chiante et la partie sympa. D'abord ré-écrire pour obtenir la même chose mais avec du nouveau code tout beau. Et ensuite commencer à écrire de nouvelles fonctionnalités, refaire le design de zéro, etc. Ça sera beaucoup plus encourageant et permet aussi de placer des objectifs plus petits et plus rapprochés dans le temps.

    « Je vois bien à quels excès peut conduire une démocratie d'opinion débridée, je le vis tous les jours. » (Nicolas Sarkozy)