Skip to content

💻Craft & Know-How

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.

Partager cette page

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

889074807083
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

Boîte de réception, stand-up et triageTravail en profondeur : écrire du codeDéjeunerBilans, jumelages et rencontresDébogage, déploiements et conclusionHors du temps (principalement) 036912151821 24h
  1. 7–9 Boî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.

  2. 9–12 Travail 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.

  3. 12–13 Dé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.

  4. 13–16 Bilans, 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.

  5. 16–19 Dé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.

  6. 19–7 Hors 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.

Débogage de recherche binaire standard, automatisé par la commande bisect de Git
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.

Fait écho dans Brian Kernighan et Rob Pike, The Practice of Programming (1999)
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.

Kent Beck
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.

G.K. Chesterton, The Thing (1929), adopté comme folklore d'ingénierie
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é.

Repris par Jeff Atwood, Coding Horror, 2007 (« le meilleur code est l'absence de code du tout »)
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.

Le programmeur pragmatique, Andrew Hunt et David Thomas (1999)

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.

Continuer à explorer

Keep exploring

More in Engineering & Technology