2 points par GN⁺ 2023-08-04 | 1 commentaires | Partager sur WhatsApp
  • Arthur Westbrook a annoncé son départ en retraite anticipée à 58 ans, après 35 ans passés à travailler sur une base de code legacy réputée faire tourner un logiciel médical
  • Pendant son passage dans l’entreprise, il n’a contribué que quelques centaines de lignes de code, et la satire veut qu’il ait même, une fois, touché au code legacy sans faire couler la société
  • Westbrook pensait comprendre plus de 4 % de l’ensemble de la base de code, qu’un ancien collègue a qualifiée de « Guerre et Paix en wingdings »
  • Dans l’entreprise, il était connu comme « l’un des programmeurs de l’équipe », et un manager a estimé qu’il avait le talent de tenir longtemps sans acquérir de compétences transférables
  • Les réactions à son départ en retraite ont été tièdes, et Westbrook prévoit de se lancer dans les performances de rue, la récupération dans les poubelles, ainsi que de perfectionner une recette mêlant Soylent et Whole Foods Premium Adult Cat Salmon Mix

Une base de code legacy de 35 ans

  • Arthur Westbrook a annoncé cette semaine son départ en retraite anticipée à 58 ans
  • Il a travaillé pendant 35 ans sur une base de code réputée faire tourner un logiciel médical
  • Au cours de cette période, il a contribué quelques centaines de lignes de code
  • Une fois, il a touché au code legacy sans pour autant provoquer la chute de l’entreprise
  • Westbrook pensait comprendre plus de 4 % de l’ensemble de la base de code
  • Un ancien collègue a décrit cette base de code comme « Guerre et Paix en wingdings »

Réaction de l’entreprise et projets après la retraite

  • Dans l’entreprise, Westbrook était connu comme « l’un des programmeurs de l’équipe »
  • Un manager a déclaré qu’il avait le talent de travailler dur sans jamais apprendre de compétences transférables
    • Il a ajouté qu’il faudrait « deux développeurs juniors et une machine Keurig » pour le remplacer
  • Pour marquer ses décennies d’ancienneté, un collègue a proposé de lui offrir un verre « le mois prochain environ »
  • Aucun membre de l’équipe n’a répondu aux demandes de commentaire
  • À la retraite, Westbrook prévoit d’essayer les performances de rue et la récupération dans les poubelles
  • Il compte aussi continuer à peaufiner une préparation mélangeant Soylent et Whole Foods Premium Adult Cat Salmon Mix

1 commentaires

 
GN⁺ 2023-08-04
Commentaires Hacker News
  • J’ai l’impression qu’il y avait toujours quelqu’un comme ça dans toutes les entreprises où j’ai travaillé.
    Quand on tombe sur du code legacy dont on n’arrive absolument pas à comprendre le fonctionnement, c’est la personne qu’on va voir, et on se retrouve à écouter un cours d’histoire de deux heures sur dix ans de politique interne et de projets de replatforming ratés. Malgré tout, difficile de lui en vouloir.

    • « ...et les machines AIX, c’étaient de vrais monstres. Il y en avait 20, chacune sur son propre circuit de 20 ampères. La mise à la terre du châssis en acier lâchait souvent, et pour faire une mise à niveau, il fallait d’abord enfiler de gros gants en cuir... »
    • Je me reconnais dans cette parodie ;)
      Tu sais pourquoi je raconte deux heures d’histoire ? D’abord, parce que les interactions humaines sont nécessaires, mais je n’aime pas spécialement les gens. Ensuite, parce que j’espère que tu vas apprendre et comprendre, au lieu de juste mémoriser et répéter, afin que la prochaine fois tu règles ça toi-même sans venir m’embêter. Maintenant va-t’en, j’ai rempli mon quota social de la semaine. /blague — enfin, est-ce vraiment une blague ?
    • J’ai connu quelques personnes comme ça, et certaines valent leur pesant d’or. Mais la plupart se sont figées dans leurs méthodes à cause du traumatisme d’avoir empêché tout de s’écrouler pendant si longtemps, et presque toutes stagnent au point de ne plus pouvoir apporter de nouvelles idées. Beaucoup ont tellement longtemps absorbé les dysfonctionnements de l’entreprise et les ont pris comme leurs propres problèmes qu’il ne reste d’eux, humainement, qu’une coquille vide.
    • Ces personnes sont généralement aussi de très bons ingénieurs. Réécrire sans cesse la 1.0 de quelque chose est beaucoup plus facile. Améliorer à nouveau un système qui a été amélioré pendant des décennies, c’est un défi d’ingénierie atrocement difficile. Dans les entreprises de plus de 30 ans, ce sont les personnes les plus essentielles, et au lieu d’être respectées, elles reçoivent des textes condescendants comme celui qui est lié.
    • Ça ne me semble pas être un mauvais choix. Si l’entreprise est suffisamment stable et qu’on touche un salaire d’ingénieur pendant 25 ans avec en plus une sécurité de l’emploi absolument folle, c’est une voie tout à fait correcte.
      Ça me paraît mieux que d’avoir 50 ans et d’essayer d’impressionner un recruteur de 28 ans avec sa maîtrise du tout dernier framework à la mode.
  • Quelqu’un passe toute sa carrière à changer sans cesse de poste en se convainquant que c’est parce que « les autres écrivent du code pourri ».
    Karl Hackerman se plaint à chaque réunion. Il a l’air vexé qu’on ne l’autorise pas à réécrire le système en Rust. Il connaît beaucoup de frameworks récents et de bonnes pratiques, et il est constamment agacé de ne pas pouvoir les utiliser au travail. Il pense que les autres se contentent d’être des esclaves salariés au lieu d’essayer de devenir les meilleurs programmeurs possible. Tout le monde le tolère parce qu’on sait qu’il partira de toute façon dans six mois. Karl a maintenant 47 ans et n’est jamais resté plus de quelques années au même poste. Ces derniers temps, il travaille surtout en freelance et essaie de vendre des livres sur des technologies et frameworks dont plus personne ne se soucie.

    • Je suis l’auteur ! C’est excellent. J’ai moi aussi complètement été ce genre de personne à une époque :) Apprendre à ne pas devenir un monsieur-je-sais-tout insupportable a été un défi étonnamment difficile.
      J’écris aussi un long roman, dans l’esprit de Confederacy of Dunces, sur des ingénieurs touche-à-tout beaucoup trop zélés. Il y a tellement de mon âme dedans que je ne vais sans doute pas réussir à le terminer avant longtemps.
    • Je ne m’attendais pas à me réveiller et à me faire attaquer comme ça. Sans prévenir. Brutal.
      Cela dit, je n’ai pas encore la quarantaine, donc il me reste du temps pour me remettre du chemin d’errance que j’ai pris.
    • J’ai bien aimé.
      Au début, je ressentais la même chose, mais j’ai vite appris que, dans mon travail principal, je tirais ma satisfaction uniquement du fait de livrer quelque chose, et que j’explorais surtout les mystères de l’informatique sur mon temps personnel. Parfois les deux se recoupent, mais d’après mon expérience, même un bon poste, c’est 80 % d’ennui.
    • J’ai éclaté de rire à « bonnes pratiques ». J’ai déjà travaillé avec quelqu’un comme ça. Il sortait cette expression chaque fois qu’il n’avait pas de véritable argument, c’est-à-dire à peu près tout le temps. Plus le sujet était insignifiant, plus ses opinions étaient tranchées.
    • Pour info, Karl s’est réincarné en MyCurrentIntern.
  • J’ai travaillé pendant 10 ans sur une base de code C++ qui n’utilisait aucune bibliothèque tierce. Même pas la STL, parce qu’à l’époque on avait besoin de chaînes de caractères et de maps plus rapides et thread-safe. Boost ? C’est quoi ça ?
    On avait aussi un middleware de messagerie maison au-dessus des sockets, un système maison de gestion de processus distribués construit avec des appels système Unix, et pas une seule ligne de HTML ou de Java. C’était une vie confortable et très bien payée, où je résolvais des problèmes de pointe comme le trading haute fréquence et le calcul distribué/concurrent. En 2013, pour échapper à ce destin, j’ai fini par démissionner de force pour rejoindre une petite boîte qui me payait deux fois moins, et j’ai appris la stack web depuis zéro. J’aime à penser que ça a marché

    • Je ne pense pas que quelqu’un qui fait du C++ bas niveau dans le trading haute fréquence connaisse un destin similaire. La plupart des compétences acquises dans ce genre de boulot semblent très transférables. L’article me semble plutôt parler de postes où 95 % du travail consiste à implémenter du CRUD adapté à la logique métier propre à l’entreprise.
      La seule raison qui me viendrait à l’esprit pour changer de boulot dans ce cas serait de tenir pendant la période d’indemnisation d’une clause de non-concurrence, mais je ne suis pas dans ce secteur, donc il y a peut-être quelque chose qui m’échappe
    • « J’ai voulu apprendre la stack web depuis zéro. C’était pour échapper à ce destin. J’aime à penser que ça a marché. »
      Je ne sais pas trop si c’était de l’humour volontaire ou non
    • J’ai eu une expérience assez similaire. Pendant 7 ans, comme sous-traitant pour un grand opérateur télécom, j’ai travaillé avec les bibliothèques CORBA, pthreads et ACE reactor. La première semaine, j’ai ajouté un appel à sleep dans la base de code et j’ai mis à l’arrêt tout le service de centre d’appels dans l’environnement UAT. Quelques années plus tard, je déboguais sans difficulté des core dumps avec des milliers de threads, je comprenais les sémaphores et la réentrance, et je pouvais expliquer la différence entre les adaptateurs POA et BOA d’Orbix.
      J’étais en train de devenir cette figure légendaire qui sait tout, non pas parce que j’étais techniquement brillant, mais parce que je comprenais le métier et la façon dont il se mappait sur différents éléments d’architecture. Puis j’ai eu l’impression que je pourrais y rester toute ma vie ; en pensant qu’il existait un vaste monde appelé le Web, j’ai commencé à apprendre PHP en 2004. Après la légendaire démo Rails du « blog en 5 minutes », j’ai changé de boulot en 2007, et je ne me suis jamais retourné
    • C++, c’est vraiment rude. Tout le monde pense pouvoir faire mieux, personne ne fait confiance au code des autres, et on finit avec un énorme monolithe de code façon NIMBY et des configurations de build obscures. Les revues de code sont elles aussi extrêmement pénibles, pour les mêmes raisons typiquement C++. Tout peut affecter tout le reste, et quand on commence à dépendre d’effets de comportement liés à la mémoire, au temps et à l’ordre d’exécution, le concept d’encapsulation a tendance à s’effondrer. Chaque changement est une balle dans le pied qui explosera en production si les bonnes conditions sont réunies.
      Il est difficile d’être productif quand on ne peut faire confiance ni au langage, ni aux outils, ni aux autres développeurs pour avoir raison
    • J’ai fait un peu pareil. Je pensais que C++ allait décliner. Aujourd’hui, je maîtrise Java et JavaScript, et je peux construire de très bonnes applications full-stack. Mais les postes en C++ dans le trading haute fréquence paient le double, alors je me demande si je ne vais pas y retourner, même si les systèmes sont ennuyeux
  • Il ne faut pas vivre pour travailler, mais travailler pour vivre. Arthur, autrefois, a probablement beaucoup fait la fête, est allé au bureau sans avoir dormi et a piqué des siestes pendant les rétrospectives et les réunions d’affinage. Il a peut-être été le développeur le moins utile, mais à Burning Man, c’était peut-être un roi. Maintenant, il peut prendre sa retraite avec un 401k bien garni et fabriquer de petites figurines en bois à vendre au marché de producteurs. En réalité, il veut sans doute surtout raconter aux gens l’histoire du plus gros poisson qu’il ait jamais pêché, ou son rêve d’ouvrir un food truck de ramen si sa belle-famille accepte de co-investir. Arthur a vécu sa vie — simplement, pas au travail

    • C’est difficile quand la majeure partie de la vie, c’est le travail. Une fois qu’on retire des heures éveillées le temps plein, le sport, l’hygiène personnelle, les repas, etc., je trouve qu’il est très difficile de trouver de l’espace pour la vraie vie. En pratique, il reste environ 2 heures par jour et les week-ends, lesquels servent souvent à rattraper ce qu’on n’a pas réussi à finir en semaine.
      Je déteste l’idée que ma vie ne commencerait qu’à la retraite. Encore plus si l’âge légal de la retraite là où je vis peut être 67 ans
    • C’était sans doute un exemple inventé, mais les petits détails étaient vraiment excellents. Même si c’est par hasard, ça ressemblait pas mal à mon histoire et je me suis senti reconnu :)
    • Si c’est le cas, ce serait vraiment bien, et j’espère que la réalité de A est une variante de ce genre.
      Mais en général, ce n’est pas aussi rose. Arthur peut être en surpoids, avoir beaucoup de problèmes de santé, vivre seul et s’accrocher de manière malsaine à XYZ, par exemple aux anime ou aux jeux vidéo. Cela dit, s’il a des enfants et les a bien élevés, en tant que parent, je le respecte déjà énormément pour ça. Avec le recul, le reste n’est que détail
  • Les gens talentueux existent partout, et la probabilité de devenir quelqu’un de vraiment révolutionnaire, capable d’avoir un impact sur le monde, est absurdement faible. Si l’on accroche sa valeur personnelle à cet objectif, la santé mentale en prend un sérieux coup.
    Depuis que j’ai des enfants, mon niveau d’ambition et d’obsession a clairement changé. Avant, j’étais obsédé par l’idée d’être le meilleur ; maintenant, c’est plutôt « filez-moi juste l’argent », et ma priorité est de préserver un maximum de temps libre pour ma famille et mes amis. Une carrière comme celle de Mr. Westbrook me paraît tout à fait acceptable. Heureusement, je n’ai pas eu à subir des collègues aussi médiocres que les siens tout au long de ma carrière. Chacun veut des choses différentes, inutile de juger. Comme l’a dit la grande penseuse Alicia Keys : « Vis ta vie à ta façon »

    • J’ai compris qu’au lieu d’essayer d’être le meilleur, le simple fait d’être meilleur que le moi d’hier peut déjà mener très loin.
      Je n’ai jamais été en compétition ; j’ai simplement fait mon travail. Et, chemin faisant, je me suis rendu compte que j’en savais déjà plus et que j’étais plus avancé que beaucoup de personnes qui m’inspiraient. Mais ça n’a jamais été mon objectif, et ça ne l’est toujours pas. Je ne suis qu’un de ces développeurs de l’ombre, pour ainsi dire. Je fais juste mon travail, j’essaie de faire mieux à chaque fois, et je ne me soucie pas des panthéons, qu’ils soient légers ou sérieux
    • Sur cette question, je reste constamment comme un pendule. Je ne parle pas d’un objectif « révolutionnaire à l’échelle mondiale » ni d’un « impact sur le monde », mais du fait de vouloir faire un « excellent » travail dans la limite de mes capacités.
      Quand j’ai eu mon premier enfant, j’ai fortement penché vers l’idée de ne rien attendre du travail, si ce n’est de subvenir aux besoins de ma famille et de garder du temps avec elle. Bien sûr, tout en soutenant mes collègues et sans rompre la confiance. Mais à mesure que mes enfants grandissent et deviennent plus indépendants, j’entre dans une phase où ma disponibilité mentale et mon énergie remontent, et je ressens de nouveau de l’enthousiasme à l’idée de consacrer cette énergie à un travail qui a de l’impact. Ce qui compte, toutefois, c’est que je suis devenu beaucoup plus sage sur la manière de trouver un équilibre sain et heureux pour moi et ma famille. Je ne suis pas naïf au point de croire que ce sera facile, et je pense qu’il faudra continuer à faire des efforts. Mais en sortant du brouillard hébété des soins aux bébés, il m’est redevenu clair que me concentrer entièrement sur ma famille ou entièrement sur mon travail ne correspond pas à ma voie
    • Je vois les choses à l’inverse. La société moderne et la vie comportent tellement d’aspects, et de nouvelles voies et de nouveaux domaines apparaissent chaque année, qu’il est en réalité assez facile de trouver, dans une communauté ou une niche donnée, quelque chose de capable de bouleverser le monde et que personne n’a encore fait.
      Ce qui bouleverse le monde pour tout le monde est assez surestimé
    • D’accord. Je ne comprends pas le propos de cet article. À part un élitisme un peu sarcastique, je ne vois pas grand-chose. J’espère que l’auteur original s’est senti un peu mieux après l’avoir écrit
    • Je ne suis pas d’accord avec l’idée que les gens talentueux sont partout. Pour une personne comme Jonathan Blow, Salvatore Sanfilippo (redis) ou Mike Pall (LuaJIT), il y a probablement des milliers de développeurs ordinaires qui travaillent dans des feature factories. On ne crée pas un logiciel extraordinaire par la seule chance. Le patron de GenericCo ne va pas non plus venir te chercher exprès pour te demander de construire ce dont tu as toujours rêvé.
      On choisit de créer un logiciel intéressant, ou bien on choisit de vivre petit pour l’une des milliers de raisons parfaitement valables qui existent. Si tu te crois si exceptionnel, ne reproche pas à l’entreprise de ne pas t’avoir « donné ta chance ». Tu as déjà tous les outils nécessaires pour coder. Il suffit de construire quelque chose de génial
  • C’est drôle, mais si Arthur était heureux, ou s’il l’est maintenant, il n’y a aucun problème. Ce point n’apparaît pas dans l’article

    • Exactement. Il a peut-être passé des années dans un poste stable et confortable, avec une connaissance suffisante de la base de code et de la technologie pour avoir beaucoup de temps à consacrer à sa famille, à ses amis et à ses loisirs. Plus que cette histoire, ce sont les réactions sur HN qui me semblent effrayantes
    • Il y a bien un problème.
      Nous sommes en 2023, et aujourd’hui les entreprises sont tout à fait prêtes à te licencier dès qu’elles estiment que tu n’es pas rentable. Ce personnage fictif est allé jusqu’à la retraite, donc tant mieux pour lui. Mais quelqu’un qui a suivi cette stratégie pendant 15 ans, et qui cherche maintenant un emploi parce que l’entreprise doit réduire ses effectifs de 18 % ? Il a un gros trou dans ses compétences utiles et il lui reste des décennies avant la retraite. Cette personne est vraiment dans une situation difficile
    • Il faut aussi savoir si l’employeur était heureux. Comme il est resté 35 ans, on peut dire qu’il l’était
    • 35 ans dans un rôle facile, une bonne sécurité de l’emploi, puis une retraite anticipée. Arthur était heureux
    • Sauf que… il mange de la nourriture pour chat. Tu connais beaucoup de gens heureux qui mangent de la nourriture pour chat ?
  • Notre entreprise fabrique des dispositifs médicaux. C’est un domaine où le cycle de vie du développement logiciel est strict. Un collègue est parti dans une autre entreprise de dispositifs médicaux beaucoup plus grande, et quand je l’ai revu quelques années plus tard, il m’a dit qu’avec le recul notre boîte était une organisation ultra-agile et très performante. Dans sa nouvelle entreprise, une modification de deux lignes de code qui n’ajoute pas vraiment quelque chose et ne change pas réellement le comportement prend un an. Et ce, même s’il a continué à pousser le sujet.
    Pour être juste, modifier un système de dialyse sanguine n’a rien d’un jeu

    • Il y avait une ambiance similaire avec l’ancien commutateur AT&T 5ESS. Je ne sais pas ce qu’il en est aujourd’hui. La règle était de ne supprimer aucune fonctionnalité ; donc, au lieu de supprimer une fonction, on supprimait le code à l’intérieur. Je me souviens avoir lu qu’une personne extrêmement brillante issue des Bell Labs travaillait dans l’équipe 5ESS, et qu’à cause de toutes les règles destinées à éviter les pannes majeures du système téléphonique, elle n’écrivait qu’un nombre ridiculement faible de lignes de code par an
    • Il y a beaucoup d’analyse derrière tout ça. J’ai travaillé à la fois sur des dispositifs médicaux et dans le transport, en particulier sur des systèmes de signalisation pour matériel roulant ferroviaire. Faire bouger d’énormes masses de métal avec des gens à bord n’a absolument rien d’un jeu
  • On dirait la version programmeur du poème de W. H. Auden The Unknown Citizen [0].
    La première fois que je l’ai lu, j’y ai vu un poème triste sur quelqu’un qui avait gâché sa vie dans des choses banales et ordinaires. Aujourd’hui, je le vois comme un poème positif : en surface, il a mené une vie moyenne, mais il avait très probablement une vie intérieure riche qu’il ne partageait pas avec le monde, et il ne faut pas s’attendre à pouvoir mesurer de l’extérieur qui a été grand. Le fait que la passion de cet homme soit un mélange Soylent pour humains et pâtée pour chats est aussi excellent. Il a travaillé toutes ces années et a finalement été libéré pour se consacrer à sa passion.
    [0] https://poets.org/poem/unknown-citizen

    • Ça me fait aussi penser à Sisyphe.
      L’idée que la vie n’a pas de sens, qu’il faut être heureux dans le labeur ou la répétition, et se satisfaire plutôt du « voyage » et de chaque instant. C’est très courant dans toute la littérature et l’histoire. L’humain moderne doté de technologie aimerait se dire qu’il est différent d’une façon ou d’une autre, qu’il atteint un nouveau niveau et trouve un but, mais je n’en suis plus si sûr. Peut-être qu’on vit simplement au jour le jour, puis qu’on meurt.
      https://en.wikipedia.org/wiki/Sisyphus
      https://en.wikipedia.org/wiki/The_Myth_of_Sisyphus
    • Ça ressemble à une vie largement au-dessus de la moyenne. Pas de gros problèmes et un membre fonctionnel de la société à tous égards ? De bonnes relations ? Cinq enfants ?
      Malgré le dernier vers du poème, il semble évident qu’il était en réalité heureux. Sinon, il aurait explosé au travail, serait devenu alcoolique, aurait divorcé, etc. À moins qu’il n’ait été un stoïcien extrême.
    • De vieux vers qui résonnent avec l’air du temps actuel

      Our researchers into Public Opinion are content
      That he held the proper opinions for the time of year;
      When there was peace, he was for peace: when there was war, he went.

  • Si c’est censé être une pique contre le programmeur soi-disant ordinaire, ce n’est pas drôle.
    J’ai un ami qu’on appellera AP, qui travaille comme programmeur dans une boîte locale de développement Java. Il est resté au même endroit pendant 12 ans après son diplôme, et il correspond dans une certaine mesure à la description de l’article, mais c’est l’une des personnes les plus heureuses que je connaisse. Il gagne plus que la moyenne, le travail est facile et pas particulièrement intense. Il connaît le codebase sur le bout des doigts et s’entend bien avec ses collègues. En dehors du travail, il fait du vélo avec ses amis ou boit des bières, et il voyage dans le monde avec sa femme. Les priorités varient selon les personnes, et tout le monde n’est pas obsédé par l’excellence au travail.

    • Le texte vise les employés qui se contentent du minimum pendant des années, voire des décennies. Le passage sur les « centaines de lignes de code » est le signal.
      Il y a aussi beaucoup d’excellents ingénieurs qui travaillent sur des codebases ennuyeuses et pourries. Il n’y a pas de honte à ça.
    • Je suis l’auteur ! D’accord :) il y a plus de contexte ici
      [0] https://news.ycombinator.com/item?id=36985316
  • N’importe qui peut construire quelque chose de neuf et brillant en greenfield. Même si ça ne marche pas, on peut toujours trouver quelqu’un ou quelque chose à blâmer, puisque ce qu’on essayait de créer était censé être génial et très innovant[1]. Avec le temps, passer à une autre nouveauté brillante n’est pas seulement acceptable, c’est même attendu.
    À l’inverse, rester jusqu’au bout sur quelque chose, dans les bons comme dans les mauvais moments, n’est pas à la portée de tout le monde. Dans la plupart des cas, cela ne suffit pas à soi seul, mais ça semble nécessaire pour une réussite durable. Exemples : Guido van Rossum[2], Linus Torvalds, Daniel Stenberg.
    [1] Même pas besoin d’écrire en petits caractères le caractère « à haut risque ». Tout le monde le comprend déjà comme ça.
    [2] Je ne retrouve pas la source, mais je me souviens d’une interview où, interrogé sur le moment de percée de Python, Guido disait qu’il n’y en avait pas eu, que le langage avait simplement continué à croître régulièrement.

    • Ces exemples n’ont presque rien à voir avec le projet IT moyen d’une organisation. Le périmètre est différent, tout comme la définition du succès et la définition de « terminé ».
      Si votre entreprise crée un langage de programmation ou un système d’exploitation, il vaut mieux vous assurer que c’est vraiment ce que vous aimez faire.