Rechercher
Contactez-nous Suivez-nous sur Twitter En francais English Language
 











Abonnez-vous gratuitement à notre NEWSLETTER

Newsletter FR

Newsletter EN

Vulnérabilités

Se désabonner

Le développement de l’IA est-il en train de signer la fin des développeurs de logiciels

mai 2019 par Pivotal

Stéphane Dubois, Directeur Général, Pivotal France,
partage son point de vue sur l’impact que pourrait avoir le développement de
l’IA (Intelligence Artificielle) sur le métier de développeurs et se questionne
sur la transformation qu’ils doivent mener pour devenir de véritables experts
techniques.

En 2011, Marc Andreessen écrivait dans le Wall Street Journal un article intitulé
« Why software is eating the world ». Aujourd’hui, c’est l’intelligence
artificielle (IA) qui dévore le logiciel. Plus récemment, le PDG de Google, Sundar
Pichai, entrevoyait même la possibilité pour les logiciels de « s’écrire tout
seuls, de manière automatique ». Sachant que le développement logiciel n’est
guère plus que la création de segments de code répétitifs, les rapides avancées
de l’IA ont de quoi faire réfléchir les ingénieurs logiciels.

Jusqu’à maintenant, le développement logiciel traditionnel se résumait à coder
en dur une série de règles : si X se produit, alors Y doit être exécuté. En
d’autres termes, c’est l’homme qui indiquait à la machine ce qu’elle devait
faire, ligne par ligne. C’est ce que l’on appelle le logiciel 1.0.

Avec le logiciel 2.0 et les progrès réalisés en matière de deep learning, il est
désormais possible de créer un réseau neuronal qui apprend à déterminer quelles
instructions ou règles utiliser pour obtenir le résultat souhaité. Nombreux sont
ceux qui considèrent, tels qu’Andrej Karpathy, directeur de l’IA chez Tesla,
que nous n’écrirons donc plus réellement de code à terme. Nous nous
contenterons de collecter des données et de les injecter dans des systèmes de
machine learning. Suivant ce scénario, le rôle de l’ingénieur logiciel
s’apparentera à un « conservateur » ou « catalyseur » de données.

Dès lors, une grande partie des programmeurs de demain n’auront plus besoin de
tenir à jour des référentiels complexes de logiciels, d’écrire des programmes
compliqués ni d’analyser leur temps d’exécution. Ils n’auront plus qu’à
alimenter les réseaux neuronaux en collectant, triant, et analysant des données.

Vers une redéfinition du rôle du développeur

Cependant, l’ingénierie logicielle telle que nous la connaissons a encore de
beaux jours devant elle. Une nouvelle fonction qu’on appelle « ingénieur
logiciel 2.0 » ou « data scientist 2.0 » est en train d’émerger. Cette
évolution technologique vise à aider - plutôt que remplacer - les spécialistes
logiciels 1.0 de bien des façons. Aujourd’hui, notre téléphone vérifie
automatiquement l’orthographe et suggère le mot suivant. Le processus
d’écriture de code suit le même fonctionnement : un outil similaire met alors en
évidence les erreurs potentielles.

Pendant des années, nous avons fait appel à des assistants automatisés pour
réusiner le code et accélérer l’écriture de code standard. Nous assistons
aujourd’hui à l’émergence d’assistants pilotés par l’IA dans des
environnements plus complexes de développement logiciel. On peut très bien
imaginer un assistant d’IA beaucoup plus avancé qui, à l’avenir, jouera un
rôle plus important. Lorsque les développeurs rédigeront du code, la machine
déterminera le type de fonction qu’ils écriront et complétera le reste du code
en respectant leur style, via une analyse prédictive très qualitative. En
d’autres termes, la machine écrira le reste du code. Il ne restera plus aux
développeurs qu’à l’approuver.

Autre champ d’application possible pour l’assistant d’IA : le développement
piloté par les tests, plus connu sous le nom de « Test Driven Development ». Un
être humain écrira les tests, tandis que la machine partenaire procédera à des
millions d’itérations afin de trouver l’élément de code nécessaire à
l’aboutissement de ces tests. Au lieu d’exécuter eux-mêmes ces deux tâches
(l’écriture des tests et leur validation), les développeurs pourront confier la
seconde tâche à la machine. Ils consacreront ainsi moins de temps au code
d’implémentation qu’à l’analyse et à la résolution des problèmes
métiers. De plus en plus utilisée pour l’écriture de code, cette pratique
devrait logiquement évoluer avec l’usage de plus en plus prégnant de l’IA.

Le logiciel 2.0 sera également capable de guider le développement piloté par les
tests et de suggérer aux développeurs le prochain test à exécuter, en justifiant
ses choix. Imaginons que l’équipe marketing leur demande de concevoir une
nouvelle fonctionnalité. S’il est possible de formuler ces attentes dans un
langage compréhensible par la machine celle-ci pourra les aider à choisir les
tests requis et suggérer les étapes suivantes.

Un remplacement de l’homme par la machine ?

Dans le meilleur des cas, le taux d’exactitude des intelligences artificielles
dépassera à peine les 90 %. Il restera néanmoins au moins 1 % d’échecs, ce qui
représente toujours un certain degré d’imprévisibilité. En d’autres termes,
il sera toujours nécessaire de vérifier que le code écrit fonctionne bien comme
escompté. Il s’agit peut-être là d’un nouveau rôle pour les ingénieurs
logiciels : contrôler le code et aider le système d’apprentissage automatique à
se rapprocher d’un taux d’exactitude de 100 %.

La question subsidiaire est de savoir quels aspects de la programmation logicielle
transférer vers le framework 2.0 d’apprentissage profond et lesquels conserver
dans le framework 1.0 traditionnel. Aujourd’hui, il est clair que ces réseaux
neuronaux sur lesquels repose le de deep learning fonctionnent parfaitement dans des
environnements supervisés dès lors que des données d’apprentissage contenant de
bons et de mauvais exemples leur sont fournies pour qu’ils apprennent à produire
des résultats appropriés. Google, par exemple, utilise le deep learning dans toute
sa gamme de produits. Les performances de ces systèmes dépendent toutefois de la
qualité des données d’apprentissage. L’amélioration des performances d’un
modèle implique bien souvent l’amélioration du code et de l’environnement de
déploiement sous-jacents, ainsi que celle des données d’apprentissage. Certains
systèmes de machine learning deviennent si performants qu’ils détectent même
les erreurs d’origine humaine.

Le logiciel 2.0 semble alors jouer le rôle de nouveau partenaire pour aider les
développeurs dans leurs fonctions. A terme, nous devrions voir émerger un
environnement collaboratif plus performant qui permettra d’itérer plus rapidement
et efficacement. Les réseaux neuronaux doivent être conçus pour une utilisation
conjointe avec d’autres solutions. Certains aspects du développement logiciel
fonctionnent très bien avec l’apprentissage en deep learning, d’autres non. Un
nouveau monde se dessine alors et se pose la question du rôle du développeur dans
cet environnement mouvant. Une chose est certaine : il n’est pas voué à
disparaitre mais doit sans aucun doute revoir l’étendue de sa fonction qui ne se
limite désormais plus à l’écriture de code. Au-delà de ça, il doit dès lors
devenir un véritable expert technique.


Voir les articles précédents

    

Voir les articles suivants