Il y a quelques jours, je suis tombé sur un titre intrigant sur LinkedIn qui affichait une déclaration audacieuse : "Une entreprise technologique vise à augmenter la productivité des programmeurs de 50 % avec GitHub Copilot". Ce qui a rendu la situation encore plus curieuse, c'est que l'auteur du message n'était pas un programmeur.
Malgré l'audace du titre, je crois que cette question peut mener à une analyse et à une discussion intéressantes.
On ne peut nier les capacités impressionnantes des outils d'IA disponibles au public aujourd'hui. Dans le domaine de la programmation, ils assistent déjà de manière significative les développeurs, optimisent leurs routines et augmentent leur productivité. Avec les bons outils, les problèmes peuvent être résolus plus rapidement.
Cependant, pour ceux qui ne sont pas familiers avec la programmation, ces outils d'IA peuvent sembler presque mystiques, donnant l'impression qu'ils peuvent résoudre rapidement et automatiquement n'importe quel problème. Mais nous savons que la réalité est tout autre.
L'engouement suscité par ces outils est pleinement justifié, et avant de se faire une idée fausse sur moi, sachez que je suis aussi l'un d'entre eux. Cependant, je crois que tout le monde ne comprend pas pleinement ce que ces outils sont capables de faire en réalité.
D'un côté, vous avez des débutants en programmation qui craignent d'être remplacés par des machines.
D'un autre côté, vous avez des PDG qui recherchent des solutions magiques pour réduire les coûts ou augmenter la productivité, peut-être sans une compréhension claire du travail réel effectué par un programmeur.
"ChatGPT (ou Copilot), créez une page pour vendre des billets pour un spectacle dans Node.js. Le backend doit être préparé pour une moyenne de 2 000 requêtes par seconde et être résistant aux pannes. Configurez un équilibreur de charge pour répartir les requêtes entre les Assurez-vous que les caches sont fonctionnels et réduisent réellement la charge du serveur. Instrumentez des outils de surveillance en temps réel. Et bien sûr, la base de données doit être regroupée avec une bonne stratégie de réplication.
L'exemple est exagéré, je le sais. Mais cela illustre la complexité de la mise en œuvre de quelque chose qui peut sembler simple à quelqu'un qui n'est pas programmeur.
L'écriture de code n'est qu'une partie du travail d'un programmeur, et je suis sûr que les IA génératives excellent dans ce domaine, mais ce n'est pas tout ce qu'un programmeur fait.
Nous, programmeurs, passons une partie importante de notre journée sans écrire une seule ligne de code. Il est nécessaire de comprendre d'abord les exigences des nouvelles fonctionnalités, d'engager des conversations et des ajustements avec les parties prenantes, de concevoir l'architecture technique et enfin de traduire toutes ces informations en code.
Et n'oublions pas que ce code doit être écrit dans son contexte, compte tenu de son adéquation avec le reste de la base de code existante.
Ce que je veux dire, c'est que ces outils d'IA, bien que très utiles, ne font pas de magie. Mais ils peuvent être de bons assistants pour les programmeurs.
L'une des lectures qui a considérablement élargi ma perspective sur le génie logiciel a été le livre classique "The Pragmatic Programmer" de Dave Thomas et Andrew Hunt. Un des chapitres parle d'une curieuse technique de débogage : le canard en caoutchouc.
L'idée de base derrière la programmation du canard en caoutchouc est d'expliquer à haute voix le code ou le problème auquel vous êtes confronté comme si vous l'expliquiez à un canard en caoutchouc. En verbalisant le problème ou en décrivant le code étape par étape, vous trouvez souvent une solution ou obtenez une nouvelle perspective sur le problème.
ChatGPT est excellent pour converser, et en outre, converser en contexte. Cette intelligence artificielle pourrait-elle être l'évolution du canard en caoutchouc de Dave Thomas et Andrew Hunt ?
Il existe déjà des extensions pour Visual Studio Code qui s'intègrent à ChatGPT, en l'utilisant comme un canard en caoutchouc. Vous pouvez les consulter ici .
J'aime la façon dont GitHub a choisi de nommer son produit Copilot, et cela correspond au concept du canard en caoutchouc. L'outil vise à être un co-pilote plutôt que le véritable pilote. C'est l'assistant du programmeur, son canard en caoutchouc.
Ce message s'adresse à ceux qui sont anxieux et préoccupés par l'avenir de leur carrière en programmation : détendez-vous ! Mais ne vous détendez pas tant que ça, car la dure réalité est que ce sont les principes fondamentaux du génie logiciel qui font un bon programmeur, pas seulement le code.
Avec la popularisation de l'informatique grand public dans les années 70 et 80, les professionnels de la comptabilité et de la finance se sont sentis menacés par les tableurs. Une machine qui pourrait stocker des milliers de lignes et de colonnes et ne jamais faire d'erreurs de calcul. Qui refuserait cela ?
Il est vrai que les feuilles de calcul étaient et sont toujours puissantes et qu'elles constituaient une menace pour les emplois de "rédacteurs de feuilles de calcul". Cependant, ceux qui interprétaient les données, comprenaient le contexte d'affaires et appliquaient les concepts comptables savaient certainement utiliser les tableurs au lieu de les critiquer.
Les programmeurs ne sont pas de simples rédacteurs de code. N'ayez pas peur de votre nouveau canard en caoutchouc; à la place, utilisez-le. Et merci, ChatGPT, de m'avoir aidé à rédiger cet article.
Également publié ici