Comme beaucoup de monde, je regarde de près ChatGPT en ce moment (ou plutôt GPT-3).
Je m'y intéresse globalement mais aussi en tant que développeur. Je regarde ce que l'outil est capable de réaliser et en quoi il pourrait chambouler pas mal de métiers (dont le mien).
Une fois de plus, le débat sur la disparition du métier de développeur est relancé. J'avoue ne pas particulièrement être effrayé car j'ai accepté depuis longtemps que le monde du travail évolue, de plus en plus vite, et qu'il faudra se remettre en question. D'autres choses dans l'avenir de l'humanité sont bien plus inquiétantes que ça.
Peut-on vraiment imaginer que l'intelligence artificielle pourra remplacer les développeurs ? Peut-être qu'un jour le métier pourra être complètement automatisé mais je doute que ce jour soit proche. D'autres métiers pourraient être bien plus rapidement touchés. Je pense notamment à des métiers de bureau très "normés" où les tâches à effectuer sont extrêmement répétitives avec quelques variations qui pourraient être facilement comprises par une IA d'aujourd'hui. Toutefois je vais modérer le tout à la fin de ce billet. D'ailleurs, si les travailleurs touchés peuvent migrer rapidement et facilement vers une autre activité ou si leur salaire continue d'être assuré via un revenu universel (ou autre) grâce à un partage équitable de la richesse, ce n'est pas si grave (mais malheureusement j'en doute).
Revenons au métier de développeur. Comme de nombreux autres métiers, il pourrait largement évoluer avec l'IA (mais là aussi je vais modérer mes propos plus loin ...)
J'ai testé ChatGPT et j'avoue avoir été impressionné par les résultats de certaines requêtes. J'ai aussi pu observer les limites lorsqu'on cherche à obtenir du code spécifique lié à un outil précis (comme des échanges avec l'API d'un CMS spécifique par exemple). L'IA est entraînée avec une masse de données gigantesque comprenant surtout du code public disponible sur le web (comme Github) en ce qui concerne le code informatique (pour le reste, c'est aussi beaucoup d'entraînement via les contenus disponibles en ligne, mais aussi de l'étiquetage manuel probablement réalisé par des humains). Si vous lui demandez du code utilisant des connaissances génériques sur un langage, c'est assez bluffant. Si vous lui demandez quelque chose concernant un outil moins connu alors les résultats sont beaucoup moins bons.
Si on prend en compte l'arrivée prochaine de GPT-4 (encore bien plus puissant) et en imaginant une base de code d'apprentissage encore plus grande, on peut imaginer dans un avenir relativement proche que ces outils pourraient être capables de générer pratiquement n'importe quel code informatique.
Mais ... Il faut revenir aux sources.
A quoi sert le code informatique ? On l'utilise pour répondre au besoin d'un utilisateur afin de simplifier une tâche à l'aide de l'informatique (automatisation totale ou partielle, aide à la décision, etc). Pour parvenir jusqu'au code, il est d'abord nécessaire de comprendre parfaitement le besoin de l'utilisateur dans le moindre détail, sans aucune ambiguïté pour ensuite pouvoir définir une architecture logicielle et enfin écrire le code nécessaire. L'utilisateur rédige en général un cahier des charges (quand il y en a un) mais il est généralement incomplet. Il faut alors le questionner, comprendre son métier, l'accompagner pour parvenir à saisir son besoin sur le bout des doigts. Une IA est aujourd'hui encore loin de pouvoir réaliser ce travail.
Si on considère que la valeur du développeur n'est liée qu'au code qu'il écrit alors oui, on peut dire qu'une IA pourra réaliser son travail dans la plupart des cas et dans un futur proche (quand on voit l'évolution actuelle). En revanche, si l'on considère que tout le travail précédent fait partie de la valeur du développeur (ce qui est mon cas), alors l'IA a encore beaucoup de travail :)
Si la tâche à "coder" est simple à expliquer alors clairement, l'IA pourra génèrer le code sans trop de difficulté. Pour des tâches plus complexes alors il va falloir tellement spécifier le besoin qu'il serait presque aussi rapide d'écrire le code pour quelqu'un d'expérimenté. En effet, l'IA a besoin de détails, elle ne peut pas lire dans le cerveau du développeur.
Finalement, le code "n'est qu'une" transcription dans un langage informatique de la solution à un problème qui a été parfaitement compris et analysé (si je schématise). Je repense toujours à ce dessin humoristique qui résume bien cette définition : https://www.commitstrip.com/fr/2016/08/25/a-very-comprehensive-and-precise-spec/
On peut alors s'inquiéter pour un développeur "junior" qui doit écrire du code selon des spécifications techniques qui lui ont été fournies, oui. Il faudra probablement moins de développeurs mais il en faudra toujours.
Là encore, si ceux qui sont touchés peuvent facilement changer de métier (ou de tâches) pour une activité utile à la société (pas un "bullshit job") ou qu'un revenu universel compense (partage équitable de la richesse) sa perte pour qu'ils puissent s'adonner à une activité bénévole, à l'art, pourquoi pas. Sinon, effectivement, c'est un problème.
Mais, tout ça, c'est un monde où l'énergie n'est pas un problème, où les ressources minières sont foisonnantes, où l'extraction ne pollue pas, etc ... C'est là où j'ai envie de mettre un gros bémol. l'IA n'a rien de virtuel. Beaucoup de matériel et d'énergie sont nécessaires pour faire tourner tout ça.
Si l'IA nous offrait à tous du temps libre pour cuisiner, jardiner, s'occuper des autres (avec un maintien du revenu) tout en étant compatible avec les limites planétaires et avec un impact écologique limité alors on pourrait voir ici une bonne nouvelle. Mais est-ce toujours possible ?
C'est cette question qui me taraude depuis un bon moment et j'en ai fait un autre billet de blog.