Je code à la main depuis plusieurs mois
(miguelconner.substack.com)- À l’heure où les agents de codage IA se généralisent, le témoignage d’un développeur qui a au contraire rejoint une retraite de 3 mois pour coder à la main, sans LLM
- À sa 6e semaine au Recurse Center de Brooklyn, il construit un LLM from scratch pour la première fois, renforce sa maîtrise de Python et approfondit en parallèle sa compréhension des différentes couches d’abstraction d’un ordinateur
- Les agents de codage permettent des itérations rapides et le déploiement, mais écrire directement du code à la main fait se produire en même temps deux choses : exprimer ce qu’on veut et apprendre la codebase
- En reprenant la métaphore de Cal Newport selon laquelle « écrire, c’est comme faire de l’exercice », il partage l’idée que l’effort mental nécessaire pour construire du code est un élément central de la compétence
- En observant que les ingénieurs les plus performants avec les outils IA sont aussi ceux qui ont les connaissances les plus solides, il souligne que même à l’ère de l’IA, les fondamentaux restent un puissant levier
LLM et expérience de développement
- Ces deux dernières années, il a travaillé chez Aily Labs à Barcelone sur la construction d’agents IA
- Début 2024, il a créé un agent interne de recherche web, environ 6 mois avant l’article d’Anthropic « Building Effective AI Agents » et près d’un an avant DeepResearch d’OpenAI
- Il a été l’un des premiers utilisateurs de Cursor et a aussi participé tôt à la construction de graphes de connaissances avec des LLM
- Il a animé un journal club hebdomadaire avec des présentations d’articles sur la construction de LLM open source
- Avec notamment des papiers sur DeepSeek R1, Olmo 3 d’Ai2 et Llama 3 de Meta
- Cela l’a aidé à comprendre les trade-offs entre l’entraînement de modèles en interne et la construction de workflows sur des modèles fermés SOTA
- Depuis sa première utilisation d’un LLM en 2023, il s’intéresse en continu à leur fonctionnement et à leurs applications
Le codage direct comme élément central de la compétence
- Ce qu’il a compris en étudiant les LLM tout en les utilisant pour coder
- Quand on écrit du code « à la main », on fait simultanément deux choses : écrire ce qu’on veut et apprendre la codebase
- Avec un agent de codage, on obtient exactement ce qu’on spécifie dans le prompt ; si ce qu’on veut n’est pas clair, l’agent prend à notre place de nombreuses hypothèses (assumptions)
- Dans ce cas, on apprend moins et on comprend moins bien la codebase
- En parallèle, les agents de codage permettent des itérations rapides, des déploiements logiciels fiables et peuvent aussi jouer le rôle d’excellent tuteur
- Citation d’une chronique du NYT de Cal Newport
- « Votre écriture doit vous appartenir. La tension nécessaire pour rédiger une note ou un rapport clair correspond, pour l’esprit, à l’entraînement d’un athlète à la salle : ce n’est pas une gêne à éliminer, mais un élément central de la compétence »
- Selon lui, cette analogie s’applique tout autant à l’écriture de code
- Chez Aily, les excellents programmeurs avec qui il a travaillé étaient aussi, en général, ceux qui savaient le mieux utiliser l’IA ; leur connaissance approfondie leur donnait un fort levier avec les outils IA
Qu’est-ce qu’une retraite de code ?
- Le Recurse Center (RC) est une retraite de programmation à plein temps, en autonomie, située à Brooklyn
- Retreat : « une période durant laquelle on se retire temporairement du quotidien pour se concentrer sur une activité précise »
- On y participe après candidature et entretien de code, puis on s’immerge dans la programmation pendant 6 ou 12 semaines
- Le lieu se distingue par un environnement collaboratif en cohorte réunissant des profils très variés, y compris de nombreux programmeurs avec plusieurs décennies d’expérience
- La participation est gratuite
- Objectifs au Recurse Center
-
Apprendre les LLM from scratch
- Avec l’objectif d’écrire lui-même un Transformer, préentraînement et post-entraînement compris, au lieu de forker une codebase existante
-
Mieux écrire du Python à la main
- Même après plusieurs années à travailler en Python, il estime avoir encore beaucoup à apprendre et veut développer son intuition sur la structuration de projets en limitant au maximum la consultation de documentation ou les questions aux LLM
-
Mieux comprendre les ordinateurs
- Il considère l’ordinateur comme une machine extrêmement complexe qui fonctionne sur plusieurs couches d’abstraction
- Comme il n’a pas suivi de cursus classique en computer science, il veut se construire un meilleur modèle mental de la manière dont ces couches fonctionnent ensemble
- Il n’a pas encore de plan très précis, mais pense que RC est l’endroit idéal pour cela
-
Où il en est
-
1. Entraîner un LLM from scratch
- Il a terminé sans aide de codage LLM le premier devoir du cours CS336: Language Modeling from Scratch de Stanford
- Un devoir d’environ 50 pages, réalisé avec un autre Recurser
- Il a écrit un tokenizer optimisé en Python et implémenté en PyTorch une architecture de type GPT-2 améliorée
- Après de nombreuses ablations de réglage d’hyperparamètres sur le dataset Tiny Stories, il l’a appliquée à environ 9 milliards de tokens d’OpenWebText
- Résultat d’un sweep de learning rate sur son modèle maison de 17M de paramètres : un learning rate élevé provoque de l’instabilité. Entraînement d’environ 1 heure sur A100
- Suite prévue
- Réaliser le reste des devoirs du CS336 : optimisation des language models, estimation/calcul des scaling laws, transformation de texte brut en données de préentraînement, post-training du modèle
- Il a déjà commencé le deuxième devoir sur le profiling GPU et l’implémentation de FlashAttention2 en Triton
- Objectif final : disposer d’un modèle qu’il aura lui-même post-entraîné
- Il a terminé sans aide de codage LLM le premier devoir du cours CS336: Language Modeling from Scratch de Stanford
-
2. Progresser en Python
- Il s’exerce en écrivant de nombreux petits agents et réseaux de neurones en Python et PyTorch
- Ce qui l’a le plus aidé, c’est le pair programming avec une personne ayant plus de 10 ans d’expérience en Python
- L’un de ses partenaires ouvre immédiatement le terminal quand il ne se souvient plus d’une syntaxe ou d’un comportement, tape un petit exemple et vérifie le résultat en moins d’une minute
- Ce processus devenu mémoire musculaire, qui résout les problèmes sans recherche Google ni requête à un LLM, l’aide énormément à débloquer les situations
- Il prévoit de poursuivre dans cette voie en résolvant en pair programming des problèmes comme Advent of Code
- La collaboration en temps réel est stressante au début, mais c’est précisément ce qui lui donne l’impression de progresser vite
-
3. Approfondir sa compréhension des ordinateurs
- Il a écrit fizzbuzz en BASIC sur un Apple IIe de 1983
- Une expérience directe d’édition et d’exécution manuelles du code, qui lui a fait percevoir à la fois les différences et les similitudes entre les ordinateurs d’hier et d’aujourd’hui
- Sa participation aux CTF Fridays a renforcé ses compétences Unix/terminal
- En résolvant au terminal des défis de type « war games » comme Bandit, avec collecte de mots de passe et passage de niveaux
- Il est désormais capable de comprendre ce que Claude Code essaie d’exécuter sur sa propre machine
- Il a codé à la main un perceptron monocouche dans Vim
- Très fastidieux au début, puis nettement amélioré grâce aux astuces et raccourcis appris auprès d’un autre Recurser
- Très utile lorsqu’il faut faire une dernière modification de fichier pendant qu’un entraînement tourne sur un GPU cloud
- Il a participé à un atelier Clojure animé par une personne avec plus de 15 ans d’expérience
- Ayant peu d’expérience des langages fonctionnels, il a trouvé le sujet très intéressant en lui-même
- Après une courte introduction, l’atelier s’est déroulé en mob programming, les participants contribuant chacun à tour de rôle pendant 1 à 2 minutes à la résolution d’un problème
- Il participe aussi à des présentations techniques hebdomadaires de 5 minutes
- Avec des sujets variés comme « Running Rust Code », « GPUs for Dummies », « Typesafe APIs for Type B Personalities » ou « Some Useless Agents » (sa présentation)
- Il a déjà présenté deux fois jusqu’ici (architecture d’agents simples, mise à l’échelle efficace d’outils MCP) et doit parler cette semaine des méthodes d’optimisation GPU
- Rien qu’en écoutant les projets et les parcours des autres participants, sa compréhension des types de problèmes que les ordinateurs peuvent résoudre s’élargit
- Il a écrit fizzbuzz en BASIC sur un Apple IIe de 1983
Les 6 semaines restantes
- Après la retraite, il compte revenir au déploiement en production d’agents et à l’exécution d’evals avec de nouvelles technologies et de nouvelles compétences
- Il craint de ne pas pouvoir terminer tous les éléments de sa liste en 6 semaines restantes
- Mais selon lui, la vraie valeur de RC ne réside pas dans le fait de tout accomplir, mais dans le simple fait de consacrer du temps au code
Aucun commentaire pour le moment.