L'IA est en train de changer le monde de la programmation, un monde déjà en profonde évolution depuis plusieurs années. Je pourrais bien sûr expliquer comment la pratique émergente consistant à utiliser des programmeurs augmentés par l'IA accroît la productivité et réduit les coûts. Mais ces avancées se font au prix d'inconvénients que beaucoup ne mesurent pas.
Encore une fois, la question n'est pas « Pouvons-nous ? », mais plutôt « Devons-nous ? ». Passons en revue quelques points essentiels à cette aune.
Ce que l'IA ne peut pas faire
L'IA générant du code apprend à partir des référentiels de codes existants. Or un développeur a souvent besoin d'une compréhension plus contextuelle du code généré. Autrement dit, générer un code qui fonctionne ne suffit pas, il fait savoir le comprendre et le maintenir. Donc s'en remettre à l'IA peut entraver le contrôle des développeurs sur leur logiciel et provoquer des erreurs lors de la correction ou de la modification des applications.
En outre, le code généré doit respecter les conventions de style ou les meilleures pratiques et inclure une gestion appropriée des erreurs. Là encore, le recours à l'IA peut compliquer le débogage, la maintenance et la collaboration des équipes.
La génération de code pilotée par l'IA se concentre sur l'apprentissage à partir de bases de codes existants, utilisées comme données d'entraînement, afin de générer un nouveau code. Les développeurs utilisant de l'IA générative ont donc une approche moutonnière (monkey see, monkey do). Cette approche peut être utile pour les tâches répétitives ou standards, auxquels sont confrontés la plupart des développeurs, mais les entreprises peuvent avoir besoin de plus de créativité et d'innovation pour les problèmes complexes ou spécifiques. L'utilisation d'un code issu d'une IA générative peut alors limiter la conception de solutions nouvelles et entraver le développement d'applications réellement innovantes.
Or, si on observe bien ce qui se passe aujourd'hui, c'est précisément l'innovation qui fait défaut. Nous semblons construire les mêmes choses encore et encore.
Des applications plus consommatrices
Mais ce qui préoccupe le plus, c'est que le code produit par les développeurs devrait être optimisé pour la plateforme sur laquelle l'application a vocation à être déployée. Des pratiques d'ingénierie saines sont indispensables pour comprendre comment optimiser les processeurs, la mémoire et la gestion du stockage.
Avec l'IA générative, de nombreuses personnes créeront et déploieront des applications sans comprendre comment elles pourraient exploiter les ressources de manière plus optimisée. Le bilan ? Des applications qui coûtent plus cher en fonctionnement et qui ont une empreinte carbone beaucoup plus importante.
Ce qui est dommage, c'est que, dans la plupart des cas, le simple fait que l'application fonctionne est suffisant pour beaucoup. Les applications fonctionnent pendant des années, gaspillent beaucoup d'argent et ne parviennent pas à apporter une valeur optimale à l'entreprise. « Mais, ça marche, n'est-ce pas ? », entend-on.
Trouver le juste équilibre
Un autre aspect effrayant du développement piloté par l'IA réside dans les nombreuses vulnérabilités de sécurité qui sont laissées dans l'application et passent inaperçues jusqu'à l'analyse post-mortem après une attaque. Là encore, nous avons besoin de l'ingénierie humaine pour repérer et corriger ces failles, même si certains outils d'analyse de code pilotés par l'IA peuvent s'avérer pratiques et utiles dans cette démarche.
En retirant les humains du processus de développement, ce que de nombreuses organisations cherchent à faire, nous sacrifions la compréhension nécessaire à la conception d'applications pratiques. La réponse appropriée consiste à trouver un juste équilibre entre la valeur de l'IA, en termes de productivité et de coût, et l'indispensable implication de nombreuses compétences humaines. Malheureusement, je crains que nous ne comprenions ce besoin que lorsqu'il sera trop tard.