2 points par GN⁺ 2 시간 전 | Aucun commentaire pour le moment. | Partager sur WhatsApp
  • Un essai qui explique le chaos du développement logiciel à travers une analogie avec la construction d’un pont, avec cet aveu désabusé que toutes les équipes de programmation sont composées de fous, et que les logiciels bancaires comme Internet tournent sur le résultat de ce chaos
  • Le code parfait n’existe que dans un fichier qui fait une seule chose et qu’une seule personne a écrit ; dans la réalité, on vous demande le vendredi d’en livrer 600 pour mardi, et vous travaillez comme si vous appuyiez Picasso sur un tas de flocons de neige fondus
  • Les développeurs web doivent apprendre une nouvelle technologie chaque semaine tout en vérifiant que des centaines d’outils existants ne se sont pas cassés, et même pour un expert, mettre 6 heures à identifier la cause d’un problème est déjà une bonne nouvelle
  • Internet repose sur des milliers de milliards de dollars d’accords implicites et de code vieux de 10 ans annoté "TODO: FIX THIS", et si tous les administrateurs système allaient déjeuner en même temps, la civilisation s’effondrerait
  • Les programmeurs forcent leur cerveau à faire 10 à 15 heures par jour ce pour quoi il n’a pas été conçu, et deviennent lentement fous, voilà le prix à payer pour avoir choisi ce métier plutôt que de soulever 50 livres

Toutes les équipes de programmation sont composées de fous

  • Les amis qui font du travail physique commencent toujours les conversations par des trucs du genre : « Toi, ça va, pendant ce temps-là moi j’ai creusé un tunnel sous le Mordor avec un marteau-piqueur »
  • Si vous admettez que le stress et la souffrance mentale sont de mauvaises choses, bienvenue dans le monde de la programmation
  • L’analogie de la construction du pont : vous rejoignez un projet de pont dans une grande ville, et la situation est la suivante
    • Mary est cheffe de projet ; Fred ne travaille que le bois, mais il est chargé de la passerelle d’un pont à 200 pieds au-dessus d’un torrent
    • Dave s’est fait voler son pull et a installé ensuite un contrôle de sécurité en 15 étapes
    • Phil n’est pas ingénieur mais applique une règle interdisant les garde-corps ; personne ne sait ce qu’il fait là, mais comme il a un lien avec la direction, on le laisse tranquille
    • Sara intègre à la conception plusieurs techniques de revêtement à la pointe saignante de la technologie (hemorrhaging-edge)
    • Tom et Harry se battent depuis des années sur le système métrique vs. le système impérial, et on utilise l’unité de celui qui a commencé en premier
    • Le pont était conçu comme un pont suspendu, mais comme personne ne savait construire un pont suspendu, on a ajouté des piliers de soutien au milieu, et laissé les câbles parce qu’ils semblaient probablement soutenir quelque chose
    • On demande au nouveau de proposer des idées, sauf qu’il est en fait ingénieur en propulsion et qu’il ne connaît rien aux ponts
  • Si vous demandez aux gens s’ils traverseraient ce pont, personne ne le ferait, et pourtant c’est exactement ce genre de structure qui a produit tous les logiciels bancaires, les sites web et les programmes de sécurité d’Internet

Tout le code est mauvais

  • Chaque programmeur a chez lui un fichier de Good Code qu’il relit quand il est seul, les larmes aux yeux
    • Les noms de fonctions et de variables y sont cohérents, concis, ne font manifestement rien de stupide, et n’ont jamais été exposés au monde réel ni aux exigences d’une équipe commerciale
    • Il a été écrit par une seule personne, personne d’autre n’y a touché, et se lit comme un poème écrit par quelqu’un de plus de 30 ans
  • La réalité : si le vendredi on vous dit de produire 600 flocons de neige pour mardi, vous bricolez des solutions partout, vos collègues les font fondre, tout se mélange, vous posez Picasso sur cet amas difforme, et la semaine suivante vous rajoutez encore de la neige pour éviter que Picasso ne tombe
  • Il existe une théorie selon laquelle tout irait mieux si l’on suivait des standards, mais il y a plus de standards que l’ordinateur n’a réellement de choses à faire, et chacun les adapte à ses préférences ; en pratique, on se retrouve avec des bases de code où la même tâche est accomplie de dizaines de façons différentes
  • Les premières semaines dans un nouveau poste servent à comprendre comment le programme fonctionne, même si l’on connaît déjà tous les langages, frameworks et standards, parce que les standards sont des licornes

Il y a toujours de l’obscurité

  • Analogie du placard d’enfance : on entre, le mur recule et devient une étagère ; puis en relevant la tête on découvre le néant absolu d’un vide sanitaire où la lumière ne pénètre pas, et l’on comprend qu’y vit le monstre qu’on repoussait chaque nuit à coups de lampe torche et de peluches
  • Apprendre la programmation, c’est pareil : on apprend un outil utile, puis on regarde autour de soi et il y a un nouvel outil, lequel révèle la terreur sans fond qui se trouvait juste à côté du lit depuis le début
  • La réalité du développeur web moyen
    • Même en connaissant 12 langages de programmation, d’innombrables bibliothèques, standards et protocoles, il faut encore apprendre quelque chose de nouveau chaque semaine
    • Il faut vérifier si des centaines d’outils existants ont été mis à jour ou se sont cassés, et contrôler que le bug astucieusement exploité pendant un week-end arrosé n’a pas été corrigé
    • On croit que tout est à jour, puis soudain tout casse
  • Exemple d’origine de panne : quelqu’un décide que 1/0 doit valoir Infinity, puis quelqu’un d’autre transforme ça en erreur du compilateur sans prévenir personne ; au final, même un expert met 6 heures à trouver la cause
  • Même l’expertise dans son propre domaine n’est qu’une part infime de l’ensemble de l’informatique, et pas une seule personne ne sait comment fonctionne réellement un MacBook vieux de 5 ans
  • Si l’on dit « essayez de l’éteindre et de le rallumer », c’est parce qu’on n’a absolument aucune idée de ce qui ne va pas ; on plonge simplement l’ordinateur dans le coma et on laisse son équipe médicale automatique intégrée s’en charger

Internet est un enfer particulier à lui seul

  • Même un site au niveau d’un panier d’achat avec 3 pages dynamiques est maintenu par une équipe 24 h/24, parce que tout casse partout, tout le temps, pour tout le monde
  • En ce moment même, des employés de Facebook traitent des dizaines de milliers de messages d’erreur ; dans un bureau de Google, une équipe n’a pas dormi depuis 3 jours ; et quelque part un programmeur de base de données, entouré de bouteilles vides de Mountain Dew, se dit que son mari est sans doute mort
  • Si tous les administrateurs système partaient déjeuner en même temps, ils devraient se battre contre des hordes de mutants pour des boîtes de conserve avant même d’arriver au deli
  • Des milliers de milliards de dollars reposent sur des accords implicites et du code vieux de 10 ans avec des commentaires du type "TODO: FIX THIS IT'S A REALLY DANGEROUS HACK"
  • Il existe des groupes qui attaquent Internet pour l’espionnage, l’argent ou le simple ennui, et 4chan peut détruire la vie et l’entreprise de quelqu’un juste parce qu’il a passé un mauvais après-midi, mais personne ne s’en inquiète vraiment, parce que c’est comme ajouter une bombe nucléaire à un hiver nucléaire
  • Sur Internet, si vous dites « on dirait que ça marche parfois », alors cela devient une partie d’Internet ; avec quelques centaines de dollars et un ordinateur, n’importe qui peut mettre en ligne un code de piratage atroce et rendre l’ensemble un peu pire
  • La règle secrète d’Internet : 5 minutes après avoir ouvert son navigateur pour la première fois, un enfant russe a déjà votre numéro d’identité ; si vous vous inscrivez quelque part, la NSA commence à suivre votre position ; et si vous envoyez un e-mail, votre adresse finit sur un panneau publicitaire au Nigeria
  • Ce n’est pas de l’indifférence : c’est parce que tout est cassé et qu’il n’existe pas de bon code, donc tout le monde se bat juste pour que l’ensemble continue tant bien que mal à tourner

Nous ne sommes pas fous, nous le devenons

  • ERROR: Attempted to parse HTML with regular expression; system returned Cthulhu — si ça vous fait rire, tout va encore bien ; mais si à la question « arrayReverse ? » vous répondez naturellement s/camel/_/, alors vous êtes déjà entré dans la phase où vous parlez en code
  • Le cerveau humain n’est pas particulièrement doué pour la logique élémentaire, et pourtant il existe un métier où l’on exécute toute la journée une logique d’une complexité extrême
  • Si vous passez la journée à remonter d’immenses chaînes de conditions et d’exigences abstraites pour trouver une virgule manquante, vous finissez par regarder un visage humain sans savoir si la personne a terminé sa phrase — parce qu’il manque un point-virgule
  • Démonstration de l’effet destructeur sur le cerveau avec des exemples de langages ésotériques (esolang)
    • Il existe des programmes qui produisent la même sortie que le « Hello World » en C++, en Brainfuck, en Ook!, ou encore en Perl sous forme d’ASCII art de chiffres mayas tournés à 90 degrés
    • Le programme en chiffres mayas a gagné un concours, et dans un monde pareil, plus personne ne s’étonne que quelqu’un fume un paquet de cigarettes par jour
  • Tous les programmeurs forcent leur cerveau à accomplir 10 à 15 heures par jour, 5 à 7 jours par semaine, des tâches pour lesquelles il n’a pas été conçu, et nous devenons tous lentement fous
  • Conclusion : au lieu de soulever un objet de 50 livres, vous avez obtenu l’occasion de servir Satan, qui taille ses poils corporels tout en prenant son repas au-dessus d’un crâne ouvert, et en échange, une petite partie d’Internet continue de fonctionner quelques jours de plus

Aucun commentaire pour le moment.

Aucun commentaire pour le moment.