Retour d’expérience après un mois avec Devin
(answer.ai)Qu’est-ce que Devin ?
- En mars 2024, une nouvelle entreprise d’IA a émergé après avoir levé 21 millions de dollars en série A, avec le soutien de plusieurs figures de la tech comme Founders Fund, les frères Collison et Elad Gil
- L’équipe de cette entreprise était composée de médaillés d’or de l’IOI, présentés comme capables de résoudre eux-mêmes des problèmes de programmation complexes
- Leur produit, Devin, était présenté comme capable de converser comme un collègue humain et de prendre en charge de façon autonome l’ensemble du processus d’ingénierie logicielle : apprendre de nouvelles technologies, déboguer du code existant, déployer une application complète ou entraîner des modèles d’IA
- Dans les vidéos de démonstration publiées, Devin résolvait seul une prime Upwork et installait puis exécutait un projet PyTorch[1]
- L’entreprise affirmait qu’au benchmark SWE-bench, Devin résolvait complètement environ 13,86 % de vrais tickets GitHub, soit environ trois fois mieux que les systèmes précédents
- Au départ, l’accès était réservé à un petit nombre d’utilisateurs, et les réseaux sociaux ont rapidement relayé l’idée que l’outil allait révolutionner le développement logiciel
- L’équipe d’Answer.AI teste fréquemment des outils de développement IA, et elle a eu l’intuition que Devin pourrait apporter quelque chose de différent
- Elle a donc appliqué Devin à plusieurs tâches concrètes afin d’en tirer un retour d’usage
Premiers succès
- La première tâche tentée consistait à importer des données d’une base Notion dans Google Sheets
- Devin a exploré la documentation des API Notion et Google, puis a guidé pas à pas la configuration des identifiants nécessaires dans Google Cloud Console
- Au lieu de simplement donner l’usage de l’API, il indiquait aussi les menus et l’emplacement exact des boutons à cliquer, ce qui a nettement réduit le temps passé sur cette tâche fastidieuse
- Le code écrit par Devin était un peu verbeux, mais il fonctionnait correctement
- Cette expérience a laissé entrevoir le potentiel d’une IA capable de prendre en charge le « glue code »
- Un autre membre de l’équipe a également pu interagir avec Devin uniquement depuis son téléphone et créer une application qui suivait les positions passées de Jupiter et de Saturne
Extension des tests
- Encouragée par ces premiers succès, l’équipe a essayé d’utiliser Devin de manière asynchrone, par exemple pour rédiger de la documentation ou pour déboguer pendant qu’elle travaillait sur le design
- Mais, progressivement, il est apparu que Devin se retrouvait dans des impasses techniques même sur des tâches qui semblaient simples, ou produisait du code inutilement complexe
- En particulier, il tentait souvent des tâches en réalité impossibles — par exemple déployer plusieurs applications dans un seul déploiement Railway — en « halluciant » des fonctionnalités qui n’existaient pas
- Le problème n’était pas seulement l’échec, mais le temps perdu à essayer des solutions impossibles
Observation approfondie des problèmes
- L’équipe s’est demandé pourquoi Devin semblait très compétent sur certaines tâches, mais échouait sur d’autres
- Après un mois d’utilisation, elle a tenté 20 tâches réparties en trois catégories
- (1) création de nouveaux projets
- (2) recherche
- (3) analyse et modification de projets existants
- Au final, sur 20 tâches, 14 ont échoué, 3 ont réussi (y compris les premiers succès) et 3 sont restées indéterminées
- Aucun schéma clair ne permettait d’anticiper l’échec ou la réussite : même des tâches qui semblaient similaires échouaient parfois de manière inattendue
- Les cas détaillés sont récapitulés en annexe à la fin de l’article
1. Création de nouveaux projets
- À voir les vidéos de démonstration de l’entreprise et les premiers succès, on pouvait s’attendre à ce que Devin soit à l’aise pour créer un projet complet à partir de zéro
- Mais en pratique, il construisait souvent des structures de code inutilement complexes, ou n’arrivait même pas à résoudre un simple scraping web
- Par exemple, la tâche consistant à générer des données synthétiques et à les envoyer sur Braintrust a échoué parce que le code produit par Devin était beaucoup trop complexe et ne sortait pas de ses erreurs
- Une tentative d’intégration entre Spiral.computer et l’outil de prise de notes IA Circleback a elle aussi été abandonnée, Devin ayant renvoyé un code embrouillé façon spaghetti
- La tâche de récupération des 25 publications les plus récentes d’un auteur sur Google Scholar s’est bloquée dans le parsing HTML et n’a pas abouti
2. Travaux de recherche
- Les tâches d’investigation simples, comme consulter de la documentation, restaient globalement possibles
- En revanche, sur des problèmes plus complexes — par exemple résumer une transcription tout en conservant des timestamps précis — Devin n’arrivait pas à identifier correctement les éléments pertinents et se contentait d’aligner des exemples à côté du sujet
- Même lorsqu’on lui demandait de créer un thème minimal pour DaisyUI, le résultat ne fonctionnait pas réellement : il reprenait simplement les couleurs du thème par défaut
3. Analyse et modification de code existant
- Les limites de Devin ressortaient particulièrement lorsqu’il fallait comprendre un code existant et le maintenir
- En travaillant sur un projet nbdev, il a adopté une approche inefficace, par exemple en ajoutant inutilement des scripts Python pour une tâche qui se limitait à modifier un notebook
- Lors d’une revue de sécurité, il a signalé des vulnérabilités inexistantes tout en passant à côté de problèmes importants
- Pour diagnostiquer un échec de forwarding de clés SSH, il s’est focalisé uniquement sur le script lui-même, sans envisager que la cause du problème puisse se situer ailleurs
- Même pour implémenter une vérification de conflit entre les entrées utilisateur et la base de données, il a fallu perdre du temps à retoucher le code généré par Devin, alors qu’une implémentation manuelle a finalement pris seulement 90 minutes
Rétrospective de l’équipe
- Après un mois de tests intensifs, l’équipe a formulé les constats suivants à propos de Devin
- « Pour les petites tâches bien définies, c’est souvent plus rapide de les faire soi-même, et pour les grosses tâches, Devin a trop de chances d’échouer pour être vraiment utile » (Johno Whitaker)
- « Au début, on a l’impression qu’avec quelques corrections ça va passer, mais au final il faut retoucher bien plus de choses, et on se dit qu’il aurait mieux valu tout faire soi-même dès le départ » (Isaac Flath)
- « Il s’intègre mal aux outils internes d’AnswerAI et utilise mal la documentation ainsi que les exemples fournis. À l’inverse, un outil comme Cursor permet une boucle de feedback continue sur de petites unités de travail, ce qui le rend meilleur que Devin » (Hamel Husain)
- Devin se distingue par sa capacité à avancer seul sur de grandes étapes, mais au final le coût humain pour corriger une mauvaise direction reste élevé
- À l’inverse, l’équipe a conclu qu’un workflow où le développeur garde l’initiative et où l’IA assiste — comme avec Circleback ou Cursor — est bien plus fiable
Conclusion
- L’expérience de travail avec Devin a donné un aperçu du futur visé par les outils de développement IA autonomes
- En particulier, son interface conversationnelle basée sur Slack et la configuration automatique de l’environnement dans des conteneurs Docker se sont révélées impressionnantes du point de vue de l’expérience utilisateur
- Mais, en pratique, seuls 3 cas sur 20 ont vraiment bien fonctionné, et même des tâches proches pouvaient échouer de manière inutilement compliquée
- Son caractère « autonome » pose un problème particulier : quand il part dans la mauvaise direction, il peut continuer longtemps sans correction et s’enfoncer dans une voie absurde
- D’après l’expérience accumulée jusqu’ici, il est fréquent que l’enthousiasme sur les réseaux sociaux ou une valorisation élevée ne se traduisent pas par une vraie productivité ni par un produit abouti
- L’équipe d’Answer.AI compte donc maintenir sa position : la forme la plus pratique reste celle où l’IA assiste le processus de développement plutôt que de le piloter seule
Annexe : liste des tâches réalisées avec Devin
- Voici un résumé des projets confiés à Devin et de leurs résultats
- Ils ont été classés en quatre catégories
- (1) création de nouveaux projets
- (2) recherche
- (3) analyse de code existant
- (4) modification de projet existant
1. Création de nouveaux projets
-
Planet Tracker
- Status: Success
- Description: application visant à vérifier des affirmations sur les positions passées de Jupiter et de Saturne
- Reflection: les échanges avec Devin se sont faits uniquement via Slack sur mobile, et il a mené l’essentiel du travail de manière autonome jusqu’à la finalisation
-
Migrating data from Notion into Google Sheets
- Status: Success
- Description: import automatique de documents Notion dans Google Sheets
- Reflection: Devin a guidé pas à pas la configuration de Google Cloud Console, ce qui a donné pour la première fois une impression de « toute nouvelle expérience »
-
Multi-app deploys on Railway
- Status: Inconclusive
- Description: tentative de déployer plusieurs applications dans un seul déploiement Railway afin qu’elles partagent la même base de données
- Reflection: en pratique, Railway ne prend pas en charge cette approche, ce qui la rendait quasiment impossible. Devin a continué à essayer avec des approches hallucinées
-
Generate synthetic data and upload it to Braintrust
- Status: Failure
- Description: génération de données synthétiques à envoyer sur la plateforme Braintrust
- Reflection: le code était trop complexe et les erreurs n’ont pas été résolues, ce qui a conduit à une implémentation pas à pas avec Cursor
-
Create an integration between Circleback and Spiral.computer
- Status: Failure
- Description: les documents des deux services avaient été fournis, mais Devin a produit un code spaghetti si complexe que la tentative a été abandonnée
-
Web scraping Papers by Following Google Scholar Links
- Status: Failure
- Description: récupération des 25 publications les plus récentes d’un auteur donné, en ignorant les articles payants
- Reflection: la tâche s’est enlisée dans une boucle infinie de parsing HTML
-
Create minimal HTMX bulk upload example app
- Status: Failure
- Description: tentative de recréer simplement un exemple HTMX pour FastHTML
- Reflection: le code d’exemple ne fonctionnait pas et ajoutait des éléments inutiles qui rendaient l’ensemble confus
-
Create a DaisyUI Themes to match FrankenUI Theming
- Status: Failure
- Description: volonté d’unifier l’usage des thèmes DaisyUI et FrankenUI
- Reflection: le mapping n’a pas été correctement réalisé, et une quantité excessive de code a été ajoutée, rendant le résultat difficilement exploitable
2. Perform Research
-
Research How to make a discord bot
- Status: Success
- Description: recherche sur la manière de créer en Python un bot Discord capable de résumer des messages et de les envoyer par e-mail
- Reflection: Devin a résumé son plan intermédiaire dans un fichier Markdown ; le code final n’était pas parfait, mais cela a aidé à comprendre les concepts
-
Research on Transcript Summarization With Accurate Timestamps
- Status: Failure
- Description: recherche d’une méthode pour produire un résumé tout en conservant les informations de timestamps
- Reflection: Devin s’est contenté d’énumérer vaguement des sujets liés, sans proposer de vraie direction pour résoudre le problème
-
Create a minimal DaisyUI theme as an example
- Status: Failure
- Description: demande d’un exemple minimal de thème DaisyUI
- Reflection: le thème ne s’appliquait pas réellement, les couleurs du thème par défaut étaient simplement réutilisées
3. Analyze Existing Code
-
Performing a security review of a code base
- Status: Inconclusive
- Description: demande de revue d’un dépôt GitHub de moins de 700 lignes sous l’angle des vulnérabilités de sécurité
- Reflection: certains points étaient partiellement justes, mais Devin a aussi signalé de façon excessive des vulnérabilités qui n’existaient pas
-
Review blog posts and make a pull request with improvements
- Status: Failure
- Description: demande de relire des billets de blog et de créer une PR adaptée aux sources basées sur Quarto
- Reflection: Devin n’a pas réussi à assimiler la structure de Quarto, ce qui a entraîné des erreurs sur les métadonnées et le front matter
-
Review an application and identify potential areas of improvement
- Status: Failure
- Description: demande de proposer des pistes d’amélioration globales pour l’application de suivi du temps créée plus tôt
- Reflection: la plupart des propositions étaient peu utiles en pratique
-
Debug why ssh key forwarding is not working in a setup script
- Status: Inconclusive
- Description: problème de forwarding de clé SSH lors de la configuration d’un serveur par script
- Reflection: Devin s’est obstiné à analyser uniquement le script, sans envisager que l’origine du problème puisse être ailleurs
4. Modify An Existing Project
-
Making changes to a nbdev project
- Status: Failure
- Description: ajout d’une API pour Apple Shortcuts à une application de suivi du temps construite avec FastHTML + nbdev
- Reflection: au lieu d’éditer directement les notebooks, Devin a essayé de les modifier via des scripts Python, ce qui a accru la complexité
-
Migration of Python Project To nbdev
- Status: Failure
- Description: tentative de migration d’un projet Python existant vers nbdev
- Reflection: même la configuration de base de nbdev n’a pas été correctement mise en place, ce qui a désorganisé le projet
-
Integrate Styling Package Into FastHTML
- Status: Failure
- Description: tentative d’intégration de MonsterUI dans un projet basé sur nbdev
- Reflection: Devin n’a pas correctement compris la structure du dépôt nbdev, ce qui a conduit à l’échec
-
Add feature to check for conflicts between user input and database
- Status: Failure
- Description: ajout dans une application existante d’une interface signalant les conflits entre saisie utilisateur et valeurs en base de données
- Reflection: corriger jusqu’au bout la tentative de Devin a pris tellement de temps qu’il a été bien plus rapide de l’implémenter soi-même en 90 minutes
-
Generate LLMs context file with the contents of every fasthtml gallery example
- Status: Failure
- Description: demande de génération d’un fichier de contexte LLMs contenant tous les exemples de la galerie fasthtml
- Reflection: le fait que Devin ait produit un fichier Markdown séparé pour chaque exemple était intéressant, mais la manière réelle de les générer ne correspondait pas à la documentation et ajoutait des dépendances inutiles
1 commentaires
Avis Hacker News
Le créateur d’OpenHands souligne que l’IA n’est pas encore arrivée au point de remplacer les ingénieurs logiciel. Le code écrit par l’IA nécessite une revue approfondie, comme celui d’un ingénieur junior. Cependant, bien utilisée, l’IA peut fortement améliorer la productivité. Environ 20 % de la base de code d’OpenHands est écrite ou coécrite par l’IA. L’IA est utile pour des tâches simples comme la résolution de conflits de fusion ou la correction d’erreurs de linter. Il mentionne aussi que l’IA s’améliore chaque semaine et que la concurrence est intense
Un utilisateur qui emploie quotidiennement des outils de codage IA estime que l’approche par agent, comme Devin, essaie d’en faire trop. Les outils de codage IA devraient s’imposer comme des outils au service des développeurs plutôt que comme des remplaçants. GitHub Copilot est utile pour compléter du code répétitif, et Aider peut effectuer des tâches d’édition de plus haut niveau. Mais ces outils restent imparfaits et peuvent introduire des modifications inutiles lors de la résolution de problèmes
Le problème des agents IA comme Devin est que leur intelligence semble plafonner à un certain niveau. Il leur arrive parfois de résoudre en quelques minutes une tâche qui demanderait plusieurs heures à un ingénieur intermédiaire ou senior, mais ils commettent aussi des erreurs simples. Une qualité essentielle d’un ingénieur junior est sa capacité à être guidé, et c’est justement une limite des agents IA, qui ne peuvent pas être encadrés de cette manière
Certains restent sceptiques face à l’idée que l’IA puisse remplacer les ingénieurs humains. L’IA convient aux petites tâches répétitives, mais pas aux travaux complexes comme la gestion d’infrastructure ou le déploiement d’applications. Ils affirment qu’ils n’y croiront pas tant qu’ils n’auront pas vu de preuves concrètes que l’IA peut réellement remplacer les humains
Les agents IA devraient pouvoir demander une intervention humaine quand c’est nécessaire, mais Devin ne le fait pas correctement dans les situations de « soft stop ». Un développeur humain demanderait de l’aide au bout de quelques heures, alors qu’une IA peut tomber dans une boucle infinie
Comme pour la génération d’images par IA, les outils de codage IA produisent au départ des résultats impressionnants, mais comportent encore beaucoup d’erreurs. Toutefois, on s’attend à des progrès remarquables dans les prochaines années. Des outils comme Midjourney peuvent fournir des résultats différents de ceux attendus, et il faudra des fonctionnalités permettant aux utilisateurs d’itérer rapidement
Les retours d’expérience sur Devin montrent que l’agent est jugé en deçà des attentes. Il est facile d’implémenter un agent, mais difficile de le rendre réellement utile. Les limites de Devin suscitent des inquiétudes quant à l’évolution des systèmes à agents
Devin a essayé d’en faire trop, et il y a de la valeur à générer des artefacts de code dans un cadre de capacité limité. Il est important de se concentrer sur des éléments précis de la boucle de développement. Des entreprises comme Factory AI adoptent cette approche et suscitent de l’intérêt pour leur produit
Devin impressionne lorsqu’il comprend le formatage du code et la configuration des tests locaux, mais il peut aussi ajouter des changements inutiles qui cassent autre chose. Comme il est impossible d’annuler facilement ces modifications, un travail de nettoyage supplémentaire est nécessaire. Devin a montré le potentiel des workflows à agents, mais il n’est pas recommandé car il ne fait pas gagner de temps
Un utilisateur ayant beaucoup utilisé Cursor a le sentiment qu’il faut forcer le système dans une direction précise. Le LLM fournit parfois des extraits de code utiles, mais s’il part dans la mauvaise direction, il faut arrêter ses suggestions et le réorienter. Cursor est particulièrement utile pour le refactoring, et permet d’économiser beaucoup de saisie et de temps.