L'IA va-t-elle remplacer les développeurs ?
Les applications d'intelligence artificielle se multiplient en vue d'industrialiser les phases de test et rendre l'écriture du code semi-automatisée. Mais certains fournisseurs vont plus loin.
L'IA s'invite dans la programmation d'applications. La promesse à court terme : améliorer la productivité du codage, voire en automatiser certaines phases, touchant au test logiciel notamment. "Toute entreprise menant des projets applicatifs un tant soit peu importants doit explorer le nombre croissant d'outils de développement augmentés par l'intelligence artificielle comme une opportunité d'accélérer la vitesse des livrables et d'optimiser leur qualité", estime David Schatsky, managing director chez Deloitte. Avec une vision à plus long terme, certains laboratoires de recherche planchent déjà sur des IA qui permettraient d'aller encore plus loin.
Premier domaine investi par l'IA dans le développement logiciel : l'aide à la rédaction du code. A l'instar de la saisie d'une requête dans Google, elle consiste à proposer des suggestions personnalisées au fur et à mesure de la saisie. Aujourd'hui, la fonctionnalité est bien connue des développeurs. Pionnier du domaine, Microsoft intègre ce dispositif dès 2018 à l'IDE Visual Studio ainsi qu'à VSCode, sa déclinaison open source. Prenant la forme d'une extension baptisée IntelliCode, cette brique de natural language processing (NLP) va puiser ses connaissances dans des centaines de projets open source sur GitHub affichant des niveaux de notation de plus de cent étoiles. De quoi tirer la qualité vers le haut en orientant l'utilisateur vers les meilleures pratiques du secteur.
En parallèle, IntelliCode permet de créer des modèles d'apprentissage ad hoc en vue de bénéficier de suggestions personnalisées ne reposant pas seulement sur du code open source public, mais aussi sur des dépôts de sources privés.
Des start-up montent au créneau
Dans l'ombre de Microsoft, des start-up avancent des alternatives. Parmi les plus en vue : l'israélien Codota. A l'instar d'IntelliCode, sa solution s'articule autour de modèles NLP nourris à la fois par du code public et des repositories privés. Des équipes de développeurs de grands noms de la Silicon Valley, tels Amazon, Airbnb, Atlassian, Google ou Netflix, y ont recours. En décembre 2019, la société met la main sur l'un de ses principaux concurrents, son concitoyen TabNine.
Fondé un an après Codota, en 2014, et affichant 21 millions de dollars levés à son actif, le californien Kite adopte un positionnement en tous points similaires. Pour compléter son IA d'entrée de gamme basée sur des data set open source, il a lancé en juillet 2020 une offre taillée pour entraîner des modèles sur la base de projets internes. Même logique que Microsoft et Codota. Baptisée Team Server, elle repose sur une infrastructure de deep learning nettement plus avancée. Elle prend en compte jusqu'à 100 millions de paramètres, contre 4 millions pour le service d'entrée de gamme. Un saut technologique qui permet à Kite de porter la complétion de deux à quatre mots-clés successifs, contre un seul pour IntelliCode. A ce jour, la société de San Francisco revendique 400 000 utilisateurs.
"Au lieu de remplacer le programmeur, notre objectif est de lui éviter le travail prosaïque et répétitif"
Il est un point sur lequel Microsoft ne fait pas le poids face à Codota et Kite. Sa solution se limite à Visual Studio. A l'inverse des deux start-up, dont les offres sont agnostiques en termes d'environnement de développement. L'une comme l'autre prennent en charge Android Studio, Jupyter, PHP Storm, PyCharm, RubyMine, Vim ou encore Sublime. Sans oublier Visual Studio Code qui figure parmi les IDE les plus utilisés. Au jeu des intégrations, Codota sort du lot en supportant, en plus, la très populaire infrastructure Eclipse.
Dans le test logiciel, deux jeunes pousses américaines se distinguent assez clairement : Functionize et Mabl. Fondées successivement en 2015 et en 2017, elles ont levé respectivement 19,2 et 36,1 millions de dollars. Comme son nom l'indique, la première automatise les tests fonctionnels. Son offre s'articule, là-encore, autour d'un moteur de NLP. Un modèle algorithmique qui est dessiné pour traduire des spécifications de test rédigées en langage naturel (en langue anglaise en l'occurrence) en scripts exécutables par la machine. Quant à Mabl, il cible le même objectif, mais avec une approche très différente. Son outil génère les scripts de test en analysant les interfaces graphiques et les scénarios joués sur l'écran par le développeur. Idem pour Applitools. Fondé comme Codota en Israël (en 2013), cet éditeur, qui revendique 41,8 millions de dollars de fonds levés, mise sur la reconnaissance d'images pour analyser les écrans applicatifs, identifier des variations ou régressions, et à partir de là automatiser la création des tests fonctionnels. En mars 2021, Applitools a été acquis par le fonds Thomas Bravo pour 300 millions de dollars.
Marchant dans les pas de ces acteurs, la société française Ponicode se positionne dans l'automatisation des tests unitaires. Installée à Station F, elle a été créée par Patrick Joubert. Ce serial-entrepreneur s'est déjà illustré en lançant la société de conseil Beamap et surtout Recast.ai, une plateforme de chatbot qu'il a cédée en 2018 à SAP. Avec Ponicode, Patrick Joubert met désormais le NLP au service des développeurs. L'entreprise a bouclé une première levée de fonds de 3 millions d'euros en juillet 2020. Le principe de sa solution ? Après avoir analysé le code, son moteur de deep learning, pour l'heure limité à VSCode, suggère des valeurs de test sur la base des fonctions logicielles identifiées. Le défi ? Obtenir la combinatoire de paramètres présentant la couverture de test la plus large. En bout de course, le fichier de test unitaire est généré. Comme les outils d'auto-complétion, Ponicode entraîne son IA sur du code open source. Un set d'apprentissage représentant des millions de fonctions, avec un focus sur Python et JavaScript, dans un premier temps.
Après tous ces exemples, reste à savoir si l'IA pourrait à terme remplacer les développeurs ? "Ce n'est pas dans notre feuille de route. Notre objectif est d'éviter aux programmeurs le travail prosaïque et répétitif. Se souvenir de la syntaxe d'un langage et de ses bonnes pratiques n'est pas une tâche à haute valeur ajoutée", estime Dror Weiss, cofondateur et CEO de Codota. "Notre philosophie adopte la même logique que celle de smart compose (l'outil d'auto-complétion de Gmail, ndlr). Au fil de la rédaction d'un message, il propose des phrases par rapport à ce que vous écrivez. Il ne lit pas dans votre esprit et ne vous dit pas ce que vous voulez répondre." Même discours du côté des acteurs de l'automatisation des tests. "Le but est de réduire le temps passé sur les tâches périphériques tout en optimisant la qualité et la maintenabilité du code au fur et à mesure de son évolution", résume Patrick Joubert chez Ponicode.
Vers la fin des développeurs "standard" ?
En attendant, une nouvelle se profile à l'horizon qui pourrait bien remettre en question ce discours : l'irruption de l'IA sur le front du développement sans code. Basé jusqu'ici majoritairement sur des moteurs de règles assez traditionnels, le no-code (ou low code) devrait rapidement se tourner vers le machine learning. Intel s'est déjà attaqué à la problématique. En lien avec l'Institut Georgia Tech, le fondeur a commencé à mettre sur pied un assistant intelligent centré sur l'optimisation des programmes, baptisé MISIM (pour machine inferred code similarity). En amont, il apprend à identifier la tâche pour laquelle un applicatif est conçu. Puis via une infrastructure de machine learning analysant des extraits de sources sur la base de millions d'autres logiciels de même finalité, MISIM est capable de recommander un code censé être plus performant, voire globalement plus efficace.
"Quand il sera finalisé, notre système de programming machine permettra à tout un chacun de créer une application en exprimant son intention dans la forme de son choix, en écrivant du code, en langage naturel avec ses propres mots, ou dans un autre mode (visuel et graphique par exemple, dans une logique WYSIWYG, ndlr). C'est un objectif audacieux. Même s'il reste encore beaucoup de travail à réaliser avant de l'atteindre, MISIM est un premier pas en avant dans cette direction", souligne Justin Gottschlich, directeur et fondateur du Machine Programming Research chez Intel. Le remplacement des développeurs par l'IA n'est donc pas pour aujourd'hui… mais peut-être pour demain, en tout cas pour les développeurs centrés sur des projets d'applications standards, sans spécificités ou langages exotiques susceptibles d'échapper aux algorithmes. IA