Hier, Twitter a subi un énième bug bloquant depuis sa prise en main par Elon Musk et le management… spécial de celui-ci[1]pour ne pas dire complètement débile. Et comme chaque fois, l’omniprésident s’est cru forcé de faire un message en mode yakafokon sur les choses à faire.
Cette fois-ci, c’était à cause de la modification d’une API « avec des ramifications étendue ». Et de conclure que « l’empilement de code est très friable et doit entièrement être réécrit ».
Forcément, des gens super-intelligents se sont précipités pour (lui) dire que c’était une grosse connerie et que « n’importe qui ayant bossé sur des codes un peu legacy sait qu’on ne peut pas le faire ». Bref, Musk est une boussole qui indique le sud.
Sauf que…
Sauf que les gens qui ont beaucoup bossé sur du code legacy[2]et je pense que mes 15+ ans à bosser sur des systèmes qui ont encore des traces des modifications faites pour le passage à l’an 2000 ou à l’euro dans leur code est quelque chose de … Continue reading savent que justement si, il fau(drai)t parfois tout casser pour tout refaire.
Parce qu’un code « legacy », c’est souvent un code bourré de verrues dont on a perdu la compréhension au fur et à mesure des ans, c’est un code qui s’est empâté au fur et à mesure des besoins complémentaires, c’est un code qui a été rédigé avec une logique globale qui ne répond peut-être plus assez bien aux besoins actuels, ou qui ne tire pas parti des avantages des évolutions des langages de programmation utilisée.
Et dans le cas particulier des API, où la clé c’est la performance (une API, ça doit répondre très vite), la réécriture complète du code est souvent une obligation pour répondre au besoin.
Alors est-ce que la solution au bug de Twitter est la réécriture complète de son API? Je ne sais pas, je ne bosse pas pour eux.
Est-ce que le code en est aussi pourri que le dit son CEO? Ce n’est pas impossible, sachant qu’une grande partie des équipes de dev (et donc du savoir sur ce code) a été lourdée ces derniers mois (et que, même si la vérité est dans le code, rien ne remplace l’expérience du travail sur ce code).
Est-ce qu’il ne faut surtout jamais réécrire les programmes? Ca m’emmerderait bien, mes trois derniers projets de boulot ont littéralement consisté à ça: réécrire des programmes de fond en comble parce que c’était la seule façon de corriger un bug…
On en profitera pour louer ici le travail trop oublié des équipes de QA, dont le boulot est de passer leur vie à vérifier qu’on ne casse pas tout quand on fait ce genre de choses, et Dieu sait que c’est fastidieux…