Je viens de lire l'article d'OpenAI, « Comment nous avons utilisé Codex pour créer Sora pour Android en 28 jours », et c'est tout à fait remarquable. Environ 85 % du code de l'application cliente Sora pour Android a été écrit par une IA. Dès le premier jour de sa sortie, les utilisateurs ont généré plus d'un million de vidéos en 24 heures, avec une qualité constamment élevée et un taux de stabilité de 99,9 %. Certains remettront sans doute ce résultat en question, certains allant même jusqu'à penser que les programmeurs sont condamnés. Permettez-moi de vous faire part de mes réflexions après l'avoir constaté. En résumé, c'est comme si quelques soldats des forces spéciales, équipés de l'armement le plus sophistiqué, étaient naturellement invincibles. Alors, ne surestimons pas ce résultat. Même si nous ne sommes pas des soldats des forces spéciales, nous pouvons tout de même en tirer de précieux enseignements. Fred Brooks, auteur de *Le mythe du mois-homme*, a énoncé un adage bien connu en génie logiciel : « Ajouter de la main-d’œuvre à un projet logiciel en retard ne fait que l’allonger. » En effet, l’ajout d’ingénieurs supplémentaires réduit souvent l’efficacité en raison de l’augmentation des coûts de communication, de la fragmentation des tâches et des coûts d’intégration. Et si on ajoutait l'IA à l'équipe ? Tout dépend de la capacité des membres de l'équipe à gérer l'IA. Un vieux proverbe dit : « Plus Han Xin a de soldats, mieux c'est. » Si les membres de l'équipe sont des Han Xin, alors plus il y a d'agents IA, mieux c'est. L'équipe Android d'OpenAI est clairement une équipe d'élite, composée de seulement quatre personnes, comme une unité des forces spéciales, chacune équipée de divers systèmes d'assistance robotique. Alors, comment ont-ils fait ? 1. L'architecture d'abord : les humains construisent d'abord la structure, puis l'IA comble les lacunes. Comment installer cette étagère ? L'équipe a d'abord défini elle-même l'architecture globale de l'application : une approche modulaire, l'injection de dépendances, la structure de navigation, le processus d'authentification et une couche réseau de base. Ensuite, elle a écrit manuellement plusieurs fonctions représentatives servant de modèles. Étape cruciale : ils ont rédigé de nombreux fichiers, comme https://t.co/9M2TJcCBVQ, qui constituent en quelque sorte un guide d’initiation à l’IA. On y apprend notamment qu’il est indispensable d’exécuter detektFix pour vérifier le format avant chaque commit, faute de quoi l’intégration continue se bloquera à ce stade. Ainsi, le système peut lire rapidement ces spécifications à chaque nouvelle session Codex. C'est comme fournir un wiki interne à un nouvel employé, ce qui évite de devoir répéter les mêmes explications. L'équipe a résumé la situation en une phrase : nous n'avons pas besoin d'indiquer à Codex comment écrire du code ; nous devons lui indiquer ce qui est correct pour notre équipe. C'est une distinction subtile, mais importante. 2. Planifiez avant d'écrire du code Au début, ils ont essayé de prendre des raccourcis, en disant simplement : « Voici les exigences fonctionnelles, voici les documents pertinents, à vous de les implémenter. » Le code s'exécutait, mais il était terriblement à côté de la plaque et ne répondait absolument pas à l'architecture attendue. Par la suite, ils ont modifié le processus. Pour toute fonction complexe, la première étape ne consistait plus à faire écrire du code à l'IA, mais à lui faire comprendre le système. Par exemple, ils lui ont fait lire un ensemble de fichiers connexes afin de résumer le flux de données de l'API au référentiel, puis au modèle de vue, et enfin à l'interface utilisateur. Ensuite, des humains ont corrigé sa compréhension. Une fois la compréhension effectuée, l'IA générera un plan d'implémentation, sorte de mini-document de conception. Celui-ci précise les fichiers à modifier, les nouveaux états à introduire et le flux logique. L'IA ne commencera l'implémentation qu'après validation du plan par un humain. Cette phase de planification peut paraître longue, mais elle permet en réalité d'éviter de nombreuses corrections. Plus important encore, une fois le plan de l'IA connu, l'analyse de son code devient beaucoup plus simple. On vérifie alors si l'exécution est conforme au plan, au lieu de se perdre dans une multitude de différences. Ils ont aussi une petite astuce : pour les tâches particulièrement longues, l’IA enregistre le plan dans un fichier. Ainsi, elle peut reprendre son exécution même en cas de changement de session. Lorsque plusieurs tâches Codex s'exécutent simultanément, l'expérience de développement est complètement transformée. On a moins l'impression d'utiliser un outil et plus celle de gérer une équipe. Une tâche consiste à optimiser le lecteur multimédia, une autre à écrire la fonction de recherche, une troisième à gérer la logique d'erreur et une quatrième à effectuer des tests supplémentaires. Chacune travaille indépendamment, en faisant un compte rendu de temps à autre : « J'ai planifié ce module, qu'en pensez-vous ? » Ou alors, elles vous soumettent simplement un gros diff. Le métier d'ingénieur a évolué : il ne s'agit plus seulement d'écrire du code, mais aussi de prendre des décisions et de donner son avis. Le principal obstacle n'est plus la vitesse à laquelle on écrit du code, mais la rapidité avec laquelle on peut le relire et le valider mentalement. Cela prouve une fois de plus le mythe du mois-homme : on ne peut augmenter indéfiniment ni les effectifs ni le nombre d'agents. 3. Le meilleur framework multiplateforme est AI Agent. Une autre pratique intéressante est le nouveau paradigme du développement multiplateforme. Sora existe déjà en version iOS. Lorsque l'équipe travaillait sur la version Android, elle a simplement importé le code source iOS dans l'environnement Codex. Elle a ensuite indiqué à Codex : « Référez-vous à l'implémentation du code iOS, examinez notre architecture Android et générez le code Kotlin correspondant. » C’est pourquoi l’article affirme avec humour : Oubliez React Native et Flutter, le futur framework multiplateforme, c’est Codex. Cette affirmation est mi-sérieuse, mi-plaisantin. Car la logique applicative est portable. Modèles de données, requêtes réseau et règles de validation — qu'ils soient écrits en Swift ou en Kotlin — sont fondamentalement identiques. L'IA excelle dans ce type de traduction ; avec un contexte suffisant, elle peut effectuer des conversions parfaites entre les langages. Alors, avec le recul, pourquoi disons-nous qu'il ne faut pas les diviniser à l'excès ? Bien qu'ils ne soient que quatre, chacun d'eux est un leader, à l'instar de Han Xin, capable de diriger une équipe et d'utiliser l'Agent avec brio. Cependant, même ainsi, la quantité ne fait pas toujours la qualité ; des personnes restent indispensables pour attribuer les tâches et vérifier les résultats. De plus, ils disposent déjà du code iOS, ce qui permet de mutualiser une grande partie de la logique, l'IA se contentant de la « traduire ». Mais il reste encore beaucoup de choses à apprendre. Concevez d'abord l'architecture, puis laissez l'IA compléter les informations manquantes. Cela simplifie la maintenance du code et garantit une meilleure qualité. Planifiez avant d'écrire du code, afin de permettre à l'IA de bien comprendre le contexte avant d'agir. Beaucoup se plaignent de la lenteur de Codex, mais je crains parfois que l'agent n'agisse trop vite et de manière erratique. Je préfère attendre un peu plus longtemps et lui laisser le temps d'approfondir sa connaissance du contexte pour qu'il réussisse du premier coup. Sinon, les corrections seraient beaucoup plus chronophages. Fournissez à l'IA de bonnes références pour qu'elle puisse apprendre par imitation. Dans un premier temps, documentez les bonnes pratiques ; le fait que l'IA puisse s'y référer ultérieurement améliorera considérablement ses résultats. Si des implémentations existent dans d'autres langages, leur « traduction » sera également beaucoup plus efficace. Ce n'est qu'en procédant ainsi que vous pourrez tirer pleinement parti du développement assisté par l'IA. Ce dernier ne diminue pas les exigences en matière de développement ; au contraire, il les élève. Un agent excelle dans l'exécution d'une tâche simple et précise, mais le génie logiciel est loin d'être une tâche simple ; il consiste en une multitude de petites tâches évolutives. Celles-ci doivent être décomposées et validées par des humains. Par conséquent, les compétences fondamentales des futurs ingénieurs logiciels ne résideront pas dans la capacité à écrire du code rapidement, mais plutôt dans deux aspects : une compréhension approfondie du système et la capacité de collaborer avec l’IA sur le long terme. Le code devient moins cher, mais le bon goût coûte plus cher. Ceux qui savent définir ce qui est juste, élégant et tourné vers l'avenir se feront de plus en plus rares. L'IA a pris en charge la pose des briques, mais la conception des plans reste votre responsabilité.
Chargement du thread
Récupération des tweets originaux depuis X pour offrir une lecture épurée.
Cela ne prend généralement que quelques secondes.
