Publié le 10 juin 2021, modifié le 10 juin 2021.
Par La Rédaction

Patrick Joubert, (CEO de Ponicode) : “L’intelligence artificielle peut assister le développeur dans l’élaboration de son code”

Publié le 10 juin 2021, modifié le 10 juin 2021.
Par La Rédaction
Photo : Ponicode

Photo : Ponicode

Vous ne devriez pas avoir à arbitrer entre qualité et efficacité pour créer un code à l'épreuve du temps. Ponicode créé une intelligence artificielle qui aide tous les développeurs à produire du code robuste et conforme aux standards.

Comment avez-vous eu l’idée de créer Ponicode ?

En 2018, après la vente de mon entreprise Recast.AI à SAP et, fort du succès de l’application de l’intelligence artificielle conversationnelle, je me suis rendu dans la Silicon Valley afin de prendre la température de notre industrie. Au fil de mes conversations avec ceux qui créent les produits tech de demain, un constat s’est dessiné. Nous codons globalement de la même manière qu’il y a 30 ans. Malgré l’apparition du cloud et l’automatisation, le développeur exécute toujours le même travail. Nous n’avons pas d’outils pour l’aider à produire du code de manière plus industrielle, homogène et de bonne qualité. Le manque d’innovation pour aider à faire un code de bonne qualité est frappant pour un secteur qui se veut autant “à la pointe”.

Le code est un langage complexe et avec l’expérience RecastAI, je pressentais que ici aussi l’intelligence artificielle, et notamment les algorithmes de traitement du langage naturel, pouvait faire partie de la solution. C’est donc une réponse à la question suivante : qui s’occupe de résoudre l’impossibilité de produire du code de très grande qualité avec la vélocité que requiert notre contexte économique résolument orienté vers le digital ?

Aujourd’hui, Ponicode est un outil pour les développeurs mais est surtout l’une des technologies qui permet à chaque ligne de code écrite de vivre longtemps.

Pouvez-vous nous expliquer comment l’IA agit sur le code ?

L’IA peut agir sur le code de deux manières : à l’intérieur du code grâce au traitement du langage naturel et au niveau de la codebase afin de prendre des décisions globales ou architecturales. Dans le langage naturel, la syntaxe est flexible alors que dans le code, elle est extrêmement rigide. Le nombre de structures de phrases possible lorsque l’on écrit du code est bien plus réduit que le nombre de structures de phrase possibles en langage naturel. Cependant, le code n’est pas seulement constitué d’ordres destinés à la machine, il contient aussi des commentaires et des éléments destinés à d’autres développeurs qui collaborent dans le même fichier. On peut donc considérer le code comme un moyen de communication avancé et plus rigide que le langage naturel.

Équipé de cette compréhension du code, comme langage, on peut mieux envisager comment l’intelligence artificielle, et notamment les algorithmes de traitement du langage naturel, peuvent s’appliquer au code. Cette technologie permet de capter les éléments clés du code et ainsi exercer des fonctionnalités liées à la compréhension du langage jusqu’ici réservés aux humains.

Il y a un deuxième niveau très important sur lequel l’IA peut s’appliquer, c’est pour l’ensemble de la codebase et donc au niveau de l’architecture. L’intelligence artificielle va assimiler l’ensemble de la codebase d’un logiciel à un réseau. Ce réseau est formé de différentes unités de codes (les sommets) reliées entre elles (les arêtes).

L’intelligence artificielle peut analyser ce réseau et percevoir les points critiques. Cela signifie qu’elle peut y trouver, sans l’aide humaine, des informations concernant la hiérarchie du code, sa structure et aider la prise de décision sur des aspects d’améliorations ou d’identifications de risques. Dans le cadre de Ponicode, cela nous permet d’aider nos clients à identifier là où ils sont le plus exposés à de potentiels bugs ou à des failles du logiciel.

Détectez-vous les vulnérabilités de sécurité dans le code ?

Oui, tout à fait. Ponicode permet d’assister les développeurs à tester leur code et donc de réduire les vulnérabilités qui peuvent donner lieu à des failles de sécurité. S’il existe aujourd’hui tant de bugs et de vulnérabilités dans nos applications, c’est parce que les développeurs ne pensent pas aux événements rares et extrêmes. Leur code est donc testé de manière incomplète.

Or, les scenarii auxquels les développeurs ne pensent pas aujourd’hui peuvent devenir des vulnérabilités demain. Un scenario connu dû au manque d’anticipation des développeurs est le bug de l’an 2000. Ils n’avaient, à l’époque de la construction des logiciels, pas imaginé que ces derniers devraient afficher une valeur au-delà de 99 (1 999). L’intelligence artificielle peut assister le développeur comme elle le fait avec les médecins, en leur rappelant, lors d’une consultation, les maladies rares et orphelines afin de les aider à ne pas rater les diagnostics les plus difficiles. En code, on appelle cela les cas aux limites.

La plate-forme permet de détecter des vulnérabilités en suggérant systématiquement les cas aux limites, assurant au développeur de tester son code de manière exhaustive et de partager à ses utilisateurs un logiciel extrêmement robuste dans le temps.

On dit souvent que l’écriture du code révèle la personnalité du développeur, y touchez-vous ?

La personnalité du développeur est au cœur de notre sujet car nous voulons à la fois homogénéiser la production de logiciel et être le partenaire quotidien des développeurs. Cela peut sembler contradictoire aux premiers abords. Nous créons une intelligence artificielle qui aide tous les développeurs à produire du code robuste et conforme aux standards. Et, malgré le fait que les standards soient les mêmes pour tous, les développeurs ont chacun leur manière de les atteindre.

Notre outil doit s’adapter aux utilisateurs méticuleux, aux pressés, aux ennuyés, aux débutants ou aux experts afin d’atteindre leurs objectifs de qualité du code. L’intelligence artificielle, ainsi qu’un travail continu de notre expérience utilisateur, nous permet de produire un outil flexible et protéiforme afin de répondre à cette diversité.

Notre objectif est de devenir le partenaire incontournable des développeurs et cela se manifeste dans le choix de nos fonctionnalités, de notre forme, des langues que nous supportons. Ponicode rend les tâches répétitives, monotones et longues plus accessibles, plus ludiques et plus rapides aux développeurs afin qu’ils puissent se concentrer sur les parties créatives et innovatrices de leur cœur de métier. Cela commence par l’aide aux tests unitaires mais nous explorons déjà les possibilités d’optimisation de la création de documentation ou du reporting des développeurs.

Le code pour les applications mobiles est au centre du succès, quelles sont les bonnes pratiques d’écriture du code selon vous ?

Les critères de succès d’un bon code, c’est qu’il soit compréhensible, strictement et efficacement fonctionnel, mais aussi qu’il soit couvert par des tests et enfin qu’il soit correctement documenté. Ces règles sont agnostiques du langage, de l’IDE ou du contexte dans lequel il va être utilisé.

Cependant, il est vrai que les applications mobiles sont un domaine particulier. Premièrement, il s’agit d’un espace particulièrement compétitif et les études montrent que tous les comportements “anormaux” d’une application, liés à une faille dans les lignes de code, contribuent pour une large part à la fuite des utilisateurs. 53 % des utilisateurs quittent une application si elle ne charge pas en moins de 3 secondes. C’est également un environnement qui évolue très rapidement.

Les équipes techniques sont pressurisées à livrer de nouvelles fonctionnalités dans des temps courts. Et, malgré le tabou qui règne, tous les leaders IT savent que, dans ces contextes, la qualité est systématiquement le maillon faible de l’équation. Les entreprises de logiciels mobiles viennent à notre rencontre car elles réalisent qu’elles sont sous-équipées et que les bugs et le poids du “legacy code” mal testé pèse lourd sur le chiffre d’affaires et réduit significativement sa capacité à capter de nouvelles parts de marché.

Pourquoi la qualité du code est-elle un atout stratégique pour une entreprise ?

Trois quarts des logiciels sur le marché contiennent des failles de sécurité et le coût de réparation des bugs s’élève à plus de 300 milliards par an. Ces chiffres vertigineux seraient impensable dans le BTP, l’industrie automobile ou tout autre secteur qui tend plutôt aujourd’hui vers l’approche zéro défaut. Pourtant, les entreprises qui produisent des logiciels considèrent la mauvaise qualité du code comme une fatalité.

Ce n’est pas le cas. Pour protéger cet actif stratégique qu’est le code, les entreprises doivent investir dans les outils. Dans une logique zéro défaut, il est nécessaire de tester tôt dans le processus de développement et systématiquement afin de livrer des applications robustes. Si le code peut être un atout stratégique, il s’agit encore trop souvent d’une épine dans le pied. Les bugs coûtent en moyenne 100 fois plus cher à réparer que les anomalies détectées en cours de développement.

À l’heure où les développeurs sont une ressource rare, il est évalué à 5 600 € par minute le coût d’un bug ! Il est donc décisif d’adopter une approche qualité afin de protéger l’intégrité et la pérennité de cet atout stratégique et, par extension, celles de l’entreprise.

Lire aussi