- Contrairement au plaisir que procure la programmation en elle-même, le monde du travail logiciel est perçu comme un environnement qui exige de produire davantage de code plutôt que de s’interroger sur l’objectif de la conception et les critères de réussite
- Le fait d’avoir consulté des offres d’emploi pendant რამდენიმე semaines en 2023 a brisé l’espoir qu’il puisse exister « un meilleur endroit », et la culture startup révèle en particulier de manière explicite l’attitude consistant à « moins poser de questions et produire davantage »
- Même dans les grandes entreprises technologiques, les développeurs sont traités comme des chiffres — taille de la stack backend, score d’entretien, note d’évaluation de performance — et le jugement personnel sur la manière d’écrire du code devient encore plus insignifiant
- L’attitude consistant à « produire plus et questionner moins » peut augmenter la quantité de code, mais mène aussi à de plus mauvais logiciels, et les effets de mode ainsi que l’inertie imprègnent les langages, bibliothèques, frameworks et jusqu’aux patterns de code
- Le travail que l’auteur souhaite faire consiste à résoudre des problèmes d’ingénierie issus de besoins déjà présents dans la société, et le « pourquoi » d’un système devrait déterminer jusqu’au langage, au paradigme, à l’architecture et à la syntaxe
Le décalage ressenti dans les emplois du logiciel
- L’auteur explique qu’il ne s’est jamais vraiment reconnu dans aucun des postes de software engineering qu’il a occupés
- Une fois la logique interne d’une codebase comprise dans une certaine mesure, les aspects techniques devenaient ennuyeux, et il en venait alors à vouloir faire les choses autrement plutôt que simplement en faire davantage
- Il revenait sans cesse aux questions suivantes sur les choix de conception et leur finalité
- Pourquoi fait-on cela ?
- Pourquoi le fait-on de cette manière ?
- N’existe-t-il pas une meilleure façon de faire ?
- Quels sont les indicateurs qui servent à juger du succès, et pourquoi utilise-t-on ceux-là ?
- Il n’exprimait pas toujours ces questions à voix haute, mais on lui reprochait de « trop réfléchir » et de « trop se soucier des choses », alors qu’il aurait pu consacrer ce temps à produire plus de code
- Ce n’est pas simplement un problème d’inadéquation entre talent et poste : il lui était difficile d’adhérer à la manière même dont les organisations fonctionnent, et il voulait les transformer plutôt que les perpétuer
Les offres d’emploi dans les startups et le « produire plus, questionner moins »
- Le fait d’avoir passé plusieurs semaines à examiner des offres d’emploi en 2023 a détruit l’idée qu’« un meilleur endroit » pouvait exister
- Il estime que 90 % des descriptions de poste concernaient un code que la personne recrutée écrirait pour des problèmes paraissant déconnectés, non seulement de l’humanité, mais aussi de toute question importante à l’échelle individuelle
- La culture startup est présentée comme l’exemple le plus explicite de l’attitude de l’industrie consistant à « produire plus de code et poser moins de questions »
- De nombreuses startups sont critiquées pour déplacer l’argent des investisseurs et tenter de convaincre des utilisateurs qu’ils ont besoin de produits seulement utilement de façon limitée afin d’obtenir des clients payants
- Les startups échouent généralement, et il en reste alors un code spaghetti difficile à maintenir, écrit sous pression non pas en quelques mois mais en quelques semaines
- Ce code n’est ensuite presque jamais revu, sauf éventuellement comme exemple de mauvaises pratiques de développement ; le temps des ingénieurs est gaspillé, et le capital-risque finit par revenir vers des personnes qui disposent déjà d’un capital important, pour être réinjecté dans d’autres startups
- Les annonces de recrutement sont critiquées pour emballer ce type de travail comme s’il s’agissait d’une activité passionnante, enrichissant la vie des gens et stimulant la progression en ingénierie
Une autonomie qui disparaît aussi dans les grandes entreprises technologiques
- Les entreprises technologiques établies diffèrent des startups par leur structure organisationnelle et financière, mais le contraste culturel n’est pas si grand
- Le code écrit chez les FAANG peut effectivement atteindre de vrais utilisateurs, mais les opinions personnelles sur certains aspects de la manière d’écrire ce code deviennent encore moins pertinentes
- Les développeurs sont critiqués comme devenant des rouages d’une machine des manières suivantes
- Les produits peuvent automatiser de manière toujours plus insidieuse les pires aspects du capitalisme
- Dans la pratique, les développeurs deviennent des nombres : taille de la stack backend, score aux entretiens techniques, note d’évaluation de performance
- Le problème n’est pas seulement cette réalité elle-même, mais aussi le fait que les ingénieurs sont censés désirer davantage que d’autres travailleurs ce labeur répétitif, vide et humiliant, tout en étant plus fortement empêchés d’en questionner le moindre aspect
Une ingénierie qui exclut la pensée critique
- Les programmeurs sont placés dans une position où ils se concentrent uniquement sur le comment, ne participent que rarement au choix de ce qu’il faut construire et ne peuvent presque jamais demander pourquoi on le construit
- Même pour les développeurs capables de critiquer les systèmes qu’ils produisent et désireux de le faire, le message est que cette attitude doit rester hors du lieu de travail
- Les développeurs ont le sentiment qu’il leur est interdit jusqu’à identifier le manque d’autonomie et de créativité inhérent à leur poste ; ils peuvent produire davantage, mais ont du mal à produire différemment ou à produire mieux
Une structure où le volume de code augmente mais où le logiciel se dégrade
- L’attitude do-more-ask-less de l’industrie tech permet certes de produire davantage de code, mais elle conduit aussi à de plus mauvais logiciels
- Même lorsque le capital et les conditions extérieures laissent de la place à des logiciels durables, positifs ou au moins pratiquement utiles, l’inertie conduit souvent à ne pas emprunter cette voie
- Il est plus facile, et généralement plus réalisable, de suivre les modes et de reproduire l’existant
- La même inertie imprègne l’ensemble de la stack technologique sur laquelle se construisent des produits socialement peu utiles
- langages
- bibliothèques
- frameworks
- patterns de code
- La préférence donnée à la nouveauté et aux gimmicks plutôt qu’à l’innovation réelle mine l’ensemble de l’industrie, et si l’on ne résout pas des problèmes atypiques, il n’y a plus besoin non plus d’une ingénierie atypique
Les critères de l’ingénierie souhaitée
- Les problèmes d’ingénierie les plus intéressants ne sont pas ceux qui prennent le progrès technique pour fin en soi ou qui cherchent à créer artificiellement une demande de marché inexistante, mais ceux qui naissent naturellement dans la société
- Les besoins sociaux sont le meilleur moteur de l’innovation, et les avancées majeures de l’informatique à ses débuts sont elles aussi survenues au service d’un bien public plus large
- La manière de travailler souhaitée est une manière où le pourquoi de la construction d’un système guide tous les comment
- langage de programmation
- paradigme
- architecture
- chaque ligne de code
- éléments de syntaxe
- Ce « pourquoi » ne devrait pas refléter des indicateurs business qui existent pour eux-mêmes, mais un besoin réel qui existe bel et bien
Appel à trouver des personnes partageant les mêmes valeurs
- L’auteur explique n’avoir encore jamais rencontré quelqu’un qui partage de façon significative ces valeurs et qui souhaite faire ce type de travail d’ingénierie
- Il dit se sentir souvent isolé dans ses interactions avec l’industrie, mais reste convaincu de l’importance de ses valeurs de travail et de ce qu’il estime devoir dire
- Il demande à être contacté par toute personne de ce type, souhaite savoir si un tel lieu existe déjà, et pense que sinon il serait utile de le créer ensemble
- Il reste ouvert à des missions de conseil relevant de ses centres d’intérêt et raisonnablement alignées avec ses valeurs
1 commentaires
Avis sur Hacker News
Ce que l’OP déteste, ce n’est pas tant « l’industrie de la programmation » que le monde de l’entreprise. J’ai travaillé avec des développeurs dont les attentes sur ce que « la réalité » exige des développeurs étaient en décalage, et cela m’est aussi arrivé
Les entreprises ne s’intéressent pas à l’élégance, à l’abstraction, ni au code ingénieux ou beau. Elles veulent des développeurs capables de produire des fonctionnalités conformes aux besoins métier
Les individus pris dans les rouages — managers, dirigeants, collègues — peuvent dire qu’ils vous laisseront pratiquer « l’art » de la programmation, mais si vous ne contribuez pas économiquement à l’entreprise, vous finirez par être considéré comme un poids
Mieux vaut chercher le plaisir et la dimension artistique de la programmation en dehors de l’entreprise, et ne pas attendre de « l’industrie » qu’elle se soucie de la manière de programmer ou des raisons de le faire. Elle regarde seulement si les caractères tapés à l’écran peuvent être convertis en argent. Une fois qu’on l’accepte, la vie devient beaucoup moins frustrante, et on peut aussi trouver du plaisir au travail. Même si ce ne sera pas forcément de « l’art »
Cela dit, quand on dit que « les entreprises ne s’intéressent pas à l’élégance, à l’abstraction, à l’ingéniosité ni au beau code », je me demande si, dans ce cas, ce n’est pas moi le monde de l’entreprise
Ce que j’aimerais dire à mes collègues, c’est qu’avant de tenter l’élégance, l’abstraction, l’ingéniosité ou la beauté, il faut d’abord faire en sorte que ça fonctionne conformément aux spécifications. Sinon, tout le reste ne vaut rien
Ce n’est qu’une fois qu’on est devenu raisonnablement compétent pour faire fonctionner correctement les choses qu’on peut ensuite les faire bien, et peut-être même les faire vite
Même si l’on transforme ce qu’on aime en activité professionnelle, par exemple fabriquer des meubles, il arrivera que les clients veuillent quelque chose de « mauvais » ou ne veuillent pas payer pour de meilleurs matériaux rares
Il est toujours préférable de faire ce qu’on aime purement comme hobby, sans les composantes du travail
Si l’on est payé, c’est pour livrer. Que ce soit efficace, que le problème soit résolu, que cela rapporte de l’argent ou que la case soit cochée, ce ne sont ni mes préoccupations ni des choses sous mon contrôle. Il suffit de planifier son travail, de le faire, d’être aimable avec les gens, puis de partir à 17 h
Cela ne veut pas dire qu’il faut bâcler en écrivant du mauvais code ou en ignorant les effets en aval des décisions. Certaines personnes se font licencier pour ce genre de raisons
Le plus important est de ne pas en faire trop. Il vaut mieux ne pas essayer de prévoir toutes les évolutions possibles du produit et couvrir tous les scénarios, ne pas imposer une conception manifestement meilleure, ne pas chercher à livrer plus vite, et ne pas corriger les autres bugs découverts en cours de route. Courir après une promotion a été l’une des pires sources de stress que je me sois infligées
Il faut comprendre si le projet auquel on appartient est très intense, en forte croissance, mature, ou sur le point d’être supprimé, et agir en conséquence
Et il faut prendre le ballon et se rendre visible. Faire une démo une fois par trimestre, relire le code des autres, participer aux réunions de conception et poser des questions, répondre rapidement aux e-mails ou messages arrivés avant 17 h, et livrer ce qu’on a dit qu’on livrerait. Il faut apparaître comme une ressource utile, tout en repoussant par ses actes le moindre signe de pression à la livraison
Enfin, il vaut mieux être toujours prêt à passer un prochain entretien dans les deux semaines
Un travail n’est qu’un travail. Ce n’est pas une famille, ni une agence de placement
Le fait que les ailes restent attachées en vol n’améliore pas les indicateurs clés de performance, donc on finit par dire qu’il faut licencier tous ceux qui perdent du temps avec ce genre de préoccupations sans rapport
L’objectif implicite est de devenir suffisamment populaire pour atteindre le point où les programmeurs s’accordent collectivement à dire qu’ils doivent avoir voix au chapitre dans « le monde de l’entreprise ». Par exemple, en exigeant de ralentir le rythme de « production » de nouvelles fonctionnalités et d’investir davantage dans la qualité logicielle
J’ai travaillé comme développeur pendant plus de 30 ans, et malheureusement, je n’ai pas grand-chose à opposer au message de l’auteur original. J’aimerais pouvoir le faire.
Les jeunes apprennent que créer de la technologie et du logiciel est une activité créative où l’on peut exprimer une passion innée. Ce métier attire un certain type d’esprit, sensible aux symboles, aux abstractions et aux activités répétitives. Les années passent, et les actionnaires s’engraissent.
La vérité, c’est que le développement logiciel est presque entièrement une activité économique, avec en plus une dimension exploiteuse. L’environnement de travail est certes bien meilleur que l’extraction de l’or ou de la bauxite, mais la plupart d’entre nous extraient du code de filons de code pour enrichir quelqu’un d’autre. Les gens dans les bureaux d’angle, et au-dessus d’eux ceux qui possèdent des yachts.
Ils se fichent de ce que nous faisons, de notre prétention à considérer cela comme de l’art ou de l’artisanat, et de ce que nous jugeons important. En réalité, la plupart nous voient comme des losers qui perdent leur temps https://ribbonfarm.wpenginepowered.com/wp-content/uploads/2009/10/hughMcLeodCompanyHierarchy.jpg
Comme d’autres l’ont dit ici, l’erreur fondamentale est de chercher du sens dans le travail en entreprise. Mais les humains ont besoin de sens, et puisqu’il faut consacrer au travail une trop grande part de notre unique vie, il n’y a pas beaucoup d’alternatives. Je n’ai pas la réponse.
Il existe au moins deux catégories de personnes qui considèrent la « plèbe » du logiciel comme des losers.
La première pense que ce travail exige de la compétence, que les travailleurs possèdent une expertise précieuse et qu’ils méritent d’être écoutés. Mais ils ne restent que des marchandises salariées, pas de vrais acteurs capables, comme eux, d’être « la personne la plus intelligente de la pièce » ou des « leaders » largement récompensés ; donc ce sont des losers.
La seconde considère que le travail logiciel est une tâche subalterne peu qualifiée, que les travailleurs sont un mal nécessaire temporaire, et qu’ils sont arrogants et ne connaissent pas leur place quand il est question de rémunération et de loyauté. Leurs opinions n’ont aucune valeur à leurs yeux. Bien sûr, dans le monde des affaires, comme les travailleurs du logiciel ne peuvent pas agir comme de vrais acteurs ni en tirer un profit personnel, ils sont vus comme des losers.
La seconde situation est de loin la pire.
Si ce que je crée rend quelqu’un d’autre riche, tant mieux. Cela veut dire que ce que j’ai créé a de la valeur. J’espère que tout ce que je crée a de la valeur.
Un jour, quand j’aurai suffisamment pratiqué, appris, accumulé de l’expérience et de l’épargne, j’espère pouvoir embaucher d’autres personnes de manière responsable.
Si j’ai une bonne idée et que je l’exécute correctement, il se peut que moi aussi j’aie ce yacht. C’est ce qu’on appelle une incitation économique, ou une motivation.
Je considère depuis longtemps que « la direction que prend l’industrie » est un processus d’infiltration par les arnaqueurs. La valeur que l’on peut créer en écrivant du logiciel est immense, et les salaires élevés dans la tech le reflètent. Cette richesse attire toutes sortes d’arnaqueurs.
C’est particulièrement visible dans le jeu du chat et de la souris du recrutement d’ingénieurs qualifiés. Le ratio entre le haut et le bas de l’entonnoir de recrutement n’a jamais été aussi élevé.
Moins évident : des « rôles d’arnaqueurs » entiers sont apparus, comme les product managers ou les scrum masters. Une fois à l’intérieur, plus ils sont nombreux, plus ils sont en sécurité, alors ils en font venir davantage.
Les gens intelligents capables d’innover doivent désormais guider pas à pas des personnes incompétentes à travers les processus de créativité, d’innovation, de recherche, de découverte et d’ingénierie. Parce que ces personnes incompétentes ont souvent le dernier mot sur la manière dont les gens intelligents doivent employer leur temps.
Si vous avez déjà vécu une réunion où, au bout de dix minutes, les ingénieurs savent comment résoudre le problème client, puis où les product managers doivent être accompagnés chacun leur tour jusqu’à la même conclusion, voilà à quoi cela ressemble.
On se retrouve avec des problèmes de performance, des failles de sécurité, une absence d’observabilité, une mauvaise scalabilité, des problèmes absurdes de configuration ou de dépendances.
Les entreprises FAANG, en particulier, sont remplies de ce genre de déchets : du code écrit pour servir de « billet de vantardise » en vue d’une promotion, puis pratiquement abandonné quand son auteur part ailleurs avant que les raccourcis bon marché ne se voient.
Pour un ingénieur logiciel, savoir bien baratiner est devenu une compétence plus précieuse qu’une conception solide, et les résultats se voient partout.
Après plus de 10 ans dans le développement de logiciels d’entreprise, je ne me soucie plus vraiment des résultats ni de la direction que prend ce cirque.
Aujourd’hui, la seule chose qui m’importe, c’est la paie avec un salaire ridiculement élevé qui tombe dessus.
J’appelle ça du développement où l’on s’en soucie juste assez maintenant pour ne pas avoir à beaucoup s’en soucier plus tard.
J’ai passé 40 ans comme programmeur, mais j’ai toujours cherché des façons d’utiliser ma créativité et mon imagination, sans devenir quelqu’un qui se contente de taper du code mécaniquement.
Dans mon dernier poste, je dirigeais une petite équipe qui produisait du code stratégiquement important, et nous avons réussi. Si ce code ne fonctionnait pas en permanence, 100 000 personnes se mettaient en colère chaque jour, avec toute une série de dirigeants furieux à la clé.
Au final, épuisé de travailler trop dur, j’ai décidé de prendre ma retraite.
Si votre travail ne vous motive plus, il faut trouver une nouvelle manière ou un nouvel endroit où être programmeur. Par exemple créer votre propre entreprise ou tenter quelque chose de nouveau. Sinon, il faut chercher un autre métier.
Se réinventer n’est pas facile, et c’est encore plus difficile aujourd’hui, mais si on le veut assez, c’est possible.
Même quand on travaille pour les maîtres de l’entreprise, programmer donne de l’énergie. Persuader une machine de faire ce que je veux ne me lasse jamais. Je pourrais le faire toute la journée sans m’épuiser
Les rares périodes où il y a beaucoup de programmation, il m’arrive de perdre la notion du temps et de réaliser après coup que j’ai enchaîné 15 heures d’affilée. Ça dure depuis presque 20 ans
Malheureusement, la programmation n’est qu’une petite partie du travail. Plus ma carrière avance, plus c’est évident. Parfois, je ne passe qu’une ou deux heures par semaine à coder réellement
Le reste part dans des réunions grotesques, à tenir la main de gens qui ne lisent pas, à convaincre d’autres personnes de convaincre les machines de faire ce qu’il faut, dans la « planification » et autres bruits du même genre. La seule partie gratifiante, c’est de mentorer de jeunes programmeurs
Si je continue, c’est parce que c’est une voie sûre vers la retraite et que j’y suis presque. Mon plan pour la retraite est de programmer, par pur plaisir, les choses que j’ai envie de créer
Je pense qu’une partie du problème vient du fait que beaucoup de développeurs veulent travailler sur des projets qui ont du sens avec des gens bien, tout en conservant le niveau de salaire qu’ils ont aujourd’hui chez $FAANG ou les parts qu’ils pourraient obtenir chez $STARTUP
En réalité, les employés traitent le sens, l’autonomie, l’initiative et l’équilibre vie pro-vie perso comme une monnaie, et acceptent parfois une baisse de salaire pour obtenir un travail qui a du sens
De meilleurs postes existent. J’en ai trouvé un. Mais si vous travaillez aujourd’hui dans une entreprise d’ad tech ou une startup d’IA, il faudra presque certainement vous préparer à voir des salaires bien inférieurs à ceux auxquels vous êtes habitué
J’ai grandi dans une famille modeste et, adulte, j’ai vécu plusieurs fois avec très peu d’argent, donc ça me semble naturel. À certains égards, je le préfère presque
Ma santé mentale est plus facilement menacée par un stress excessif ou par l’absence de sens que par un budget serré
Continuer à faire un travail que je ne perçois pas vraiment positivement, voire pire, qui ne m’inspire que des émotions négatives, n’a de sens que si j’ai un plan très concret pour l’argent supplémentaire gagné et une très forte probabilité de l’exécuter
Ce mode de vie ne convient pas à tout le monde, mais si vous êtes moins matérialiste que la moyenne ou si une vie plus frugale ne vous fait pas peur, je vous recommande vivement d’y réfléchir. Surtout si, ces temps-ci, vous vous demandez au moins une fois par semaine combien de temps encore vous pourrez tenir dans « ce super boulot » sans vous effondrer
Les outils que nous créons aident les personnes qui construisent des objets réels à travailler de manière plus sûre et plus efficace. Voir des projets tangibles et impressionnants sortir de terre, c’est vraiment génial
Comme cela a été dit, la rémunération chez FAANG est bien plus élevée, mais j’aime vraiment l’endroit où je travaille actuellement et, pour la première fois depuis longtemps, je ne ressens pas l’envie de chercher ailleurs après quelques années
La plupart n’ont pas les moyens de payer de gros salaires. Elles ont besoin de personnes intéressées et très autonomes. Il faut aussi être prêt à faire preuve de flexibilité de plusieurs manières, et dans une petite entreprise, beaucoup plus de choses sont négociables
Ces entreprises ne vous tomberont pas facilement sous les yeux, il faut aller les chercher
La solution est de devenir indépendant et de créer ses propres idées pour les vendre aux consommateurs. Ça peut être sa propre startup, mais dans mon cas, c’était devenir développeur de jeux indé
L’un de mes jeux, YOYOZO, a été sélectionné par Ars Technica dans les « Best Video Games of 2023 », donc j’ai le sentiment d’avoir pris la bonne décision
C’est comme aimer le sexe mais ne pas vouloir devenir prostitué. Quoi que l’on fasse, si on ne le fait pas selon ses propres conditions, on peut devenir malheureux
Je ressens quelque chose de similaire à propos de LeetCode
J’aime le génie logiciel, mais LeetCode me fait détester le génie logiciel
Je veux simplement construire des choses cool. Je n’ai pas envie de mémoriser et d’implémenter en 40 minutes un cache LRU ou encore un autre problème LeetCode de niveau moyen-difficile
Bien sûr, certaines entreprises ne voudront pas me parler à cause de ça, mais ça me va. De toute façon, je n’ai jamais réussi ce genre d’entretien, et j’ai toujours dû trouver des postes où il n’était pas nécessaire de faire du live coding pendant l’entretien
L’attente est en réalité de mémoriser parfaitement la solution optimale. Cette solution a probablement été trouvée par quelqu’un de niveau doctorat qui faisait de la recherche en algorithmique
Au bout du compte, vous finirez simplement par implémenter un endpoint pour un CRUD avec 1 000 utilisateurs actifs mensuels