- Dans la big tech, vraiment terminer un travail signifie le mener jusqu’au point où l’entreprise en est satisfaite, puis passer à autre chose, dans un système améliorable à l’infini
- Un ingénieur compétent mais manquant d’initiative risque de répéter sans fin de petites améliorations et de passer à côté de vrais résultats
- Il faut livrer aux décideurs des résultats clairs et visibles pour être reconnu comme quelqu’un qui a vraiment « travaillé »
- Il faut toujours vérifier si ce que l’on fait est présenté sous une forme que les managers de haut niveau peuvent lire et évaluer
- On ne peut pas tout peaufiner, et à un certain stade, la capacité à « déclarer la victoire et partir » devient une compétence clé
Le « travail » a une nature qui ne peut pas être totalement achevée
- Contrairement à un problème de maths ou à un devoir, le travail dans le monde réel est un système ouvert améliorable à l’infini
- Développer un service ressemble à planter un arbre : c’est un processus qui demande une gestion continue
Le piège dans lequel tombe l’ingénieur compétent
- L’ingénieur qui assume tout lui-même et enchaîne seulement de petites améliorations continues a l’impression d’obtenir des résultats, mais
- du point de vue du management, cela peut être jugé comme une absence de création de valeur visible pour l’entreprise
- Au final, il peut être perçu à tort comme quelqu’un de très occupé mais sans résultats
Le vrai sens de « terminer »
- Amener le travail jusqu’au point de satisfaction de l’entreprise (des décideurs), puis passer à la suite
- Au lieu de continuer à refactorer ou à répéter de petites améliorations, il faut produire une liste claire de résultats
- La capacité à déclarer que « c’est terminé » et à passer au sujet suivant est essentielle
Rendre le travail « lisible »
- Les projets déjà connus des managers, ceux qu’ils ont demandés, ou les réponses à un incident majeur ont une forte lisibilité
- Par défaut, la plupart des tâches techniques ne sont pour les managers qu’un bruit technique difficile à évaluer
- Il faut donc mettre les résultats sous une forme visible ou souligner leur impact financier, autrement dit les rendre lisibles
« Terminer » est un concept social
- Philosophiquement, l’idée même d’avoir « terminé » est aussi une construction sociale, mais dans la réalité, elle a un pouvoir très concret
- L’ignorer peut empêcher d’être reconnu, et peut même finir par mener au licenciement
Résumé
- Travailler ne veut pas dire avoir terminé
- La plupart des tâches ne peuvent pas vraiment se terminer et peuvent se prolonger indéfiniment
- Il faut être non pas un jardinier, mais un tacticien orienté résultats
- Le critère du « c’est terminé » est la satisfaction de l’entreprise / du management
- Déclarer la victoire → partir → passer au travail suivant constitue la stratégie clé
7 commentaires
Choisir un travail suffisamment propice pour pouvoir déclarer victoire semble aussi être une compétence importante.
On appelle cela le scoping : limiter le périmètre. Savoir bien scoper pour se mettre en position de réussir, c’est une vraie compétence.
Hanshin vs. Soha
Des résultats visibles et quantifiables, pas des détails
Avis Hacker News
Je ne suis pas totalement en désaccord avec la thèse de cet article, mais pour avoir travaillé dans la big tech, dans plusieurs startups et dans des licornes, je ne trouve pas que ce soit un conseil très concret. Ces dix dernières années, le travail des développeurs est devenu tellement spécialisé qu’il s’est éloigné des décideurs et des besoins des clients. Cela arrive parce que les Product Managers s’intercalent entre les ingénieurs et le reste de l’entreprise. J’essaie toujours de produire des résultats utiles, mais en pratique, cela exige d’accepter un stress permanent. Ma contribution est forcément remaniée après être passée par l’ego de la personne qui parle aux décideurs. Le seul moment où j’ai vraiment eu un sentiment d’accomplissement au cours des cinq dernières années, c’est quand j’ai assuré pendant neuf mois un rôle temporaire de Product Manager. Pendant cette période, notre équipe a mené à bien trois projets que d’autres équipes avaient déjà ratés plusieurs fois. Le secret, c’était de parler réellement aux parties prenantes pour comprendre leurs besoins, pas d’essayer de faire les choses à ma façon. Donc à l’avenir, je vais continuer à livrer uniquement ce qu’on me demande, à me faire reprocher les bugs, et à ne recevoir aucun crédit pour les fonctionnalités. Au moins, la rémunération est correcte. Je continue malgré tout à chercher un endroit où je pourrai vraiment contribuer
Je m’oppose fondamentalement à l’idée que la réussite se mesure uniquement au fait de satisfaire les puissants. Nous sommes certes pris dans des structures de statut ridicules, mais je ne pense pas que tout se résume à passer un ticket Jira en « Done » ou à faire disparaître des avertissements du compilateur. Personne ne se dit « je ne regrette rien, j’ai passé 40 ans à satisfaire mon chef à chaque fois »
Globalement d’accord, mais j’ajouterais une chose : pour comprendre ce que veut son manager, il faut comprendre la structure business de l’entreprise. Il faut absolument savoir par soi-même comment l’entreprise gagne de l’argent et ce qu’elle considère comme précieux. Quand on travaille dans un endroit aligné avec ses valeurs, la rémunération est meilleure et la satisfaction aussi. Il est important de rencontrer directement les clients, bien sûr, mais aussi les ventes, le marketing, et, autant que possible, les dirigeants. Même si on travaille seulement sur des systèmes internes, il est essentiel de savoir où ces systèmes créent ou protègent de la valeur. Si votre service ne crée pas clairement de valeur, il faut envisager de rejoindre une équipe qui en crée. Travailler à contre-courant des besoins de l’entreprise a toujours été une grosse erreur
L’auteur dit qu’il faut « produire des résultats visibles pour les décideurs », et je partage cet état d’esprit très orienté « business ». Beaucoup de développeurs peinent parce qu’ils ne savent pas expliquer l’utilité business de leur travail. Le refactoring en fait partie. Améliorer du code peut sembler n’avoir aucun intérêt à court terme, mais selon le contexte, cela peut produire d’énormes bénéfices pour l’organisation. Au fond, l’essentiel est de réfléchir à la manière de relier son travail aux revenus ou aux économies de l’organisation, et de savoir le communiquer
Je me demande si cet état d’esprit n’explique pas pourquoi tant d’ingénieurs ne se soucient pas de la qualité du code, des tests ou de la documentation. Si l’on ne pense qu’à satisfaire immédiatement les personnes haut placées, qui va s’efforcer d’écrire du code maintenable sur la durée ? On n’a peut-être pas besoin d’une qualité au-delà des standards, mais même un investissement minimal peut faire économiser des milliards
J’ai souvent vécu cette réalité et ces problèmes, je les comprends, mais je continue à m’y opposer. Beaucoup de projets sont lancés, puis on annonce « problème résolu, done ! » et l’équipe est dissoute. Mais le produit a toujours des problèmes, il faut encore ajouter des fonctionnalités, et l’entreprise continue d’évoluer. Au final, on ne fait qu’accumuler de la dette technique à cause d’une mauvaise gestion. Un nouveau manager arrive, relance l’ancien projet et refait exactement les mêmes erreurs. Cette manière de faire est inefficace. Si on prend l’analogie de la climatisation, maintenir une température constante est plus efficace que l’éteindre puis la redescendre à chaque fois. En pratique, l’outil de gestion que j’ai créé n’intéressait pas la direction, mais il était suffisamment nécessaire pour être utilisé par plus de 500 personnes en interne. Il était important de conserver cette confiance dans le temps, sans y consacrer énormément de maintenance. Si on l’abandonne, tout se disperse et l’outil perd sa fiabilité. Quelques minutes suffisaient pour garder de la cohérence
J’ai des sentiments mitigés à plusieurs égards. Il est clair que ce texte a raison sur la visibilité et les promotions, mais dans les faits, c’est un conseil centré sur les managers : il suffirait de les satisfaire. Mais que se passe-t-il si aucune direction claire n’est donnée et que les priorités changent sans cesse ? Il devient difficile de produire des résultats utiles, et la relation manager-subordonné se transforme entièrement en système de « yes-man ». Le résultat n’est pas très bon
Un « unagentic engineer », c’est un ingénieur sans autonomie. Si un ingénieur travaille de cette façon, cela peut conduire à de l’inefficacité et à des problèmes graves comme des coûts cloud excessifs, des incidents de sécurité ou des plaintes clients. Parmi les exemples de travail qui ne se termine jamais, on peut citer les correctifs de sécurité, la correction des erreurs, l’optimisation des coûts et la prise en compte des retours clients. Si l’entreprise ne comprend pas la valeur de tout cela, il faut changer d’emploi
Je déteste profondément les buzzwords comme « alignment ». Mais cela reste, au fond, un concept important. Idéalement, moi, mon manager et même les dirigeants au-dessus devrions être d’accord sur ce qui est le plus important. Si ce n’est pas le cas, c’est un problème du point de vue de quelqu’un qui appartient à cette organisation. Que ce soit juste ou équitable importe peu : nous vivons en nous y adaptant. Au final, faire ce qu’on nous dit de faire est la raison pour laquelle nous sommes payés. Très peu de gens ont le privilège d’influencer ceux d’en haut. C’est ce qu’on appelle le « managing up »
Le texte original est utile, mais il me semble qu’il manque des points encore plus importants :
Ces avis touchent au contraire plus juste sur l’essentiel.
C’est clair haha