55 points par GN⁺ 2025-10-31 | 1 commentaires | Partager sur WhatsApp
  • Addy Osmani, responsable engineering ayant travaillé 13 ans dans l’équipe Google Chrome, présente une méthodologie de développement pilotée par l’IA pour les ingénieurs logiciels professionnels
  • Le vibe coding est utile pour le prototypage rapide, mais pour le développement de logiciels de qualité production, les principes d’ingénierie et la supervision humaine restent indispensables
  • Lors de l’utilisation d’outils d’IA, il faut garantir la qualité via le développement orienté spécifications, l’écriture de tests et la compréhension du code, et examiner le raisonnement du modèle pour maîtriser pleinement le code généré
  • Les LLM peuvent générer rapidement jusqu’à environ 70 % d’une application, mais pour assurer la qualité finale, la sécurité et la maintenabilité des 30 % restants, l’expertise d’ingénieurs seniors devient encore plus importante
  • De nouveaux workflows de développement apparaissent, comme les agents asynchrones en arrière-plan et le codage en parallèle, et les ingénieurs doivent devenir des apprenants tout au long de la vie capables d’utiliser l’IA sans perdre leur esprit critique ni leur compréhension du code

Différence entre le vibe coding et l’ingénierie assistée par l’IA

  • Le vibe coding consiste à s’immerger totalement dans un flux créatif avec l’IA, en se concentrant sur des prompts de haut niveau et en oubliant le code lui-même
    • Acceptation des suggestions de l’IA sans examen approfondi, avec un focus sur les itérations expérimentales rapides
    • Utile pour les prototypes, les MVP et l’apprentissage, en privilégiant la vitesse et l’exploration plutôt que l’exactitude et la maintenabilité
  • L’ingénierie assistée par l’IA est une approche qui utilise l’IA comme un puissant collaborateur sans remplacer les principes d’ingénierie
    • L’IA agit comme un multiplicateur de force sur l’ensemble du cycle de vie du développement logiciel, en aidant sur le boilerplate, le débogage, le déploiement, etc.
    • L’ingénieur humain conserve la responsabilité de la conception de l’architecture, de la revue du modèle et de la compréhension de tout le code généré
    • Garantir la sécurité, la scalabilité et la maintenabilité du produit final reste du ressort de l’ingénieur
  • Plus l’expertise en ingénierie logicielle est élevée, plus la qualité des résultats produits avec des LLM s’améliore
  • Pour une programmation de qualité production, seul un code entièrement explicable à quelqu’un d’autre devrait être commit dans le dépôt

La manière dont Addy utilise les outils d’IA

  • Une approche centrée sur le développement orienté spécifications (spec-driven development)
    • L’essentiel est d’établir un plan clair de ce qu’il faut construire
    • Le vibe coding sert pour les outils personnels, les projets jetables et la visualisation d’idées
    • Une fois la vision clarifiée par un prototype, les exigences réelles sont documentées pour amener le LLM à produire des résultats de haute qualité
  • L’écriture de tests pour réduire les risques
    • Même les modèles récents peuvent parfois générer du code complexe ou erroné
    • Les tests permettent de prouver le bon fonctionnement et d’identifier clairement les problèmes lorsqu’ils surviennent
  • Utilisation de Chrome DevTools MCP
    • Fournit une sorte de « vue » du navigateur au LLM afin de détecter le rendu, les erreurs console, les avertissements, etc.
    • Le navigateur est intégré dans la boucle pour améliorer la boucle de feedback
  • Expérimentation continue avec de nouveaux modèles, outils et plateformes, et partage des enseignements entre équipes
    • Construire une culture d’apprentissage collectif en favorisant la sécurité psychologique

Observations et apprentissages sur les outils d’IA chez Google

  • Les principes éprouvés d’ingénierie logicielle de Google restent valables à l’ère de l’IA
    • L’attention portée à la qualité et à la due diligence reste essentielle
  • L’importance du prompt engineering et du context engineering
    • Construire les bonnes « incantations » pour obtenir les meilleurs résultats des LLM
    • Optimiser la fenêtre de contexte augmente les chances d’obtenir des résultats de qualité
    • Inclure des contenus absents des données d’entraînement du LLM, comme des descriptions spécifiques au projet, des détails, des fichiers et des exemples
  • Accélérer la transition vers des ingénieurs AI-native
    • Former un état d’esprit consistant à laisser d’abord l’IA essayer avant de résoudre soi-même le problème
    • Construire une expertise IA sur les benchmarks d’évaluation, RAG vs. fine-tuning, etc.
  • L’importance de la supervision humaine
    • Si l’IA écrit et révise le code, il devient incertain de savoir ce qui est réellement déployé
    • Avec l’augmentation de la vitesse des PR, la revue humaine devient un goulot d’étranglement
    • Les bonnes pratiques de code review continuent d’évoluer

Les outils qu’Addy préfère

  • Il utilise principalement Klein in VS Code
    • Cursor et GitHub Copilot offrent également de nombreuses fonctionnalités
  • Il examine les journaux de raisonnement (thinking log) affichés par les outils
    • Pour suivre les décisions du modèle et le code généré pendant la construction de la solution
    • Revoir le code avant une PR pour garantir sa maintenabilité future
  • Il faut conserver la capacité à déboguer soi-même quand un LLM échoue à résoudre un problème
    • Sans compréhension du fonctionnement du code, on a l’impression d’être abandonné en pleine jungle
  • Différence entre un ingénieur professionnel et un non-spécialiste
    • Tout le monde peut saisir des prompts
    • Ce qui fait la différence, c’est la compréhension du fonctionnement du code, la capacité à corriger les échecs du modèle et à expliquer clairement les choses en réunion

La vraie nature du problème des 70 %

  • Les LLM peuvent générer très rapidement environ 70 % d’une application fonctionnelle, mais rencontrent des difficultés sur les 30 % restants
  • Ce que recouvrent les 30 % finaux
    • Le schéma « two steps back » : un prompt part dans la mauvaise direction, par exemple en réécrivant entièrement une UI ou une fonctionnalité
    • Coûts de maintenance cachés : si l’on délègue la responsabilité au LLM avec des spécifications floues, la rentabilité diminue
    • Failles de sécurité : exposition de clés API, problèmes de XSS, etc., liés à un manque de vision d’ensemble
  • Une preuve de concept créée en vibe coding doit être réécrite avant un déploiement en production
    • Dans une codebase destinée à de vrais utilisateurs, sécurité et qualité sont indispensables
  • Les ingénieurs expérimentés terminent bien plus facilement ces 30 % finaux
    • Les ingénieurs juniors ne savent souvent pas quoi faire ensuite, en dehors de reprompter le LLM
    • Cela met en lumière l’importance de l’esprit critique et de la résolution de problèmes
  • La rigueur consistant à lire le code, comprendre le système et voir comment toutes les pièces s’assemblent reste indispensable

Tactiques pour utiliser efficacement les LLM

  • Adopter un état d’esprit de chef de projet
    • Décomposer les tâches en unités petites et vérifiables
    • Déverser toutes les exigences d’un coup n’est pas efficace
    • Définir des attentes claires et se préparer à un travail itératif avec l’IA
  • Écrire un code modulaire et testable
    • Les bonnes pratiques de l’ingénierie logicielle, comme la code review, restent valables à l’ère de l’IA
  • Prendre en compte les contraintes d’entrée/sortie et fournir suffisamment de contexte
    • C’est une nouvelle habitude, mais elle permet d’obtenir de bons résultats
  • Le facteur clé du succès est de conserver la rigueur qui maintient l’humain dans la boucle
    • Plus on transfère la responsabilité au LLM, plus le risque de problème augmente

Agents autonomes et nouveaux workflows

  • L’émergence d’agents de codage asynchrones en arrière-plan
    • Des outils comme Jewels, Devin, Codex, ainsi que des expérimentations chez GitHub
    • L’idée est de leur déléguer une partie du backlog pour qu’elle soit implémentée de manière asynchrone
  • État actuel
    • Déjà efficaces pour écrire/mette à jour des tests, ou migrer des versions de bibliothèques
    • Bien adaptés à la délégation de petits changements comme l’ajout d’un dark mode
  • Défis de gestion
    • Il faut une interface adaptée pour piloter l’ensemble comme un chef d’orchestre
    • Il faut tenir compte du nombre réaliste de tâches qu’on peut gérer simultanément
    • L’attention humaine étant limitée, on ne peut traiter que quelques tâches à la fois si l’on veut faire une revue de code rigoureuse
  • L’évolution du vibe designing
    • La collaboration entre designers et développeurs se renforce via le MCP de Figma
    • Les designers peuvent transformer leur vision en prototype fonctionnel, plus proche d’un code industrialisable

Évolution des rôles EM et PM

  • Rôle des PM
    • Plus de temps consacré au cadrage des problèmes, aux métriques et aux politiques d’agents
  • Rôle des EM
    • Les evals, les revues de sécurité et l’accompagnement des équipes pour utiliser l’IA avec confiance
  • La responsabilité sur les résultats ne change pas
  • L’importance du goût (taste) en product engineering
    • Si tout le monde peut construire des fonctionnalités similaires avec des prompts, le facteur différenciant devient le goût
  • Junior vs. senior
    • L’IA relève le plancher, mais fait aussi monter le plafond
    • Les juniors peuvent démarrer plus vite
    • Les seniors capables de rédiger des spécifications, décomposer le travail, comprendre l’architecture système et faire des revues efficaces deviennent encore plus précieux
    • Les 30 % finaux ne sont pas du simple labeur, mais du levier

Nouveaux rôles et évolution de la formation des développeurs

  • L’émergence de nouveaux rôles comme les forward deployed engineers
    • Ils travaillent plus étroitement avec les clients, construisent rapidement des fonctionnalités avec l’IA et remontent les retours sur les besoins
    • Cela peut brouiller les frontières entre les rôles de développeur, PM et designer
  • Formation à l’ingénierie IA
    • Nécessité d’enseigner au lycée et à l’université les bonnes pratiques du prompt engineering et du context engineering
    • Réflexion sur la manière de préserver une mentalité de conception système et d’ingénierie
  • Programmation en trio
    • Un junior, un senior et une IA travaillent ensemble
    • Le senior peut demander à l’IA d’expliquer le code généré ou la façon dont il se connecte aux autres parties du système

L’importance de l’esprit critique quand on travaille avec l’IA

  • Risque d’affaiblissement de la pensée critique dû à la facilité d’acceptation des outils d’IA
    • Tendance à appuyer sur Tab/Accept et à tout accepter pour des tâches jugées peu importantes
    • À mesure que la confiance s’installe, la relecture critique diminue
  • Goulot d’étranglement de la code review
    • L’accélération du code généré par l’IA fait de la revue humaine le principal goulot
    • Risque de multiplication des LGTM (Looks Good To Me)
  • Stratégies de réponse
    • Sur certaines fonctionnalités ou certains jours, travailler volontairement sans IA pour conserver son esprit critique
    • Réfléchir à ce qu’il faudrait faire si tous les grands fournisseurs de LLM tombaient en panne
  • Écrire du code vs. lire du code
    • Quand on tape le code soi-même, on le révise naturellement, et les autres savent qui l’a écrit
    • À l’ère de l’IA, la lecture et la revue prennent une place plus importante
  • Utiliser l’IA en code review
    • L’« approbation » de l’IA n’est qu’un signal parmi d’autres
    • Comme le passage du CI/CD ou la réussite des tests, il faut toujours un jugement personnel sur la qualité
  • Il faut encore réaliser 20 à 30 % du travail sans IA pour continuer à faire travailler son cerveau

Les LLM comme outils d’apprentissage

  • Un outil puissant pour comprendre une nouvelle codebase
    • La première tâche ne devrait pas être de prompter une nouvelle fonctionnalité pour créer de la valeur, mais d’apprendre comment fonctionne la codebase
  • Utile pour comprendre des concepts de programmation, frameworks et patterns d’architecture
  • Indispensable lorsqu’il faut transférer des fonctionnalités entre des codebases écrites dans d’autres langages
  • Créer une culture d’équipe
    • Faire comprendre qu’il est acceptable d’utiliser l’IA comme outil d’apprentissage
    • Encourager régulièrement l’expérimentation et le partage de bonnes pratiques
  • Onboarding accéléré des nouveaux arrivants
    • Les outils d’IA jouent le rôle de mentor fiable 24/7
    • Ils permettent d’apprendre plus sereinement que d’interrompre des ingénieurs seniors toute la journée avec des questions
  • Le mode apprentissage de Claude Code
    • Il propose un mode explication et un mode apprentissage
    • Il peut faire une pause et demander à l’utilisateur d’effectuer lui-même certaines parties

Évolution des outils d’IA et cadrage des attentes

  • Historique de l’évolution des outils
    • Téléchargement de templates → CLI et scaffolding → bootstrapping piloté par l’IA
    • À chaque étape, l’expérience développeur s’est légèrement améliorée
  • Prendre conscience des limites des données d’entraînement
    • Basées sur du code GitHub sous licence permissive ou sur les patterns du web ouvert
    • Elles peuvent refléter des patterns de plus petit dénominateur commun (lowest common denominator)
    • Elles ne garantissent pas le meilleur niveau de sécurité, de performance ou d’accessibilité
  • Ressemblance avec le copier-coller depuis Stack Overflow
    • Avant : on copiait sur Stack Overflow des choses comme une regex de validation d’e-mail
    • Aujourd’hui : les LLM génèrent des patterns similaires, mais avec de possibles cas limites ou problèmes de sécurité
  • Bibliothèques tierces vs. implémentation maison
    • Avec un LLM, on peut implémenter soi-même une petite version, mais cela implique la responsabilité de maintenance
    • Une bibliothèque permet des correctifs centralisés sur des problèmes comme la sécurité
    • Il faut considérer les trade-offs de chaque choix
  • La clé est de garder des attentes modestes et un haut niveau de contrôle

L’évolution de la définition d’un excellent ingénieur logiciel

  • L’importance de l’apprenant à vie (lifelong learner) ne change pas
    • Même si les frameworks, les outils et l’industrie évoluent, il faut rester ouvert à l’apprentissage de nouvelles choses
  • Le growth mindset
    • Être prêt à essayer de nouveaux modèles, outils et plateformes
    • Apprendre par l’échec et comprendre les contraintes
  • Le rôle du leadership
    • Quand les leaders montrent qu’ils sont ouverts à l’apprentissage, ils créent une sécurité psychologique dans l’équipe
    • Addy rédige chaque lundi une newsletter interne d’équipe
      • Il y partage des projets personnels, des écrits et des réflexions
      • Il y sélectionne les mises à jour importantes sur l’IA et l’ingénierie IA
      • D’autres dirigeants la trouvent également utile
  • La curation à l’ère de la surcharge informationnelle
    • Sur les réseaux sociaux, on a l’impression que des changements fondamentaux surviennent chaque heure
    • Les leaders doivent sélectionner ce qui compte vraiment et guider l’équipe
  • Maintenir ses compétences techniques
    • Continuer à lire et regarder des articles, livres blancs, blogs, vidéos et cours
    • Guider l’équipe sur les domaines où investir son temps
  • Lien avec le développement produit
    • Le travail sur l’amélioration des workflows de codage contribue aussi à améliorer l’expérience client du produit

Outils favoris et recommandations

  • Langage de programmation préféré : JavaScript
    • Non par préférence personnelle, mais pour l’ouverture qui permet à tout le monde de construire et déployer sur le web
    • Cela procure une sensation de liberté, sans gatekeeper
  • Outil préféré du moment : Bolt
    • Un outil de scaffolding pour le vibe coding
    • Il a récemment ajouté la prise en charge d’agents personnalisés (comme Claude Code)
    • Il produit des résultats de haute qualité avec un excellent design
    • Il automatise des intégrations avec Supabase, des fournisseurs d’authentification, etc.
    • Il se concentre sur la réduction des frictions de configuration
  • Livres recommandés
    • "The Software Engineer's Guidebook"
    • "AI Engineering" by Chip Huyen — un livre pour apprendre les aspects fondamentaux de l’ingénierie IA

1 commentaires

 
riddler 2025-10-31

Le livre portant le même titre devrait paraître en novembre~
https://x.com/TeeDDub/status/1983150672205041823