L'IA peut-elle vraiment coder? L'étude cartocie les barrages routiers vers l'ingénierie logicielle autonome
Imaginez un avenir où l'intelligence artificielle épouse tranquillement la corvée du développement de logiciels: refactoring le code emmêlé, migration des systèmes hérités et traquant les conditions de race, afin que les ingénieurs humains puissent se consacrer à l'architecture, au design et aux problèmes véritablement nouveaux encore hors de portée d'une machine.
Les avancées récentes semblent avoir poussé à ce que les futurs se fermer, mais un nouvel article de chercheurs du Laboratoire d'informatique et d'intelligence artificielle du MIT (CSAIL) et de plusieurs institutions collaboratrices soutient que cette réalité future potentielle exige un examen difficile des défis actuels.
Intitulé «Défis et chemins vers l'IA pour l'ingénierie logicielle», le travail cartose les nombreuses tâches d'ingénierie logicielle au-delà de la génération de code, identifie les goulots d'étranglement actuels et met en évidence les orientations de recherche pour les surmonter, visant à permettre aux humains de se concentrer sur la conception de haut niveau pendant que le travail de routine est automatisé. Le papier est disponible sur le arxiv Préprint Server et les chercheurs présentent leur travail à la Conférence internationale sur l'apprentissage automatique (ICML 2025) à Vancouver.
« Tout le monde parle de la façon dont nous n'avons plus besoin de programmeurs, et il y a toute cette automatisation maintenant disponible », explique Armando Solar-Lezama, professeur du MIT en génie électrique et en informatique, chercheur principal de CSAIL et auteur principal de l'étude.
« D'une part, le domaine a fait d'énormes progrès. Nous avons des outils qui sont beaucoup plus puissants que tout ce que nous avons vu auparavant. Mais il y a aussi un long chemin à parcourir pour vraiment obtenir la pleine promesse d'automatisation que nous nous attendons. »
Solar-Lezama soutient que les récits populaires réduisent souvent l'ingénierie des logiciels à « la partie de programmation de premier cycle: quelqu'un vous tend une spécification pour une petite fonction et vous la mettez en œuvre, ou résolvant des interviews de programmation de style Leetcode. »
La vraie pratique est beaucoup plus large. Il comprend des refacteurs quotidiens que la conception polonaise, ainsi que des migrations radicales qui déplacent des millions de lignes de COBOL à Java et remodeler des entreprises entières. Il nécessite des tests et des analyses sans escale – le fluzage, les tests basés sur la propriété et d'autres méthodes – pour attraper des bogues de concurrence ou des défauts de patch zéro-jour. Et cela implique la maintenance Grind: documenter le code vieux de décennie, résumer les histoires de changement pour les nouveaux coéquipiers et examiner les demandes de pull pour le style, les performances et la sécurité.
L'optimisation du code à l'échelle de l'industrie – pensez à la réduction des noyaux GPU ou aux raffinements implacables et multicouches derrière le moteur V8 de Chrome – est obstinément difficile à évaluer. Les métriques des titres d'aujourd'hui ont été conçues pour des problèmes courts et autonomes, et bien que les tests à choix multiples dominent toujours la recherche en langue naturelle, ils n'ont jamais été la norme dans le code ai-pour-code.
Le critère de facto du champ, Swe-Bench, demande simplement un modèle pour corriger un problème de GitHub: utile, mais toujours semblable au paradigme de « exercice de programmation de premier cycle ». Il ne touche que quelques centaines de lignes de code, risque la fuite de données des référentiels publics et ignore d'autres contextes du monde réel – des réfacteurs assistés en AI, la programmation des paires humaines ou les réécritures critiques qui s'étendent sur des millions de lignes. Jusqu'à ce que les repères se développent pour capturer ces scénarios à enjeux supérieurs, mesurer les progrès – et ainsi l'accélérer – restera un défi ouvert.
Si la mesure est un obstacle, la communication humaine-machine en est une autre. Le premier auteur Alex Gu, un étudiant diplômé du MIT en génie électrique et en informatique, considère l'interaction d'aujourd'hui comme «une fine ligne de communication». Lorsqu'il demande à un système de générer du code, il reçoit souvent un grand fichier non structuré et même un ensemble de tests unitaires, mais ces tests ont tendance à être superficiels. Cet écart s'étend à la capacité de l'IA à utiliser efficacement la suite plus large d'outils d'ingénierie logicielle, des débogueurs aux analyseurs statiques, sur lesquels les humains comptent pour un contrôle précis et une compréhension plus approfondie.
« Je n'ai pas vraiment beaucoup de contrôle sur ce que le modèle écrit », dit-il. « Sans canal pour que l'IA exposent sa propre confiance -« cette partie est correcte… cette partie, peut-être à double vérifier »- les développeurs risquent de faire confiance à une logique hallucinée à l'aveugle qui se compile, mais s'effondre en production. Un autre aspect critique est que l'IA sait quand remettre à l'utilisateur pour clarifier.
L'échelle aggrave ces difficultés. Les modèles d'IA actuels luttent profondément avec les grandes bases de code, couvrant souvent des millions de lignes. Les modèles de fondation apprennent du public Github, mais « la base de code de chaque entreprise est un peu différente et unique », dit Gu, ce qui rend fondamentalement la distribution des conventions de codage propriétaire et des exigences de spécification.
Le résultat est un code qui semble plausible mais appelle des fonctions inexistantes, viole les règles de style interne ou échoue aux pipelines d'intégration continue. Cela conduit souvent à un code généré par l'AI qui «hallucine», ce qui signifie qu'il crée un contenu qui semble plausible mais ne s'aligne pas sur les conventions internes spécifiques, les fonctions d'assistance ou les modèles architecturaux d'une entreprise donnée.
Les modèles récupéreront également souvent de manière incorrecte, car il récupère le code avec un nom similaire (syntaxe) plutôt que des fonctionnalités et de la logique, ce qui pourrait avoir besoin d'un modèle pour savoir comment écrire la fonction. « Les techniques de récupération standard sont très facilement dupées par des morceaux de code qui font la même chose mais sont différents », explique Solar-Lezama.
Les auteurs mentionnent que comme il n'y a pas de solution miracle à ces problèmes, ils appellent à la place des efforts à l'échelle communautaire: Riche, ayant des données qui capturent le processus de développeurs écrivant du code (par exemple, que les développeurs de code conservent versus lancer, comment le code est refactorisé au fil du temps, etc.), les suites d'évaluation partagées qui mesurent la progression de la qualité des réfactations, de la longue bogue et de l'emprise de migration; et l'outillage transparent qui permet aux modèles d'exposer l'incertitude et d'inviter la direction humaine plutôt qu'une acceptation passive.
GU fait l'ordre du jour comme un « appel à l'action » pour les plus grandes collaborations open source qu'aucun laboratoire ne pouvait rassembler seul. Solar-Lezama imagine des progrès incrémentiels – « Les résultats de la recherche retirent les piqûres de chacun de ces défis séparément » – qui renforcent les outils commerciaux et déplacent progressivement l'IA de l'acolyte de l'assiette automatique vers un véritable partenaire d'ingénierie.
« Pourquoi tout cela? Les logiciels sous-traitent déjà la finance, le transport, les soins de santé et les minuties de la vie quotidienne, et l'effort humain requis pour le construire et le maintenir en toute sécurité devient un goulot d'étranglement. Une IA qui peut se concentrer sur le grognement – et à faire sans introduire Gu.
« Mais cet avenir dépend de reconnaître que l'achèvement du code est la partie facile; la partie difficile est tout le reste. Notre objectif n'est pas de remplacer les programmeurs. C'est pour les amplifier. Lorsque l'IA peut s'attaquer aux ingénieurs fastidieux et terrifiants, les ingénieurs humains peuvent enfin passer leur temps sur ce que seuls les humains peuvent faire. »
« Avec autant de nouvelles œuvres émergentes dans l'IA pour le codage, et la communauté chassant souvent les dernières tendances, il peut être difficile de prendre du recul et de réfléchir sur les problèmes les plus importants », explique Baptiste Rozière, un scientifique de l'IA chez Mistral AI, qui n'a pas été impliqué dans le journal. « J'ai aimé lire ce document car il offre un aperçu clair des tâches et des défis clés de l'IA pour l'ingénierie logicielle. Il décrit également des directions prometteuses pour de futures recherches sur le terrain. »
