11 min read

FR - Developers are dead, long live lead developers!

FR - Developers are dead, long live lead developers!
💡
Avertissement sur l'utilisation de l'IA
La version originale de cet article est entiÚrement rédigé par mes petites mains. Cette version traduite (FR) l'a été partiellement avec l'aide d'un LLM.

Il est indéniable que les LLMs changent complÚtement notre façon de travailler en tant que développeurs et le rythme du changement est si rapide qu'il est difficile de rester à jour, et encore plus difficile de savoir ce qui nous attend dans les mois à venir (certains diraient semaines).

Aujourd'hui je voudrais parler de l'avenir du métier de développeur et des étapes que je juge nécessaires pour s'adapter à ce nouveau paradigme, en mettant temporairement de cÎté les sujets écologiques, économiques et éthiques liés à l'IA.


TL:DR: Vous n'ĂȘtes plus dĂ©veloppeur·euse, vous ĂȘtes lead.

  • Il est temps de vous former au role de lead, mĂȘme si c'est inconfortable ;
  • Une analogie trĂšs efficace : considĂ©rez que vos agents AI sont des juniors fraichement arrivĂ©s ;
  • Avant de prompter, posez vous les bonnes questions : Est-ce que vos specs sont claires ? La tĂąche n'est pas trop grosse ? Vous avez fourni la documentation nĂ©cessaire pour que le nouveau venu puisse comprendre comment le projet fonctionne et quelles rĂšgles respecter ? Si ce n'est pas le cas, retravaillez votre prompt et le contexte.

Un aperçu du futur

Les rĂ©centes avancĂ©es dans les capacitĂ©s des modĂšles (au moment oĂč j'Ă©cris, Opus 4.5 est sorti) et, plus important encore, la consolidation de nouvelles techniques et outils utilisant ces modĂšles ont permis au "codage assistĂ© par IA" de faire d'Ă©normes bonds en avant ces derniers mois.

Des tùches qui semblaient impossibles pour les LLMs sont maintenant à portée de main et l'orchestration de plusieurs agents pour automatiser plusieurs étapes de votre flux de travail donne des résultats positifs.

Pour les tĂąches banales, le parallĂ©lisme n'est plus rĂ©servĂ© Ă  quelques early adopters un peu fous. Les LLMs deviennent mĂȘme assez bons pour rĂ©soudre la plupart des tĂąches en "brute force".

Bien sûr, les limitations des LLMs ne vont pas disparaßtre, et je suis convaincu que ces limitations sont là pour rester. Mais nous n'avons pas encore atteint leur plafond de verre, et je pense qu'on peut dire sans risque que les LLMs vont écrire la majeure partie de notre code dans les prochaines années.

Mais du coup, que deviennent les développeurs·euses ?

Ryan Dahl, créateur de Node.js. Le hasard des dates de publications

Un agent AI est un développeur junior

À bien des Ă©gards, j'ai l'impression que travailler avec des agents IA, c'est comme travailler avec une Ă©quipe de nouveaux dĂ©veloppeurs juniors. Ils ont beaucoup de choses en commun :

  • Ils manquent de capacitĂ©s d'abstraction comparĂ©s aux devs seniors ;
  • Ils manquent de contexte en dehors de la tech elle-mĂȘme (enjeux mĂ©tier, business, relation client) ;
  • Ils se rĂ©initialisent (pour la plupart) Ă  chaque tĂąche, c'est comme avoir un nouveau junior Ă  chaque fois ;
  • Ils sont, gĂ©nĂ©ralement, incapables de gĂ©rer des tĂąches trop grosses par eux-mĂȘmes ;
  • Ils peuvent s'engouffrer Ă  fond dans la mauvaise direction ;
  • Ils ne devraient pas — et gĂ©nĂ©ralement ne sont pas capables de — prendre de dĂ©cisions techniques clĂ©s, comme les choix technologiques et d'architecture (c'est partiellement vrai pour les humains) ;
  • Ils ont beaucoup de mal quand il s'agit de plomberie (relier les technologies ensemble, configuration, etc.).

Bien sûr, les LLMs ont certains avantages comparés aux devs juniors :

  • Ils "maitrisent" beaucoup de langages diffĂ©rents (mais rappelez-vous que cette connaissance est toujours superficielle Ă  bien des Ă©gards) ;
  • Ils peuvent ingurgiter beaucoup de contexte en peu de temps ;
  • Ils n'ont aucun sentiment quand vous leur dites de refaire tout leur travail ;
  • Et, bien sĂ»r, ils sont extrĂȘmement rapides.

Think of AI like training a smart intern. To train someone junior well, you need to be prescriptive: How do you write an email? What tone do you use with clients? What does excellent work look like? What are the steps? What are the pitfalls? The more specific your guidelines, the more you set them up for success.

MĂȘme en dehors du dĂ©veloppement, penser aux LLMs comme des stagiaires ou des juniors est un bon cadre de rĂ©flexion

Cette analogie agent / dev junior m'a aidé à comprendre ce que je pouvais attendre d'un agent, et comment je devrais le "gérer".

Cerise sur le gateau, la gestion d'équipes tech est un sujet bien documenté (avec d'excellents [livres](becoming lead...) sur le sujet). Dans l'univers en perpétuel mutation des LLMs, c'est rassurant de pouvoir se raccrocher à de la connaissance.

💡
Les LLMs ne sont pas des personnes
C'est évident, mais travailler avec des machines ne remplacera jamais les avantages de travailler avec de vrais collÚgues, en chair et en os, qu'ils soient juniors ou seniors. L'émulation, l'apprentissage, les interactions humaines sont toutes des expériences nécessaires et enrichissantes qu'aucun LLM ne pourra jamais fournir. Ne tombez pas dans ce piÚge.

Orchestrateur != lead developer

Donc, vous avez une équipe de juniors vraiment motivés à votre disposition. Vous en faites quoi ?

https://x.com/jaimefjorge/status/2011381315929583747


On parle beaucoup d'orchestrateur. En tant qu'orchestrateur, vous ne touchez plus du tout au code. Vous conservez une vision "macro" du projet, de ses objectifs, de la liste des tùches et problÚmes à résoudre. Vous écrivez les dites tùches, vous alimentez le systÚme, et vous regardez les agents développer, 'review', etc.

Dans la majorité des cas, je ne crois pas dans un tel futur. Reléguer les développeurs à un rÎle de "Project Manager", mais sans la vision produit qui va avec, entraine de facto une perte de connexion avec le code.

Et c'est le genre de scénario s'est produit avant les LLMs : on sait tous ce qui se passe quand un project manager fournit un flux infini de user-stories à une équipe de développeurs juniors (qui, dans le cas des LLMs, ne deviennent jamais seniors), sans la supervision d'un développeur plus expérimenté.

La vélocité initiale sera effectivement impressionnante, d'autant que le project manager a généralement une bonne vision du produit à construire, mais comme souvent avec les LLMs, cette vélocité initiale finira par s'effondrer.

La faute à une dette technique qui va s'accumuler (à une vitesse ultra rapide), des mauvais choix d'architectures, etc. Et comme les LLMs sont particuliÚrement sensibles à la qualité de leur contexte, une mauvaise codebase les entrainera dans une spirale vers le pire.

Une bonne codebase a besoin de 'taste'

Si nous devenons tous des orchestrateurs, personne (humain ou machine) ne "possédera" plus la base de code. Ce qui signifie que personne n'aura une image mentale claire de son architecture, de ses forces, faiblesses, etc.

Cette image mentale d'une codebase est ce qui rend un bon développeur efficace, et 'tasteful': il sait simplement comment les choses fonctionnent. C'est une compétence qui repose sur la partie subconsciente de notre cerveau, une compétence qui ne peut fonctionner que si l'on 'own' la codebase.

C'est un vrai super-pouvoir. Un super-pouvoir qu'il faut pratiquer. Nécessaire pour faire évoluer le projet dans la bonne direction, pour aligner tech et vision, et pour accomplir les objectifs du projet.

Donc au lieu d'orchestrateurs, je pense que la bonne analogie est lead developer, gérant non seulement une équipe de développeurs moins expérimentés, mais une équipe d'Agents IA.

Responsabilités d'un lead developer

Donc, en tant que tech lead d'une Ă©quipe de dĂ©veloppeurs juniors — et en mettant de cĂŽtĂ© toute la partie RH — quelles sont vos responsabilitĂ©s ?

  • Vous prenez les dĂ©cisions techniques clĂ©s (encore plus quand votre Ă©quipe est composĂ©e d'Agents IA) ;
  • Vous vous assurez que la dette technique du projet reste raisonnable, en faisant des 'review' de code, en autorisant des raccourcis quand nĂ©cessaire, etc. ;
  • Vous avez une vision claire du Produit, et vous assurez que cette vision est transmise Ă  l'Ă©quipe tech ;
  • Vous dĂ©composez le travail (ex. user stories et ticketing) du cĂŽtĂ© Produit vers le cĂŽtĂ© technique et aprĂšs quelques Ă©changes avec votre Ă©quipe, vous le distribuez ;
  • Vous vous salissez les mains de temps en temps pour rester affĂ»tĂ©, et pour vous attaquer aux problĂšmes les plus difficiles, comme poser la structure de base, choisir les techs, travailler sur des PoC, etc. ;
  • Vous rĂ©visez et amĂ©liorez les processus continuellement.

Développement piloté par les specs

Cette approche correspond bien à la méthode de "développement piloté par les specs" ('spec driven development'), qui est basée sur le flux de travail suivant :

┌────────────────────┐
│ RĂ©diger la         │
│ Proposition        │
└────────┬───────────┘
         │ partager l'intention avec votre IA
         ▌
┌────────────────────┐
│ RĂ©viser & Aligner  │
│ (modifier specs)   │◀──── boucle de feedback ──────┐
└────────┬───────────┘                               │
         │ plan approuvĂ©                             │
         â–Œ                                           │
┌────────────────────┐                               │
│ ImplĂ©menter TĂąches │───────────────────────────────┘
│ (l'IA Ă©crit code)  │
└────────┬───────────┘
         │ livrer le changement
         ▌
┌────────────────────┐
│ Archiver & Màj     │
│ Specs (source)     │
└────────────────────┘

1. Rédiger une proposition de changement qui capture les mises à jour de specs que vous voulez.
2. Réviser la proposition avec votre assistant IA jusqu'à ce que tout le monde soit d'accord.
3. Implémenter les tùches qui référencent les specs approuvées.
4. Archiver le changement pour fusionner les mises à jour approuvées dans les specs de référence.

Schéma du repo open-specs

Donc, demain, en tant que lead developer dans une agence web / startup / scale-up, votre travail ressemblera probablement Ă  ceci :

  1. Prendre un ticket qui vous est assigné dans Linear ;
  2. Discuter avec un Agent pour trouver la bonne approche technique pour la tĂąche. Peut-ĂȘtre dĂ©composer les tĂąches en plusieurs morceaux (rappelez-vous, les LLMs sont des devs juniors !) ;
  3. Écrire des fichiers de specs pour vos morceaux, avec des attentes claires ;
  4. Lancer un nouvel agent, et fournir un fichier de spec ;
  5. Attendre que l'agent termine sa tùche. Vous pouvez vouloir paralléliser (plus sur cela plus tard) ;
  6. RĂ©viser le travail de l'agent. Si l'agent est parti dans la mauvaise direction, vos specs doivent ĂȘtre amĂ©liorĂ©es : vous faites un rollback et recommencez (ce qui est plus rapide que de discuter sans fin avec le LLM ! Ne mettez pas de piĂšces dans la machine) ;
  7. Livrer le travail. L'agent sera responsable du nettoyage de la documentation ;
  8. RĂ©viser votre processus : si les rĂšgles / compĂ©tences doivent ĂȘtre amĂ©liorĂ©es, c'est votre responsabilitĂ© de le faire.

Encore une fois, à quelques exceptions prÚs, ce flux de travail est exactement ce que vous pourriez faire avec des développeurs juniors humains. Sauf que cela peut prendre moins d'une minute au lieu d'heures ou de jours.

https://x.com/trq212/status/2008610538763559356?s=20

Prérequis

Pour que ce systĂšme fonctionne, plusieurs critĂšres doivent ĂȘtre remplis :

  • Le projet doit contenir une bonne documentation Ă  jour, car vous devez fournir la bonne quantitĂ© de contexte Ă  toutes les Ă©tapes. Cela peut ĂȘtre des rĂ©fĂ©rences au code, de la documentation, etc. ;
  • Vous aurez probablement besoin de Cursor rules ou Claude Skills pour que l'agent rĂ©cupĂšre le bon contexte et les bons outils au bon moment ;
  • Vous devez fournir une mĂ©moire Ă  long terme (le contexte, toujours). Cela pourrait ĂȘtre un fichier CHANGELOG.md que les agents remplissent aprĂšs chaque tĂąche ;
  • Les specs doivent ĂȘtre stockĂ©es en tant que fichiers lisibles par l'humain, car la rĂ©vision des specs est probablement l'Ă©tape la plus importante de cette mĂ©thode.

Plusieurs frameworks ont gagné en popularité récemment, tels que Spec-kit ou open-specs, mais on peut implémenter ce flux de travail avec de simples fichiers markdown.

💡
Show me what you got
À venir : un petit billet pour vous montrer comment je m'y prends avec des fichiers markdown.

Pourquoi ça fonctionne

AprĂšs ~2 ans Ă  jouer avec les LLMs, j'en suis naturellement arrivĂ© Ă  cette mĂ©thode de travail, et c'est celle qui fonctionne le mieux pour moi (mĂȘme si c'est couteux en tokens).

Comme la plupart des développeurs, j'avais l'habitude d'échanger en langage naturel avec les LLMs pour coder une fonctionnalité. Les échanges, c'est trÚs bien pendant une phase d'exploration, d'apprentissage et de brainstorming (d'ailleurs, vous devriez probablement utiliser le mode "ask" de Cursor plus souvent), mais c'est probablement la pire façon d'utiliser les agents quand vous leur demandez de produire du code.

J'ai l'impression que cette approche fonctionne parce qu'elle est ancrée dans les limitations intrinsÚques des LLMs.

Les agents ne sont pas des ĂȘtres omniscients qui peuvent lire dans vos pensĂ©es (ce qui semble ĂȘtre la cause de beaucoup de frustration autour de moi), et ils ne sont absolument pas Ă  la hauteur des collĂšgues humains Ă  cet Ă©gard ; certains de mes plus anciens collĂšgues me connaissent par coeur: comment je travaille, ce que j'aime, ce qui est important pour moi.

Vos collĂšgues en savent aussi plus sur l'entreprise, ses objectifs, prioritĂ©s — bref le contexte global — que les agents ne pourront jamais le savoir.

Livres, photos, vidĂ©os, etc. Tous ces medium ne sont que des simplifications de la rĂ©alitĂ© qui nous entoure, et mĂȘme si vous alimentiez les LLMs avec des centaines de pages de contexte, ce ne serait toujours pas suffisant pour la reprĂ©senter intĂ©gralement.

Toutes ces lacunes signifient que, pour que vos agents AI produisent le mieux possible, ils ont "besoin" de spĂ©cifications claires de ce que vous attendez d'eux et du bon (meilleure) contexte sur lequel baser leur "raisonnement". Ils ont besoin d'ĂȘtre guidĂ©s, comme un "nouveau dev junior".

De plus, la construction de contexte "macro", de documentation et de compétences dans votre repo accélérera progressivement le processus, au contraire des tùches / prompts "one-shot".

Itération rapide vs parallélisation

Nous n'entrerons pas trop dans les détails ici, mais il y a eu de nombreuses tentatives d'automatisation complÚte par IA. La promesse est de pouvoir travailler sur plusieurs fonctionnalités à la fois, avec les gains de temps qui vont avec.

Quitte Ă  passer pour un rabat-joie, je suis septique. Comme les LLMs, les humains ont des limitations qui ne vont pas disparaĂźtre, et le changement de contexte en fait parti.

Prenons garde Ă  ne pas oublier tout ce que nous avons appris ces derniĂšres dĂ©cennies. Se concentrer sur une tĂąche Ă  la fois est une mĂ©thode Ă©prouvĂ©e pour travailler efficacement, et bien que ces tĂąches puissent ĂȘtre plus courtes qu'avant, la logique d'"entrer dans l'Ă©tat de flow" tient toujours.

Ce nouveau flow reste à définir, mais, pour revenir à mon analogie une derniÚre fois, je me sens plus à l'aise de déléguer à 1 junior qu'à 5 ou 10. Passer 3h à review 20 PR sur des sujets différents, faire des retours constructifs et relancer des agents, ça signifie 20 changement de contexte. Je vous garantie que mes retours seront de piÚtre qualité, et je pense que beaucoup de devs finiront par accepter les changements sans relire.

Ce n'était pas une bonne idée d'accepter les PR de juniors sans relecture avant les LLMs, ce n'est toujours pas une bonne idée aujourd'hui.

D'un autre cÎté, en itérant super rapidement avec 1 agent, je peux rester ultra affuté sur la feature en cours : sans changement de contexte, dans l'état de flow, je fournis des retours pointu. En réalité, je "code" mais sans toucher au clavier, et j'avance tout aussi vite sur le long terme qu'en parallélisant.

D'oĂč mon pari sur une boucle d'itĂ©ration extrĂȘmement courte, pas sur l'automatisation complĂšte.

Ce qui nous attend

Apprendre les compétences d'un lead developer sera difficile et inconfortable pour beaucoup. Nombre de développeurs n'ont pas choisi cette carriÚre pour gérer des gens, mais pour résoudre des puzzles, pour le challenge intellectuel.

C'est compréhensible, et il y aura encore des jobs pour eux/elles : il y a encore pas mal de problÚmes et défis que l'IA ne pourra pas résoudre de sitÎt.

Mais pour une grande majoritĂ© d'entre nous, le quotidien est beaucoup plus banal. En tant que dĂ©veloppeur web moi-mĂȘme, je constate que 80% de mes tĂąches peuvent ĂȘtre rĂ©alisĂ©es par des LLMs (et le sont dĂ©jĂ ).

Tout comme les travailleurs et travailleuses du textile pendant la révolution industrielle, on va devoir s'adapter ou changer de carriÚre. Cela ne se produira pas du jour au lendemain, mais cela pourrait arriver plus vite qu'on ne le pense.