Depuis quelques mois, le développement de l'intelligence artificielle générative a révolutionné le quotidien de nombreuses personnes. Les développeurs d'application n'y ont pas échappé. Malgré les nombreuses rumeurs liées au remplacement des développeurs par l'IA, je pense qu'il est tout à fait prématuré de penser qu'un développeur peut être remplacé. De célèbres développeurs, notamment The Primagen (Youtube) et la plateforme de gestion de code GitHub pensent de la même manière: l'IA n'est pas là pour remplacer les développeurs, mais plutôt pour améliorer leur productivité.
L'intégration de l'IA aux outils de code permet aux développeurs d'améliorer leur productivité, particulièrement sur des tâches à faible valeur ajoutée. Les tests unitaires, tout comme les méthodes et fonctions de type accesseur, font partie des éléments sur lesquels une assistance est intéressante et bénéfique.
L'intégration de l'IA dans les outils de code n'a cependant pas que de bons côtés. Pour les étudiants et développeurs juniors, les plus touchés, cela peut entraîner une carence en apprentissage, si les résultats donnés par l'IA générative sont utilisés sans réfléchir. Dans ce cas, le développeur un peu trop pressé se passe d'une composante importante: apprendre et améliorer sa compréhension du langage de programmation.
Pour les développeurs expérimentés, la problématique provient plutôt de l'usage que font les fournisseurs de tels services des données avec le code que vous leur fournissez. En effet, pour qu'une IA puisse vous fournir des services en matière de code, elle doit au préalable prendre connaissance de votre code et, bien souvent, l'envoyer sur des serveurs tiers. En entreprise, le code rédigé est généralement propriétaire, et son absorption par une IA générative peut provoquer sa mise à disposition à d'autres acteurs, et potentiellement à la concurrence ! Un code saisi dans une IA, réutilisé pour l'apprentissage de celle-ci, peut facilement être retourné à un concurrent qui souhaite répliquer vos idées. Cela pose ensuite de nombreux problèmes, notamment vis-à-vis de la propriété intellectuelle. Aujourd'hui, on considère souvent que ce que l'IA "crée" devient la propriété de son utilisateur (ou est libre de droit)... mais quid d'un code généré sur la base d'un code propriétaire appartenant à une autre entreprise ? Le débat fait rage.
Il est crucial de se poser les bonnes questions en matière d'IA (voir notre article L'IA en entreprise), mais également d'opter pour des modèles respectueux de votre code et de sa propriété intellectuelle. Ainsi, des solutions comme Codeium ou GitHub Copilot Business / Enterprise s'engagent, dans leur politique d'utilisation et de protection des données, à n'entraîner l'IA qu'avec du code libre de droit. À noter que les versions gratuite ou Pro de Copilot ne protègent pas suffisamment contre la réutilisation du code propriétaire, il est donc important de sélectionner uniquement les variantes d'entreprise si vous souhaitez vous protéger. Les étudiants et développeurs travaillant sur du code peu sensible ou open source ont, quant à eux, davantage d'outils à leur disposition.
Enfin, il est également important de considérer comment l'IA générative est utilisée pour coder. Je préconise toujours de garder en tête que vous êtes le pilote. Ainsi, si vous développez exclusivement par du copier-coller des sorties de l'IA ( vibe coding - programmation guidée par IA), vous n'êtes pas en contrôle. C'est l'IA qui contrôle ce que vous écrivez, et non l'inverse. Cela peut avoir des conséquences importantes sur la qualité et la sécurité de votre code. De plus, cela a des implications importantes en matière de responsabilité: qui est responsable d'une faille introduite par l'IA ? Spoiler: c'est la personne qui l'a utilisée.
À noter finalement que l'accélération de la génération de code (avec ou sans IA) tend à introduire davantage de dette technique: plus le code est implémenté rapidement, plus il y a un potentiel d'instabilité et d'introduction de bugs. Il est donc essentiel de pouvoir prendre le temps de réaliser des revues de code régulières pour s'assurer que des dysfonctionnements, régressions et vulnérabilités ne sont pas introduits en tentant d'augmenter la cadence.