Actualités Marketing digital Web

L’IA et le développement web : comment travailler main dans la main

by Emmanuel Cathelain 27 avril 2023

Dans la tech de nombreux sujets vont et viennent au fil des ans, mais un sujet en particulier intrigue autant qu’il divise depuis de nombreuses années : l’intelligence artificielle !

Beaucoup d’IA présentées jusqu’ici ont pu être pour beaucoup assez déceptives, on était face à du “if” imbriqué dans du “if”, lui-même imbriqué dans du… vous avez compris !

Mais depuis quelques mois nous sommes confrontés à l’apparition d’outils comme chatGPT ou encore Copilot. Certains sont tentés de se jeter à corps perdus dans cette nouvelle technologie tandis que d’autres sont extrêmement frileux.
Je vous propose donc un petit tour d’horizon et de voir ensemble quelle utilisation l’on peut en faire dans le développement web.

L’IA dans le développement web

Un bon début pourrait être de se demander : quel type d’IA nous utilisons dans le dev ? Les outils d’IA peuvent être classés dans différentes catégories.

D’une part, il y a ceux dits “prédictifs” qui utilisent des algorithmes pour analyser les données et fournir des prévisions ou des recommandations dans votre environnement de développement intégré (IDE).
Ils sont utiles, mais ne sont pas vraiment considérés comme de l’IA à part entière bien qu’ils apprennent de votre manière de coder.

D’autre part, il y a ceux dits de “deep learning” qui sont des systèmes capables de prendre des décisions et d’apprendre de manière autonome, sans être explicitement programmés pour chaque tâche.
L’utilisation de vraies IA est encore relativement rare dans le développement (ou pour des tâches très spécifiques: reconnaissance d’images ou la traduction automatique).

Cependant, cela ne veut pas dire qu’elle n’a pas d’impact sur le monde du développement. L’IA “prédictive” peut être très utile pour l’analyse de données et la prise de décisions, et de nombreuses entreprises utilisent déjà des systèmes d’IA pour améliorer leur efficacité opérationnelle.

Ces outils peuvent donc prendre des formes différentes, et il est important de comprendre les nuances entre ses différentes applications.

Quelle que soit la forme qu’elle prend, il est clair pour moi qu’elle peut nous aider dans notre travail, et il est important de comprendre comment l’utiliser de manière efficace et responsable.

L’IA dans le dev est donc, à mon sens, essentiellement un facilitateur. Certains parlent même d’un Google killer !

Elle peut être utilisée pour automatiser des tâches répétitives et fastidieuses, telles que la classification et la catégorisation de grandes quantités de données. Elle peut également aider les développeurs web à gagner du temps et à améliorer leur efficacité et leur code comme nous allons le voir aujourd’hui.

Cependant, il est important de noter qu’elle n’est pas une solution miracle pour tous les problèmes de développement web. Sa mise en œuvre nécessite une compréhension approfondie de la technologie. C’est une très mauvaise pratique de demander, par exemple, à ChatGPT la réponse sur un problème rencontré à propos d’un sujet que l’on maîtrise à peine.

En outre, il est important de prendre en compte les considérations éthiques et de sécurité lors de son utilisation, en particulier en ce qui concerne la confidentialité des données. On doit, par exemple, se poser la question, avant d’intégrer un Copilot ou Copilot X à son IDE. À quoi cette extension a-t-elle accès exactement comme données ? Où vont ces données ? Quelle utilisation va-t-on en faire, etc…

Mais dans notre quotidien de développeur on utilise déjà plusieurs types d’IA, et ce, depuis des années pour certaines, comme nous allons le voir maintenant.

Quels outils d’IA pour quel usage

Voici donc une liste (non exhaustives) de différents outils qui, pour certains, sont utilisés depuis de nombreuses années :

ChatGPT

ChatGPT est une IA basée sur le langage naturel qui peut aider les développeurs web à trouver des réponses à leurs questions techniques. En utilisant l’apprentissage automatique et les modèles de traitement du langage naturel, ChatGPT peut fournir des réponses rapides et précises à des questions telles que « Comment implémenter une fonction de tri en JavaScript ? » ou « Comment configurer un serveur Apache ? ». Il peut également être utilisé pour refactoriser du code, en expliquer un morceau ou encore en commenter.

Pour l’utiliser, je peux simplement poser une question dans un langage naturel dans l’interface utilisateur de ChatGPT et il me fournira une réponse rapide. A titre personnel, j’utilise en général ChatGPT pour trouver des solutions à des problèmes de programmation, refactoriser du code ou pour obtenir des informations sur les technologies que j’utilise. Il me permet en fait de faire la même chose que lorsque j’effectue une recherche sur google et que je consulte des sites comme stackoverflow par exemple. Mais il le fait de manière plus
rapide et contextualisée.

TabNine

TabNine est un plugin d’auto-complétion qui utilise l’apprentissage automatique pour suggérer du code en temps réel. Il peut aider les développeurs à accélérer leur processus de développement en fournissant des suggestions de code précises et personnalisées en fonction de leur style de codage et de leur projet. Comme toute IA, il devient plus performant au fil du temps.

Une fois que vous installez TabNine, il commencera à générer des suggestions de code intelligentes en temps réel. Il apprendra également de votre style de codage et de vos préférences au fil du temps, ce qui rendra ses suggestions encore plus précises.

IntelliSense

IntelliSense est une fonctionnalité d’auto-complétion de code intégrée dans de nombreux IDE. Utilisé par de très nombreux développeurs, et ce, depuis des années. Il utilise des algorithmes d’analyse de code pour fournir des suggestions de code en temps réel en fonction du contexte du code en cours d’écriture.

Pour l’utiliser, vous devez simplement activer la fonctionnalité dans les paramètres de Visual Studio Code. À partir de là, IntelliSense commencera à fournir des suggestions de code contextuelles et à détecter les erreurs de syntaxe et de logique dans votre code. Vous pouvez également personnaliser les paramètres d’IntelliSense pour qu’il corresponde à vos préférences de codage.

GitHub Copilot

GitHub Copilot est un outil d’IA basé sur l’apprentissage automatique qui a été développé par GitHub et OpenAI. Il s’agit d’un plugin pour l’IDE Visual Studio Code qui peut générer du code à partir de commentaires et de descriptions en langage naturel. Il est capable de comprendre le contexte dans lequel le code est écrit et de proposer des solutions pour le compléter, ce qui peut considérablement accélérer le processus de codage.

En utilisant GitHub Copilot, vous pouvez gagner du temps et de l’énergie en laissant l’outil écrire du code pour vous. Il est particulièrement utile pour les tâches répétitives et les sections de code qui prennent beaucoup de temps à écrire. Avec Copilot, vous pouvez générer du code fonctionnel en quelques secondes, ce qui vous permettra de vous concentrer sur des tâches plus importantes et créatives. La force de copilot, c’est sa capacité à comprendre le contexte global et à proposer plusieurs solutions par demande.

L’IA peut être un excellent outil pour le développeur web mais…

Cependant, il est important de noter que tous ces outils ne doivent pas être utilisés pour remplacer complètement la capacité d’un développeur à écrire du code. Ils doivent être utilisés avec prudence et les suggestions de code doivent être examinées attentivement avant d’être implémentées dans un projet. En fin de compte, la qualité du code doit toujours être vérifiée et validée par un développeur compétent.

En résumé, l’IA peut être un excellent outil pour le développeur web. Il faut cependant avoir conscience de ses limites et ne pas s’attendre à ce qu’elle fournisse des résultats parfaits à chaque fois.

Dans le cas de chatGPT, par exemple, rédiger un prompt cohérent et détaillé est une étape cruciale. Les prompts permettent de définir les tâches que l’outil doit accomplir et les résultats attendus. Cela aide à minimiser les erreurs et à obtenir des résultats plus précis.
Les résultats ne seront pas fiables si les données ne sont pas représentatives du réel besoin.

Comprendre et maîtriser ce que l’on demande à l’outil est donc crucial pour éviter les résultats indésirables et une dépendance malsaine à l’IA. Il faut définir clairement les objectifs, comprendre ses limites, maîtriser son fonctionnement, et évaluer ses réponses.

Pourquoi l’IA n’est pas prête de remplacer les dev

Certaines personnes, lorsqu’on leur parle d’IA, pensent à un effet de mode de plus, d’autres, à l’inverse, sont paniqués et pensent que d’ici à quelques années tous les développeurs seront au chômage, car il n’y aura plus que des product owner ou product manager qui rédigeront des tickets qui seront exécutés par l’IA. Mais pour plusieurs raisons ça n’est pas prêt d’arriver.

Tout d’abord, à l’heure actuelle, l’IA peut avoir des difficultés à comprendre le contexte et les nuances de certaines situations. Par exemple, lors de l’écriture de code, elle peut ne pas être en mesure de comprendre vos préférences et vos intentions en tant que développeur, ainsi que les subtilités du problème à résoudre. Elle peut donc avoir des difficultés à proposer des solutions précises et appropriées en fonction de ces contextes complexes.

L’IA a besoin de grandes quantités de données pour fonctionner efficacement. En matière de développement web, cela peut signifier qu’elle peut avoir des difficultés à proposer des solutions cohérentes si elle n’a pas accès à suffisamment de données pertinentes pour la tâche spécifique à accomplir. Or, on se voit mal donner un projet complet à ChatGPT pour qu’il ai tout le contexte…
Il est également important de noter que les données peuvent être biaisées, ce qui peut affecter les résultats.
Encore une fois, les prompts doivent être irréprochables tant en termes techniques qu’en terme grammatical et de ponctuation. Vous vous rappelez de la pub : « Et si on mangeait les enfants ? », « Et si on mangeait, les enfants ? », une virgule ça change tout, pour la compréhension de votre prompt par l’IA, c’est pareil !

L’IA n’est donc pas parfaite et pour les raisons suivantes, nous sommes encore indispensables :

Nous avons une expérience approfondie des technologies et des langages de programmation nécessaires pour construire des sites web. ChatGPT, par exemple, n’a pas l’opportunité de développer des projets complexes de A à Z. Et c’est pourquoi nous sommes les plus à même de sélectionner les technologies les plus adaptées pour répondre aux
besoins des clients et de résoudre les problèmes techniques complexes.

Nous maîtrisons des concepts tels que les besoins des utilisateurs, la conception graphique, l’UX. Cette compréhension nous permet de créer des sites web esthétiques, intuitifs et faciles à utiliser.

Nous sommes capables de travailler avec d’autres professionnels tels que les graphistes, les chefs de projet et les spécialistes en marketing pour garantir que les sites web répondent aux besoins des clients. On est également en mesure de travailler directement avec des clients pour comprendre leurs besoins et leurs exigences.

Nous sommes confrontés à un environnement en constante évolution, avec l’apparition de nouvelles technologies et de nouvelles tendances en matière de conception.
On doit être capables de s’adapter rapidement aux changements et de rester à la pointe des dernières tendances et technologies pour garantir que les sites web qu’on développe sont à la fois modernes et fonctionnels.

L’innovation est également essentielle dans le domaine du développement web. Il faut être capable de proposer de nouvelles fonctionnalités et de nouveaux concepts pour améliorer les sites web et les rendre plus attractifs pour les utilisateurs. La pensée critique est également importante pour évaluer les avantages et les inconvénients des nouvelles
idées et concepts.

Nous avons la capacité de conseiller nos clients sur les meilleures pratiques deconception et de développement web en fonction de leurs besoins. On peut les aider à comprendre les avantages et les inconvénients de différentes approches et les aider à prendre des décisions éclairées pour leurs sites web.

L’utilisation d’outils d’IA pour le développement web présente à la fois des avantages et des inconvénients importants.

Avantages de l’utilisation d’outils d’IA

  • Assistance en temps réel : un chatbot peut fournir une assistance en temps réel aux développeurs lorsqu’ils sont confrontés à des problèmes techniques ou à des erreurs de codage. Les développeurs peuvent lui poser des questions et obtenir des réponses immédiates, ce qui leur permet de résoudre rapidement les problèmes et de continuer à travailler efficacement.
  • Productivité améliorée : en utilisant un chatbot pour les aider à coder, les développeurs peuvent gagner du temps et augmenter leur productivité. Cela peut permettre d’automatiser certaines tâches répétitives, telles que la vérification de la syntaxe, la correction de fautes de frappe, ou encore l’analyse de code.
  • Accès à une base de connaissances : les chatbots peuvent être programmés pour stocker une base de connaissances qui contient des informations utiles pour les développeurs web, comme des codes de référence, des règles de syntaxe et des bonnes pratiques de codage. Cela peut aider les développeurs à accéder rapidement à des informations importantes et à améliorer leur niveau de compétence.
  • Apprentissage continu : en utilisant un chatbot pour coder, les développeurs peuvent apprendre de nouvelles compétences et techniques en temps réel. Il peut fournir des conseils et des astuces pour améliorer le code, ainsi que des recommandations pour améliorer le flux de travail de codage.

Inconvénients de l’utilisation d’outils d’IA

  • Limitations de la programmation : les chatbots sont basés sur des programmes informatiques et sont donc soumis aux limites de la programmation. Ils ne peuvent fournir que des réponses basées sur leur programme et ne peuvent pas interagir de manière créative avec les développeurs.
  • Risques de dépendance : les développeurs peuvent devenir trop dépendants d’un chatbot pour les aider à coder, ce qui peut limiter leur capacité à résoudre des problèmes par eux-mêmes. Cela peut également les empêcher d’apprendre de nouvelles compétences et techniques, ce qui peut les limiter à long terme.
  • Précision limitée : les chatbots peuvent ne pas être en mesure de comprendre pleinement les demandes ou les questions des développeurs, en particulier si les demandes sont complexes ou ambiguës. Cela peut entraîner des réponses imprécises ou des erreurs de codage.
  • Confidentialité des données : la confidentialité des données est un facteur important à prendre en compte lors de l’utilisation d’un chatbot pour aider à coder.

Je dirais donc pour conclure que les outils qui sont récemment apparus peuvent révolutionner notre façon de travailler mais doivent être utilisés avec prudence et en connaissance de cause. ChatGPT par exemple, est, pour moi, clairement un google killer.

Un collègue fait un parallèle qui me fait sourire, il compare la transition google/chatGPT à celle d’il y a quelques décennies Encyclopédie/Google. Seul l’avenir nous dira s’il a raison.
Mais je serais tenté d’être d’accord avec lui, lorsque nous voyons les produits qui sont apparus encore plus récemment tels que GPT4 qui est multi-modal (il peut prendre en entrée plusieurs types de données tel que du texte et des images), qui peut prendre 25000 tokens contre 3000 avec GPT3.5, et qui est vendu comme plus créatif et collaboratif. Ou encore Copilot X qui intègre désormais un chat, qui est capable de commenter vos pull request ou encore de générer vos commandes dans votre terminal.

Bonus, les tips prompt ChatGPT:

  • La sémantique est très importante: « peux tu me dire » appellera très souvent une réponse générique, alors que « créé pour moi » lui fera générer une réponse plus précise.
  • Lui donner une personnalité. Cela peut sembler futile mais commencer son chat par « Je souhaite que dans cette conversation tu ai la personnalité d’un développeur web expert en node.js qui est obsédé par l’optimisation du code » va complètement transformer la teneur de votre conversation avec le chatBot. Pour lui le contexte est très important et encore une fois plus vous serez précis et vous réduirez sa marge de manoeuvre et plus ses réponses colleront à vos attentes.
  • Utiliser des doubles quotes. Cela va permettre de délimiter l’action qu’il doit accomplir et le « sujet » sur lequel il doit accomplir cette action.
  • Être spécifique, quel est l’objet ET l’objectif de votre demande, et dans sous quelle forme il doit vous la proposer. Vous lui donnez un morceau de code que vous souhaitez optimiser, ou une fonction dont vous voulez augmenter les performances. Est-ce-que vous voulez qu’il rédige le code pour vous, qu’il fasse une critique globale, ou qu’il vous fasse en plusieurs points des propositions techniques détaillées ?
  • Vous pouvez, en préambule, lui donner des exemples de ce que vous attendez.
Emmanuel Cathelain

Emmanuel Cathelain

Emmanuel, développeur web full stack autodidacte, passionné par l'apprentissage continu et la découverte de nouvelles technologies. Toujours enthousiaste, il met ses compétences au service de projets innovants chez Kaliop, où il a débuté sa carrière de développeur il y a un an.

Commentaires

Ajouter un commentaire

Votre commentaire sera modéré par nos administrateurs

Vous avez un projet ? Nos équipes répondent à vos questions

Contactez-nous