Ingénieur logiciel · Écrit, teste et maintient le code qui gère la vie moderne – et est l’une des premières professions à voir l’IA automatiser son propre travail quotidien.
L’image d’un ingénieur tapant continuellement pendant huit heures est en grande partie fausse. Lire le code d'autres personnes, raisonner sur un échec sans cause évidente et expliquer un compromis technique à des personnes qui ne sont pas des ingénieurs occupe autant de travail que d'écrire du nouveau code - souvent plus, pour toute personne ayant dépassé ses deux premières années.
Le savoir-faire transmis au sein de la profession porte moins sur la langue à apprendre que sur les habitudes d'esprit : comment rechercher systématiquement un bug au lieu de le deviner, quand laisser le code fonctionnel tranquille et quand supprimer du code est la chose la plus précieuse que vous ayez faite toute la semaine.
What the work demands
Décomposition du problème
88
Débogage
90
Conception du système
74
Communication et collaboration
80
Tests et qualité du code
70
Apprentissage continu
83
Décomposition du problème
Diviser une demande vague et importante en petits éléments, constructibles et testables indépendamment : la compétence qui sépare le plus les ingénieurs productifs de ceux qui stagnent sur de grandes tâches.
Débogage
Déterminer systématiquement où et pourquoi un système se comporte mal, plutôt que de deviner et de changer les choses jusqu'à ce qu'il fonctionne.
Conception du système
Choisir comment les services, les données et les équipes doivent être divisés afin que l'ensemble puisse continuer à évoluer en toute sécurité pendant des années, et pas seulement fonctionner dès le premier jour.
Communication et collaboration
Expliquer un compromis technique à un non-ingénieur, rédiger clairement un changement pour les réviseurs et négocier la portée - la plupart des codes professionnels sont lus et argumentés bien plus qu'ils ne sont écrits.
Tests et qualité du code
Rédiger des contrôles qui détectent une modification interrompue avant qu'un utilisateur ne le fasse et garder une base de code suffisamment lisible pour que la personne suivante (souvent le même ingénieur, des mois plus tard) puisse la modifier en toute sécurité.
Apprentissage continu
Les langages, les frameworks et désormais les outils d'IA changent toutes les quelques années ; les ingénieurs qui arrêtent délibérément d’apprendre après leur premier emploi plafonnent rapidement.
A day in the life
7–9Boîte de réception, stand-up et triage
Rattraper les alertes et les messages du jour au lendemain, puis une courte réunion debout où l'équipe dit sur quoi elle travaille et ce qui la bloque.
9–12Travail en profondeur : écrire du code
Le bloc le mieux protégé de la journée, idéalement avec les notifications désactivées, consacré à la mise en œuvre d'une fonctionnalité ou d'un correctif nécessitant une concentration soutenue.
12–13Déjeuner
Une véritable pause ; De nombreux ingénieurs rapportent que c'est la première chose qui disparaît en cas de crise et la première chose qu'ils regrettent d'avoir perdue.
13–16Bilans, jumelages et rencontres
Lire les pull request de collègues, s'associer pour résoudre un problème difficile et participer à des réunions de conception ou de planification qui ont tendance à se dérouler dans l'après-midi.
16–19Débogage, déploiements et conclusion
Terminer et expédier la monnaie de la journée, la surveiller en toute sécurité et laisser des notes pour demain ou pour toute personne de garde pendant la nuit.
19–7Hors du temps (principalement)
Temps personnel et sommeil, sauf s'il s'agit d'une semaine de garde, où une alerte téléphonique peut transformer 3 heures du matin en un incident de production imprévu.
The know-how
Craft knowledge practitioners actually pass on — not motivation.
01
Bisect, ne devine pas
Lorsqu'un bug apparaît quelque part entre une version fonctionnelle et une version cassée, effectuez une recherche binaire dans l'historique au lieu de regarder la différence - vérifiez le point médian, puis répétez jusqu'à ce qu'un changement soit laissé en place.
02
Lisez l'échec avant de lire le code
Le message d'erreur complet, la trace de la pile et les lignes de journal environnantes contiennent généralement déjà la réponse ; Sauter directement à la source et deviner gaspille la seule preuve que l'ordinateur vous a librement fournie.
03
Facilitez le changement, puis effectuez le changement facile
Lorsqu’une fonctionnalité est difficile à ajouter, c’est généralement le signe que le code n’est pas adapté à cette fonctionnalité. Refactorisez d'abord, sans changement de comportement, jusqu'à ce que la fonctionnalité devienne une petite différence évidente - puis faites cette différence.
04
La clôture de Chesterton
Avant de supprimer ou de simplifier du code, une valeur de configuration ou une vérification que vous ne comprenez pas, découvrez pourquoi il a été placé là. Il s'agit peut-être d'une protection discrète contre un échec qui ne s'est pas produit depuis des années, précisément pour cette raison.
05
La suppression du code est en cours
Le code qui n’existe plus ne peut pas contenir de bug, ne peut pas dérouter le prochain lecteur et ne peut pas nécessiter de mise à jour. La suppression des chemins morts et des fonctionnalités inutilisées doit être célébrée de la même manière que l'expédition d'une fonctionnalité.
06
Débogage du canard en caoutchouc
Expliquez le problème à voix haute, ligne par ligne, à un collègue ou même à un objet inanimé avant de demander de l'aide. Le fait de l’articuler avec précision fait souvent apparaître le bug avant que quiconque ne réponde.
Tools of the trade
Editeur de code / IDE
Visual Studio Code et les IDE de JetBrains dominent ; les deux créent désormais une saisie semi-automatique assistée par l'IA et discutent directement dans l'éditeur.
Git
Le système de contrôle de version a été standardisé par presque toute l'industrie après que Torvalds l'ait écrit en 2005 ; presque rien n’est expédié sans lui.
Suivi des problèmes
Les problèmes Jira, Linear ou GitHub transforment un arriéré de bugs et de fonctionnalités en quelque chose qu'une équipe peut planifier sur une semaine ou un trimestre.
Pipeline CI/CD
Des systèmes automatisés qui créent, testent et déploient du code à chaque modification, transformant ainsi une version d'un événement manuel nerveux en une version de routine.
Assistant de codage IA
Des outils comme GitHub Copilot écrivent désormais une grande partie des lignes acceptées par un ingénieur, orientant le travail quotidien vers la révision et la direction plutôt que vers la saisie.
How people fail at it
Développement axé sur le CV
Choisir un langage, un framework ou une architecture à la mode parce qu'il semble bon sur un CV plutôt que parce qu'il correspond au problème, laissant derrière lui la complexité que l'équipe suivante devra maintenir.
Je ne lis pas le message d'erreur
Faire correspondre un modèle à un correctif mémorisé au lieu de lire ce que le programme rapporte réellement, ce qui peut passer des heures à rechercher la mauvaise cause.
La réécriture du big bang
Mettre au rebut un système fonctionnel pour le reconstruire « correctement » à partir de zéro est une décision notoirement risquée : la réécriture complète de son navigateur par Netscape à la fin des années 1990 est un cas largement cité où cela a coûté à l'entreprise son avance sur le marché.
Métiers proches
Voisins les plus proches sur le profil à six scores — pas seulement le même champ.