IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Codegen, un outil d'IA qui facilite le passage de la conception au code, il peut aussi nuire à la créativité,
à la curiosité et à l'apprentissage des développeurs

Le , par Bruno

32PARTAGES

5  0 
Codegen est un outil d’intelligence artificielle (IA) qui aide les développeurs à traduire plus facilement les conceptions en code. Il fonctionne en analysant les éléments visuels d’une conception et en suggérant des noms de composants et des valeurs de propriétés qui correspondent au système de conception utilisé par le développeur. Codegen n’est pas un outil magique qui écrit le code à la place du développeur, mais un outil qui l’accompagne et l’augmente. Il lui permet de gagner du temps et d’éviter des erreurs en lui donnant un point de départ pour le code. Les développeurs doivent donc utiliser codegen avec prudence, discernement et éthique, et ne pas oublier que le code est avant tout une expression de leur pensée et de leur créativité.

Toutefois, le développeur doit donc toujours vérifier, modifier et optimiser le code suggéré, ce qui peut demander du temps et de l’énergie. Le code suggéré peut contenir des erreurs, des biais ou des failles. Le développeur doit donc toujours comprendre le code qu’il utilise, et ne pas le copier-coller sans le tester ou le documenter. Sinon, il risque de compromettre la fiabilité, la sécurité et la maintenabilité du code. Cet outil d’IA ne peut pas se substituer au travail du développeur, qui doit toujours faire preuve de jugement, de compétence et de responsabilité.



Codegen ne peut pas s’adapter à tous les cas d’utilisation, car il ne connaît pas les besoins spécifiques et le cadre de chaque projet. Il peut créer une dépendance ou une paresse chez les développeurs, qui pourraient se reposer entièrement sur l’IA pour écrire le code. Cela pourrait réduire la créativité, la curiosité et l’apprentissage des développeurs, qui ne chercheraient plus à améliorer ou à innover leur code. Cela pourrait également poser des problèmes d’éthique ou de sécurité, si le code suggéré contient des données sensibles ou personnelles, ou si le code suggéré est utilisé à des fins malveillantes ou illégales.

Seuls 3 % de développeurs déclarent avoir une grande confiance dans la précision des outils d’IA pour le développement. « Ce scepticisme n'est pas surprenant. Lorsque nous avons commencé à travailler sur Dev Mode, un espace pour les développeurs dans Figma, nous l'avons imaginé comme un moyen d'automatiser le passage de la conception au code. Les premières versions étaient prometteuses, mais au fur et à mesure de l'itération de notre approche, nous avons constaté que les développeurs ne trouvaient pas toujours le code utile », déclare Figma.

Cependant, codegen offre le plus d'avantages lorsqu’il est appliqué d'une manière spécifique, pour une équipe, une entreprise et votre flux de travail. Par exemple, si votre système de conception et votre bibliothèque de composants sont déjà dans Figma, vous n'avez pas besoin d'une application automatisée de conception à codage. Dans ce cas, il est préférable de se référer aux jetons, de consulter la documentation ou de créer un plugin codegen pour générer des extraits personnalisés.

Selon Figma, en appliquant ces conseils, il est possible de traiter et de comprendre ce que vous regardez plus rapidement, lorsque vous commencerez à écrire le code vous-même. « Codegen vous aidera à passer d'un écran vide à un point de départ - peut-être pas de 0 à 1, mais de 0 à 0,5 - beaucoup plus rapidement. » Codegen peut également aider à interpréter les exigences de conception comme les valeurs de style brutes - telles que les codes hexadécimaux et les pixels - pour construire un élément d'interface utilisateur ou découvrir un nom de jeton ou une valeur de propriété de composant lorsque vous mettez en œuvre un système de conception.

Le code d'implémentation d'une instance d'un composant est très différent du code définissant le style et les propriétés d'un composant. Si vous développez la bibliothèque de composants de votre équipe, vous écrirez le code du composant pour le style visuel sous-jacent ainsi que les définitions des variantes et des propriétés. Si vous mettez en œuvre une bibliothèque de composants, le code que vous écrivez est souvent un code d'instance de composant ainsi que le style de présentation qui l'entoure.

L’équipe Figma explique que Codegen analyse les éléments visuels d’une conception et recommande des noms de composants et des valeurs de propriétés qui correspondent au système de conception utilisé par le développeur.

Ainsi, Codegen permet au développeur de gagner du temps et d’éviter des erreurs en lui donnant un point de départ pour le code. L’équipe suggère également de créer un plugin Codegen personnalisé, qui pourrait s’adapter aux besoins et aux cadres spécifiques de chaque projet. Toutefois, l’entreprise reconnaît que cela prend du temps et des ressources, et qu’il est plus simple d’établir une bonne base en s’assurant que les conceptions de l’équipe correspondent à des modèles dans le code.

À l’exemple des composants et des variables de Figma, qui rendent les systèmes de conception faciles à mettre en œuvre et à maintenir, car ils encapsulent les modèles dans des jetons et des propriétés. L’équipe Figma souligne ensuite les limites de Codegen, qui ne peut pas se substituer au travail du développeur, ni remplacer les modèles de l’équipe. Il rappelle que le développeur doit toujours vérifier, modifier et optimiser le code suggéré, ce qui peut demander du temps et de l’énergie.

Codegen ne remplacera pas les modèles de votre équipe

Les besoins de votre équipe en matière de conception et de développement sont uniques. Des facteurs tels que la taille de l'entreprise, les exigences de sécurité et les contraintes techniques contribuent tous à une situation spécifique. Afin de répondre et de s'adapter à ces besoins, une équipe a certainement pris des décisions sur le style ou les Framework de composants pour la bibliothèque d'interface utilisateur, le schéma de des jetons de conception, la façon dont les fichiers sont organisés et nommés, ou même les conventions préférées autour de la syntaxe et du formatage du code.

Avec tout ce contexte spécifique à l'organisation, il n’est simplement pas possible de coller le code généré automatiquement directement dans une base de code sans le modifier davantage. Bien qu’il est possible de trouver des moyens d'utiliser l'apprentissage automatique pour se faire aider, en raison des limites des outils existants, la création de la base de code d’une équipe est une activité pratique, et les modèles de l'équipe sont là pour faciliter le processus.

Le code généré peut être un point de départ très utile. Mais même dans ce cas, les bouts de code doivent encore être modifiés pour y intégrer d'autres propriétés, ajouter du formatage, des styles supplémentaires et bien d'autres choses encore. Une fois que le code est dans cet état, les modifications ultérieures du fichier Figma ne peuvent pas toujours être « collées » en utilisant codegen de la même manière ; cela reviendrait à écraser le travail déjà édité. Tout outil finit par se heurter à ses limites.

Récemment, les grands modèles de langage (LLM) ont montré une capacité extraordinaire à comprendre le langage naturel et à générer du code de programmation. Les ingénieurs logiciels ont l'habitude de consulter les LLM lorsqu'ils sont confrontés à des questions de codage. Bien que des efforts aient été faits pour éviter les erreurs de syntaxe et aligner le code sur la sémantique prévue, la fiabilité et la robustesse de la génération de code à partir des LLM n'ont pas encore fait l'objet d'une étude approfondie.

Pour combler cette lacune, Li Zhong et Zilong Wang proposent dans leur travail un ensemble de données RobustAPI pour évaluer la fiabilité et la robustesse du code généré par les LLM. Ils ont recueilli 1208 questions de codage de StackOverflow sur 24 API Java représentatives. Ils ont résumé les schémas d'utilisation abusive courants de ces API et les évaluons sur des LLM courants et populaires. Les résultats de l'évaluation montrent que même pour GPT-4, 62% du code généré contient des abus d'API, ce qui entraînerait des conséquences inattendues si le code était introduit dans un logiciel réel.

Inconvénients des outils d’IA de génération de code comme codegen

Les outils d’IA de génération de code comme codegen sont présentés comme des innovations qui facilitent le travail des développeurs, mais ils ne sont pas sans risques ni limites. En effet, ces outils présentent plusieurs inconvénients qui peuvent nuire à la qualité, à la sécurité et à l’éthique du code produit.

Tout d’abord, ces outils ne peuvent pas générer un code parfait pour tous les cas d’utilisation, car ils doivent tenir compte des besoins spécifiques et du cadre de chaque projet. Par exemple, le code généré pour une application web peut ne pas être adapté pour une application mobile, ou le code généré pour un système de conception peut ne pas respecter les normes de performance ou d’accessibilité. Le développeur doit donc toujours vérifier, modifier et optimiser le code généré, ce qui peut prendre du temps et de l’énergie.

Ensuite, ces outils ne peuvent pas remplacer le travail du développeur, qui doit toujours faire preuve de jugement, de compétence et de responsabilité. Le code généré n’est qu’une suggestion, qui peut contenir des erreurs, des biais ou des failles. Le développeur doit donc toujours comprendre le code qu’il utilise, et ne pas se contenter de le copier-coller sans le tester ou le documenter. Sinon, il risque de compromettre la fiabilité, la sécurité et la maintenabilité du code.

Ces outils peuvent créer une dépendance ou une paresse chez les développeurs, qui pourraient se reposer entièrement sur l’IA pour écrire le code. Cela pourrait réduire la créativité, la curiosité et l’apprentissage des développeurs, qui ne chercheraient plus à améliorer ou à innover leur code. Cela pourrait également poser des problèmes d’éthique ou de sécurité, si le code généré contient des données sensibles ou personnelles, ou si le code généré est utilisé à des fins malveillantes ou illégales.

S'il est vrai que les outils d’IA de génération de code comme codegen sont des outils qui peuvent aider les développeurs à passer de la conception au code plus rapidement, il n'en est pas moins vrai qu'ils ne peuvent pas se substituer à leur intelligence humaine. Les développeurs devraient utiliser ces outils avec prudence, discernement et éthique, et ne pas oublier que le code est avant tout une expression de leur pensée et de leur créativité.

Source : Figma

Et vous ?

Quels sont selon vous, les critères de qualité et de fiabilité du code généré ?
Quels sont les risques de sécurité ou de confidentialité liés au code généré ?
Êtes-vous pour ou contre l'utilisation des codes générés ? Que pensez-vous de Codegen ?
Quels sont les impacts des codes générés sur la motivation et la satisfaction des développeurs ?
Comment les codes générés affectent-ils les compétences et les connaissances des développeurs ?
Quels sont les avantages et les inconvénients des codes générés par rapport aux codes écrits manuellement ?

Voir aussi :

Génération de code à l'aide de grands modèles de langage : 62 % du code généré contient des erreurs d'API, qui auraient des conséquences inattendues si le code était introduit dans un logiciel réel

ChatGPT génère un code informatique peu sûr, mais ne vous le dira pas à moins que vous ne le lui demandiez, les experts mettent en garde contre les risques d'une surconfiance en ChatGPT

Une erreur dans cette actualité ? Signalez-nous-la !

Avatar de Pierre Louis Chevalier
Expert éminent sénior https://www.developpez.com
Le 30/09/2024 à 15:56
Le fait de pouvoir lire sur developpez.com des études qui disent le contraire c'est un plus, contrairement aux médias d'opinion qui ne vont s'appesantir que sur un seul coté de l'histoire.
Encore plus utile que les études, c'est de pouvoir lire ici sur le forum du club les témoignages des vrais professionnels, c'est bien plus intéressant que de lire des articles moisis publiés dans les médias génériques écris n'importe comment par des journalistes qui n'y connaissent rien.

A titre personnel, je suis témoin du fait qu'en entreprise le code généré par l'IA est une plaie, c'est bourré de failles, mal écrit, et c'est suffisamment illisible pour être presque impossible à corriger et à faire évoluer, c'est donc un désastre.

Donc après le junior imposteur qui copie du code merdique trouvé sur stackoverflow, voila le baltringue qui colle en entreprises du code donné par chatgpt, qui lui même à pompé un code merdique trouvé sur stackoverflow, quel progrès !
Après l'IA peut être utile dans certains cas, comme par exemple aider à trouver des bugs, mais ensuite c'est au développeur de corriger et de fournir un code fiable, bien écris et lisible.

Du coup les entreprises ne veulent plus embaucher de juniors biberonnés à l'IA, ils préfèrent garder leur vieux développeurs qui codent encore à la main à l'ancienne, avec un cerveau et un clavier
12  0 
Avatar de OuftiBoy
Membre éprouvé https://www.developpez.com
Le 30/09/2024 à 15:26
et bonjour à tous.

Depuis que l'IA est sur toutes les lèvres, on a droit à un article qui nous dit que c'est la panacée, suivit d'un article disant excatement le contraire.

Soit, il faut bien nourrir le site, ce qui succite le débat. Mais devant toute cette frénésie autours de l'IA, ne serait-il pas temps de faire une pause et de débattre du fond des problèmes ou des avantages de ce que propose l'IA, et plus particulièrement de l'IAG ?

L'IA est utilisée dans plusieurs domaines, qui ont des "spécificités" qui lui sont propre. Je vais prendre 4 domaines.

  • Dans l'imagerie médicale, l'IA peut comparer des milliers de radiographies pour assister un docteur spécialisé dans ce domaine, et l'aider a voir ce qu'il n'aurait pas vu, et permettre de poser un diagnostique plus affiné, permettant d'en déduire le meilleur traitement a effectuer par la suite. C'est une bonne chose, tant pour le patient, le docteur et le budget nécessaire. Cette IA peut faire un travail correct, car les radio qu'on lui a soumise on été préalablement "validée" et lui sont fournies avec le diagnostique donné suite à cette radio. Il y a donc une certaine "fiabilité" des données en entrée. Et dans ce domaine qui se nomme "imagerie médical", cela existait déjà bien avant la frénésie autours de l'IA.
  • Dans la production de texte, le principe de l'IAG, est de fournir/déduire, mot après mot, et en se basant sur la suite des mots précédents, le mot suivant du texte en question. Là aussi il y a un "domaine" et une expertise qui est nécessaire. Si le texte qu'on veut générer est de l'ordre d'un roman de science-fiction, les entrées donnée à l'IA devrait, éviter de se baser sur des recettes de cuisine française, chinoise ou arabe. Ici aussi, l'importance de sur quoi a été fournie l'IA est primordiale. Mais c'est déjà plus vaste et donc plus difficile a contrôler. Le danger étant de 2 natures. Soit les données en entrée sont bien filtrées, et ce qui en ressortira manquera fortement d'imagination, soit, si elles mal filtrées, des absurdités (ou Hallucination) seront fortement présente en sortie. Il n'y a donc pas vraiment d'intérêt à l'utilisation d'une IA.
  • Pour un documentaire sur un sujet précis, l'IA qui aide a produire ce documentaire, ne devrait être alimentée que par données précises est validées existante sur le sujet du documentaire. Ici aussi, une recette de choucroute alsacienne ne peut pas apporter à l'IA de quoi sortir un texte pertinent sur le sujet/domaine d'un documentaire. Comme dans le point précédent, l'IA produira un documentaire ressemblant très fortement à d'autres, où sera plus ou moins "farfelu". Quelle est l'avantage de l'IA ?
  • De la cas d'une aide au "codage", l'IA ne devrait également qu'être alimentée par des codes sources validés, exempts de bug, et ne portant que sur le problème que le code doit résoudre. Ce qui est humainement impossible. On utilise des techniques très différente pour construire un site Web ou un compilateur.


Il me semble dont, que pour qu'une IAG soit fiable, qu'il lui faut un entrainement de qualité, et qu'à de rares execptions près, cette "qualité" est difficilement réalisable, pour ne pas dire humainement impossible. C'est certainement la cause des fameuses Hallucinations, car une IAG qui a pour entrée tout ce qui est disponible sur internet, n'est pas capable de connaitre le vrai du faux des informations collectées.

Dans notre domaine, le développement, l'aide d'une IAG pour aider au développement d'un site web, ou du guidage précis d'un missile, semble donc une mauvaise bonne idée. Le code générer par une IAG doit donc être scupuleusement inspecté, ce qui demande certainement autant de temps qu'une solution, écrite à la main par un humain ayant concience de la nature complète du problème a réssoudre.

Dans le développement, comme dans d'autres domaines, avoir une connaissance "métier" du domaine spécifique dans lequel on travail est donc également très importante. Ce "domaine/métier" semble difficile a spécifier pour une IAG. Il est déjà assez difficile pour un humain de comprendre la demande d'un client, d'en faire une spécification, puis de générer du code pour cette spécification. Cela demande souvant des aller-retour entre ce que veut le client, la maise à jour de la spécification, et donc de comment implémenter cette spécification.

Si l'IA peut aider, dans le domaine du développement, ce ne peut-être fait relativement sereinement, que sur des petits bouts de code que le développeur doit ensuite intégré dans son propre code. Si l'architecture du code a été founie par l'IA, il faut à ce dévoloppeur comprendre cette dernière pour pouvoir y insérer du code générer par l'IAG.

Dans la balance productivité/qualité, le rôle d'un bon développeur est donc primordiale. Il est facile d'en déduire qu'au fur et à mesure que disparaîtront ces développeurs compétants, la qualité ne pourra que se dégrader.

D'une manière générale, l'IA nous fait entrer petit à petit dans un cercle vicieux, où l'IA sera de plus en plus présente, et les moyens de contrôler son travail de moins en moins présents.

Ceci tout simplement parce que ce qui fait la "nature" même d'un bon développeur, c'est sa créativité, sa profondeur d'analyse, sa réfexion, sa compétence, son expérience. Et je connais peu de développeurs qui seraient attirés par faire une maintenance permanente d'un code générer par une IA.

Un développeur aime créer, ce qui lui sera enlever par l'IA. Tout comme d'en d'autres domaines, la créativité s'éteindra petit à petit, jusqu'à un point de non retour. Il me semble donc urgent d'attendre avant qu'il ne soit trop tard.

BàV et Peace & Love.
8  0 
Avatar de PhilippeGibault
Membre éprouvé https://www.developpez.com
Le 01/10/2024 à 14:12
Notre métier n'est pas de faire du code qui marche, mais de faire du code qui dure.

Et la nuance est là.

Un code qui dure est un code qui répond au besoin fonctionnel, mais qui est durable dans le temps.

Mais un code qui marche n'est pas forcement durable dans le temps.

Je considère que notre métier consiste aussi à laisser la meilleure architecture de code pour qu'elle soit la plus durable possible.

Surtout que la dette technique a un coût:
https://www.premaccess.com/qu-est-ce...-la-maitriser/

C'est la différence entre un bon développeur qui va challenger son code pour le faire tenir sur la durée, et un mauvais développeur qui va juste faire le minimum et faire un machin-chose qui marche, ne faisant même pas de TU des fois.

La dernière catégorie est appelé le "Monkey Codeur".

De mon point de vue, je pense que l'IA va remplacer le Monkey Codeur. Et vu les enjeux économiques que représente la dette technique.
Vu les pertes économiques mais aussi sociales que représente la dette technique, je ne pleure pas la disparition du Monkey Codeur.

Par contre, je ne m'en fait pas pour le codeur qui essaye de challenger son code pour le faire durer.
Car là, il faut une intelligence humaine.

Et là, je ne pense pas que l'IA peut remplacer.
8  0 
Avatar de calvaire
Expert éminent https://www.developpez.com
Le 21/10/2024 à 16:50
je présuppose que tous le monde dans mon équipe utilise chatgpt ou équivalent.
je viens de regarder les stats de notre gitlab, et je constate la meme chose:
1122 merge request en 2023
en 2024 on est à 1087 actuellement

sachant que 1 merge request dans notre équipe est égal à 1 tache jira.
la nature des taches entre 2023 et 2024 n'a pas vraiment changé sur mon projet.

donc visiblement pas de gains à la clé.

maintenant perso je reviendrais pas en arrière, les llm sont de bons outils, c'est vraiment top quand on cherche un truc ou qu'on cherche a faire quelque chose sans trop savoir comment faire.

cas concret: je cherchait un module ansible pour faire un truc précis, j'ai demandé a chatgpt, il m'a donné le nom du module et un exemple de code, je suis allé sur la doc d'ansible pour vérifier et voir les arguments, c'est vraiment plus rapide que si j'avais du aller fouiller et lire la doc ansible.

mais il me génère toujours du code faux, voir obsolete parfois, et il est bien incapable de créer un programme informatique complet, il est juste capable d'écrire correctement des fonctions.

enfin chatgpt ou copilot sont des outils "professionnel", il est important de bien se former sur comment écrire des prompts et pour pouvoir l'utiliser, et surtout il faut maitriser son domaine d'expertise. Un gars qui n'y connait rien à l'informatique ne sera pas plus capable de faire un logiciel avec chatgpt. Chatgpt c'est une autocomplétion d'un ide tres avancée, mais un comptable ne sera jamais capable de coder un vrai logiciel.

avec chatgpt le comptable sera plus a l'aise pour coder sa macro excel, mais il ne va pas monter un serveur mongodb, automatiser l'insertions des données et remplacer excel par grafana et enfin integrer les graphs dans une page web ou un client lourd.

ou un domaine plus visuel, chatgpt peut me coder un jeu video basique en 2d sous pygame, mais il est bien incapable de me coder un équivalent call of duty ou autre jeux complexe. Meme un "simple" rayman 2d ou mario 2d chatgpt a vite ces limites.
5  0 
Avatar de Aiekick
Membre extrêmement actif https://www.developpez.com
Le 19/09/2024 à 22:50
en gros il n'y a que les non dev qui pensent que l'IA est sure. je suis pas surprit
4  0 
Avatar de axel1818
Membre à l'essai https://www.developpez.com
Le 01/10/2024 à 8:18
je l utilise dans le codage, uniquement lorsque je n y connais rien sur le sujet de ce que je veux écrire. Évidemment, les tests et verifications qui sont exhaustifs durent très longtemps. Tant que les ia ne sont pas capables de s auto vérifier, car ils ne sont que des copieurs colleurs, donc je n ai aucune confiance dans leurs resultats
3  0 
Avatar de Axel Mattauch
Membre averti https://www.developpez.com
Le 01/07/2024 à 11:50
Juste une suggestion...

Ne serait-il pas plus pertinent de s'appuyer sur l'IA pour tester les codes produits et laisser le codage aux humains?
1  0 
Avatar de chris_FR
Membre régulier https://www.developpez.com
Le 21/09/2024 à 11:32
Ah les commerciaux et le marketing

Croire que l'IA est magique et permet à tout le monde de devenir un Super Développeur sans aucune formation ni expérience ... on y est pas encore

sauf si grâce à l'IA les "devs" font encore plus de conneries et encore plus de bugs ... si ils ne sont pas dégoûtés ils peuvent apprendre plus vite
1  0 
Avatar de DrHelmut
Membre actif https://www.developpez.com
Le 01/10/2024 à 14:15
Comme tout nouvel outil, il faut apprendre à s'en servir. Copilot ne fait pas de miracle, il ne comprend rien à ce qu'il propose, il faut juste des rapprochements sémantiques et statistique.

Si tu ne sais pas coder, que toi même tu ne comprends pas ce qu'il te pond et que tu valides, à qui revient la faute au final ?

À côté de ça, l'outil étant capable de s'inspirer de ce que tu écris, des onglets ouverts, etc, bien utilisé, c'est un gain de temps de taré sur certaines tâches. Un très bon exemple, c'est quand tu reprends du code legacy avec d'énormes manques en terme de tests unitaires en vu d'un refactoring. Tu écris les premiers tout seul, et rapidement, le copilot est capable de proposer en grande part le code des tests à venir. Jamais parfait bien sûr, et c'est normal, et ça ne le sera jamais car, et on ne le répétera jamais assez : il n' y a pas d'intelligence dans ce qu'on appelle IA d'aujourd'hui
1  0 
Avatar de JP CASSOU
Membre confirmé https://www.developpez.com
Le 02/10/2024 à 10:41
Le code généré par l'IA ne fonctionne pas dans la plupart du temps
(exemple: Gradient conjugué multithreadé en Pascal)
1  0