Au-delà du prompt : pourquoi le code généré par l’IA a toujours besoin d’un vrai ingénieur
Au-delà de l’IA : pourquoi le code généré par machine exige encore de vrais ingénieurs
L’idée semblait magique : taper une description, obtenir du code prêt pour la production. ChatGPT, Copilot et leurs concurrents ont fait croire que n’importe qui pouvait soudain coder à grande échelle. Besoin d’une API REST ? Trois implémentations arrivent en quelques secondes. Beaucoup y ont vu la fin des barrières : enfin, le développement devenait accessible à tous.
Pourtant, l’accessibilité ne remplace pas la responsabilité.
Le raccourci trompeur de l’IA
On a tous vu le même schéma : un étudiant demande à un LLM d’écrire une fonction, change deux noms de variables et rend le devoir. Les outils de détection classiques, basés sur des comparaisons de texte, ne repèrent rien. Le code a l’air différent, pourtant la logique reste identique.
Le problème dépasse les universités. Des juniors poussent du code en production sans vraiment comprendre ce qu’ils livrent. Des contributeurs open-source intègrent des blocs dont l’origine devient floue. Le risque grandit dès que l’on accepte du code sans renforcer la revue.
L’idée reçue reste puissante : « si ça fonctionne, c’est du bon code ». C’est faux.
Pourquoi détecter le plagiat devient si difficile
Les premières méthodes de détection reposaient sur des empreintes simples : hacher le fichier après avoir normalisé les espaces et les commentaires. Très efficace pour attraper les copies brutes, mais insuffisant dès que l’IA réécrit la structure.
Quand les noms changent, que les boucles sont refactorées ou que l’algorithme est réécrit autrement, il faut passer à des approches plus fines.
Une défense en plusieurs couches
Les systèmes modernes combinent plusieurs techniques pour repérer les similitudes, même dissimulées.
Correspondance exacte : rapide et fiable pour les copies littérales. Un simple hachage MD5 suffit et génère très peu de faux positifs.
Comparaison normalisée : on nettoie le code (suppression des commentaires, normalisation des espaces, remplacement des identifiants) puis on mesure la similarité. Si le score reste élevé après ce traitement, on détecte une copie masquée.
Analyse structurelle : grâce aux arbres syntaxiques abstraits (AST), le système compare la logique plutôt que le texte. Deux implémentations d’un échange de variables – l’une avec une variable temporaire, l’autre avec un tuple – sont reconnues comme identiques.
Similarité sémantique : la couche la plus avancée convertit le code en vecteurs numériques (embeddings) qui capturent le sens. Deux programmes qui font la même chose, même avec une syntaxe différente, apparaissent proches dans cet espace vectoriel.
Ce que cela change pour vos projets
Si vous gérez des soumissions de code – plateforme d’apprentissage, marketplace de talents ou système interne de qualité – un seul niveau de détection ne suffit pas. Il crée une fausse impression de sécurité. Le plagiat assisté par IA demande une défense multicouche.
L’écart grandissant entre génération et compréhension
Les outils d’IA accélèrent le développement et libèrent du temps pour les vrais problèmes. C’est une bonne nouvelle. Mais l’écart se creuse entre « mon IA a écrit ça » et « je maîtrise ce code au point de pouvoir le maintenir ».
Un senior utilise Copilot comme échafaudage. Un junior le traite comme une réponse définitive. Le résultat peut passer tous les filtres de détection et pourtant présenter des faiblesses en sécurité ou en maintenabilité.
Le vrai danger n’est pas que l’IA écrive du code, mais qu’elle produise du code « acceptable » que personne ne comprend vraiment.
Comment adapter votre workflow
Si vous intégrez l’IA dans votre chaîne de développement, quelques ajustements s’imposent :
- Revue de code renforcée : demandez à chaque développeur d’expliquer les parties non évidentes. Les copier-coller déguisés en refactorisation sautent souvent aux yeux quand on les fait commenter.
- Analyse par embeddings : si vous traitez beaucoup de code utilisateur, ajoutez une couche de similarité sémantique. C’est plus coûteux, mais cela attrape ce que les comparaisons textuelles manquent.
- Documentation obligatoire : quand une partie du code vient d’une IA, documenter l’intention devient vital. Dans six mois, vous ou un collègue devrez comprendre pourquoi ce choix a été fait.
- Tests plus poussés : le code généré paraît souvent correct, mais néglige les cas limites. Des tests exhaustifs révèlent ces trous que la revue seule ne voit pas.
Le vrai enjeu
Facilité de génération appelle rigueur d’évaluation. Quand écrire du code était difficile, on réfléchissait plus profondément. Aujourd’hui, le travail difficile a simplement changé de place : il se trouve dans la vérification, la compréhension et la validation.
C’est précisément là que se situe l’ingénierie.