{"id":1174,"date":"2023-03-07T08:56:28","date_gmt":"2023-03-07T07:56:28","guid":{"rendered":"http:\/\/skro.hellabeth.com\/?p=1174"},"modified":"2023-03-07T08:56:31","modified_gmt":"2023-03-07T07:56:31","slug":"legacy","status":"publish","type":"post","link":"https:\/\/skro.hellabeth.com\/?p=1174","title":{"rendered":"Legacy"},"content":{"rendered":"\n<p>Hier, Twitter a subi un \u00e9ni\u00e8me bug bloquant depuis sa prise en main par Elon Musk et le management&#8230; sp\u00e9cial de celui-ci<span class=\"footnote_referrer\"><a role=\"button\" tabindex=\"0\" onclick=\"footnote_moveToReference_1174_1('footnote_plugin_reference_1174_1_1');\" onkeypress=\"footnote_moveToReference_1174_1('footnote_plugin_reference_1174_1_1');\" ><sup id=\"footnote_plugin_tooltip_1174_1_1\" class=\"footnote_plugin_tooltip_text\">[1]<\/sup><\/a><span id=\"footnote_plugin_tooltip_text_1174_1_1\" class=\"footnote_tooltip\">pour ne pas dire compl\u00e8tement d\u00e9bile<\/span><\/span><script type=\"text\/javascript\"> jQuery('#footnote_plugin_tooltip_1174_1_1').tooltip({ tip: '#footnote_plugin_tooltip_text_1174_1_1', tipClass: 'footnote_tooltip', effect: 'fade', predelay: 0, fadeInSpeed: 200, delay: 400, fadeOutSpeed: 200, position: 'top center', relative: true, offset: [-7, 0], });<\/script>. Et comme chaque fois, l&rsquo;omnipr\u00e9sident s&rsquo;est cru forc\u00e9 de faire un message en mode yakafokon sur les choses \u00e0 faire.<\/p>\n\n\n\n<!--more-->\n\n\n\n<p>Cette fois-ci, c&rsquo;\u00e9tait \u00e0 cause de la modification d&rsquo;une API \u00ab\u00a0avec des ramifications \u00e9tendue\u00a0\u00bb. Et de conclure que \u00ab\u00a0l&#8217;empilement de code est tr\u00e8s friable et doit enti\u00e8rement \u00eatre r\u00e9\u00e9crit\u00a0\u00bb.<\/p>\n\n\n\n<p>Forc\u00e9ment, des gens super-intelligents se sont pr\u00e9cipit\u00e9s pour (lui) dire que c&rsquo;\u00e9tait une grosse connerie et que \u00ab\u00a0n&rsquo;importe qui ayant boss\u00e9 sur des codes un peu legacy sait qu&rsquo;on ne peut pas le faire\u00a0\u00bb. Bref, Musk est une boussole qui indique le sud.<\/p>\n\n\n\n<p>Sauf que&#8230;<\/p>\n\n\n\n<p>Sauf que les gens qui ont beaucoup boss\u00e9 sur du code legacy<span class=\"footnote_referrer\"><a role=\"button\" tabindex=\"0\" onclick=\"footnote_moveToReference_1174_1('footnote_plugin_reference_1174_1_2');\" onkeypress=\"footnote_moveToReference_1174_1('footnote_plugin_reference_1174_1_2');\" ><sup id=\"footnote_plugin_tooltip_1174_1_2\" class=\"footnote_plugin_tooltip_text\">[2]<\/sup><\/a><span id=\"footnote_plugin_tooltip_text_1174_1_2\" class=\"footnote_tooltip\">et je pense que mes 15+ ans \u00e0 bosser sur des syst\u00e8mes qui ont encore des traces des modifications faites pour le passage \u00e0 l&rsquo;an 2000 ou \u00e0 l&rsquo;euro dans leur code est quelque chose de&nbsp;&#x2026; <span class=\"footnote_tooltip_continue\"  onclick=\"footnote_moveToReference_1174_1('footnote_plugin_reference_1174_1_2');\">Continue reading<\/span><\/span><\/span><script type=\"text\/javascript\"> jQuery('#footnote_plugin_tooltip_1174_1_2').tooltip({ tip: '#footnote_plugin_tooltip_text_1174_1_2', tipClass: 'footnote_tooltip', effect: 'fade', predelay: 0, fadeInSpeed: 200, delay: 400, fadeOutSpeed: 200, position: 'top center', relative: true, offset: [-7, 0], });<\/script> savent que justement si, il fau(drai)t parfois tout casser pour tout refaire.<\/p>\n\n\n\n<p>Parce qu&rsquo;un code \u00ab\u00a0legacy\u00a0\u00bb, c&rsquo;est souvent un code bourr\u00e9 de verrues dont on a perdu la compr\u00e9hension au fur et \u00e0 mesure des ans, c&rsquo;est un code qui s&rsquo;est emp\u00e2t\u00e9 au fur et \u00e0 mesure des besoins compl\u00e9mentaires, c&rsquo;est un code qui a \u00e9t\u00e9 r\u00e9dig\u00e9 avec une logique globale qui ne r\u00e9pond peut-\u00eatre plus assez bien aux besoins actuels, ou qui ne tire pas parti des avantages des \u00e9volutions des langages de programmation utilis\u00e9e.<\/p>\n\n\n\n<p><em>Et dans le cas particulier des API, o\u00f9 la cl\u00e9 c&rsquo;est la performance (une API, \u00e7a doit r\u00e9pondre tr\u00e8s vite), la r\u00e9\u00e9criture compl\u00e8te du code est souvent une obligation pour r\u00e9pondre au besoin.<\/em><\/p>\n\n\n\n<p>Alors est-ce que la solution au bug de Twitter est la r\u00e9\u00e9criture compl\u00e8te de son API? Je ne sais pas, je ne bosse pas pour eux. <br>Est-ce que le code en est aussi pourri que le dit son CEO? Ce n&rsquo;est pas impossible, sachant qu&rsquo;une grande partie des \u00e9quipes de dev (et donc du savoir sur ce code) a \u00e9t\u00e9 lourd\u00e9e ces derniers mois (et que, m\u00eame si la v\u00e9rit\u00e9 est dans le code, rien ne remplace l&rsquo;exp\u00e9rience du travail sur ce code). <br>Est-ce qu&rsquo;il ne faut surtout jamais r\u00e9\u00e9crire les programmes? Ca m&#8217;emmerderait bien, mes trois derniers projets de boulot ont litt\u00e9ralement consist\u00e9 \u00e0 \u00e7a: r\u00e9\u00e9crire des programmes de fond en comble parce que c&rsquo;\u00e9tait la seule fa\u00e7on de corriger un bug&#8230;<\/p>\n\n\n\n<p><em>On en profitera pour louer ici le travail trop oubli\u00e9 des \u00e9quipes de QA, dont le boulot est de passer leur vie \u00e0 v\u00e9rifier qu&rsquo;on ne casse pas tout quand on fait ce genre de choses, et Dieu sait que c&rsquo;est fastidieux&#8230;<\/em><\/p>\n<div class=\"speaker-mute footnotes_reference_container\"> <div class=\"footnote_container_prepare\"><p><span role=\"button\" tabindex=\"0\" class=\"footnote_reference_container_label pointer\" onclick=\"footnote_expand_collapse_reference_container_1174_1();\">References<\/span><span role=\"button\" tabindex=\"0\" class=\"footnote_reference_container_collapse_button\" style=\"display: none;\" onclick=\"footnote_expand_collapse_reference_container_1174_1();\">[<a id=\"footnote_reference_container_collapse_button_1174_1\">+<\/a>]<\/span><\/p><\/div> <div id=\"footnote_references_container_1174_1\" style=\"\"><table class=\"footnotes_table footnote-reference-container\"><caption class=\"accessibility\">References<\/caption> <tbody> \r\n\r\n<tr class=\"footnotes_plugin_reference_row\"> <th scope=\"row\" class=\"footnote_plugin_index_combi pointer\"  onclick=\"footnote_moveToAnchor_1174_1('footnote_plugin_tooltip_1174_1_1');\"><a id=\"footnote_plugin_reference_1174_1_1\" class=\"footnote_backlink\"><span class=\"footnote_index_arrow\">&#8593;<\/span>1<\/a><\/th> <td class=\"footnote_plugin_text\">pour ne pas dire compl\u00e8tement d\u00e9bile<\/td><\/tr>\r\n\r\n<tr class=\"footnotes_plugin_reference_row\"> <th scope=\"row\" class=\"footnote_plugin_index_combi pointer\"  onclick=\"footnote_moveToAnchor_1174_1('footnote_plugin_tooltip_1174_1_2');\"><a id=\"footnote_plugin_reference_1174_1_2\" class=\"footnote_backlink\"><span class=\"footnote_index_arrow\">&#8593;<\/span>2<\/a><\/th> <td class=\"footnote_plugin_text\">et je pense que mes 15+ ans \u00e0 bosser sur des syst\u00e8mes qui ont encore des traces des modifications faites pour le passage \u00e0 l&rsquo;an 2000 ou \u00e0 l&rsquo;euro dans leur code est quelque chose de suffisant<\/td><\/tr>\r\n\r\n <\/tbody> <\/table> <\/div><\/div><script type=\"text\/javascript\"> function footnote_expand_reference_container_1174_1() { jQuery('#footnote_references_container_1174_1').show(); jQuery('#footnote_reference_container_collapse_button_1174_1').text('\u2212'); } function footnote_collapse_reference_container_1174_1() { jQuery('#footnote_references_container_1174_1').hide(); jQuery('#footnote_reference_container_collapse_button_1174_1').text('+'); } function footnote_expand_collapse_reference_container_1174_1() { if (jQuery('#footnote_references_container_1174_1').is(':hidden')) { footnote_expand_reference_container_1174_1(); } else { footnote_collapse_reference_container_1174_1(); } } function footnote_moveToReference_1174_1(p_str_TargetID) { footnote_expand_reference_container_1174_1(); var l_obj_Target = jQuery('#' + p_str_TargetID); if (l_obj_Target.length) { jQuery( 'html, body' ).delay( 0 ); jQuery('html, body').animate({ scrollTop: l_obj_Target.offset().top - window.innerHeight * 0.2 }, 380); } } function footnote_moveToAnchor_1174_1(p_str_TargetID) { footnote_expand_reference_container_1174_1(); var l_obj_Target = jQuery('#' + p_str_TargetID); if (l_obj_Target.length) { jQuery( 'html, body' ).delay( 0 ); jQuery('html, body').animate({ scrollTop: l_obj_Target.offset().top - window.innerHeight * 0.2 }, 380); } }<\/script>","protected":false},"excerpt":{"rendered":"<p>Hier, Twitter a subi un \u00e9ni\u00e8me bug bloquant depuis sa prise en main par Elon Musk et le management&#8230; sp\u00e9cial de celui-ci[1]pour ne pas dire compl\u00e8tement d\u00e9bile. Et comme chaque fois, l&rsquo;omnipr\u00e9sident s&rsquo;est cru forc\u00e9 de faire un message en mode yakafokon sur les choses \u00e0 faire. References[+] References &#8593;1 pour ne pas dire compl\u00e8tement&hellip; <a class=\"more-link\" href=\"https:\/\/skro.hellabeth.com\/?p=1174\">Poursuivre la lecture <span class=\"screen-reader-text\">Legacy<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","activitypub_content_warning":"","activitypub_content_visibility":"","footnotes":"","jetpack_publicize_message":"","jetpack_is_tweetstorm":false,"jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","enabled":false}}},"categories":[19,6],"tags":[],"class_list":["post-1174","post","type-post","status-publish","format-standard","hentry","category-cest-la-sante-mon-oeil","category-vie-intewebz","entry"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/s4QCwI-legacy","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/skro.hellabeth.com\/index.php?rest_route=\/wp\/v2\/posts\/1174","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/skro.hellabeth.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/skro.hellabeth.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/skro.hellabeth.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/skro.hellabeth.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1174"}],"version-history":[{"count":1,"href":"https:\/\/skro.hellabeth.com\/index.php?rest_route=\/wp\/v2\/posts\/1174\/revisions"}],"predecessor-version":[{"id":1175,"href":"https:\/\/skro.hellabeth.com\/index.php?rest_route=\/wp\/v2\/posts\/1174\/revisions\/1175"}],"wp:attachment":[{"href":"https:\/\/skro.hellabeth.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1174"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/skro.hellabeth.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1174"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/skro.hellabeth.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1174"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}