<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title>posture développeur - Tag - Jordan Chapuy - Blog d'un développeur passionné ❤️</title><link>https://jordanchapuy.com/tags/posture-d%C3%A9veloppeur/</link><description>posture développeur - Tag - Jordan Chapuy - Blog d'un développeur passionné ❤️</description><generator>Hugo -- gohugo.io</generator><language>fr</language><lastBuildDate>Fri, 06 Dec 2024 18:00:00 +0100</lastBuildDate><atom:link href="https://jordanchapuy.com/tags/posture-d%C3%A9veloppeur/" rel="self" type="application/rss+xml"/><item><title>Quelle évolution pour le métier de développeur face aux IA ?</title><link>https://jordanchapuy.com/posts/2024/12/quelle-evolution-pour-le-metier-de-developpeur-face-aux-ia-ai-articial-intelligence/</link><pubDate>Fri, 06 Dec 2024 18:00:00 +0100</pubDate><author>Auteur</author><guid>https://jordanchapuy.com/posts/2024/12/quelle-evolution-pour-le-metier-de-developpeur-face-aux-ia-ai-articial-intelligence/</guid><description><![CDATA[<p>L’Intelligence Artificielle. C’est sur toutes les lèvres en ce moment. En particulier chez les développeurs puisqu’on est triplement concernés : c’est un nouvel outil pour nous assister, c’est un nouveau produit avec lequel on peut créer des fonctionnalités, et c’est peut-être aussi quelque chose qui pourrait nous <em>remplacer</em>.</p>
<p>Ça y est, dès le premier paragraphe, le mot est lâché. Les IA vont nous remplacer. C’est en tout cas ce qui est annoncé pour l’année prochaine de manière tonitruante sur LinkedIn et Twitter, c’est donc forcément vrai ! Juste à côté des révélations sur ces pourcentages incroyables de productivité gagné grâce à ces nouveaux outils.</p>
<p>Mais quelle est donc la vérité vraie ? Quel sera le jour exact de notre mise à la retraite ? Qu’allons-nous faire ensuite ? Eh bien je n’en sais rien. Je n’ai pas cette compétence en divination que d’autres semblent avoir acquis.</p>
<p>Pour autant, je trouve qu’il y a des réflexions intéressantes sur notre métier face à l’IA, et j’ai envie de poser mes pensées et de les partager.</p>
<h1 id="les-outils-actuels">Les outils actuels</h1>
<p>Avant de s’amuser à parler du futur, regardons ce que l’on a aujourd’hui en termes d’outils pour le développeur. Je ne vais pas faire une liste exhaustive, mais plutôt un rapide tour d’horizon de quelques types d’usages aujourd’hui possible afin d’être aligné - les nouveautés vont vite.</p>
<p><strong>Des chats</strong>. Avec ChatGPT comme le plus répandu et Claude comme son concurrent le plus sérieux. Il nous est possible de générer du code à partir d’un énoncé, d’apprendre un concept, de donner du code pour le modifier, de résoudre un problème en collant un morceau de code voire même un lot d’erreur ou une stacktrace. Bref, beaucoup de possibilités pour être assisté.</p>
<p><strong>De la complétion de code</strong>. GitHub Copilot a ouvert le bal de l’intégration d’une IA dans les IDE pour générer la suite du code que l’on est en train d’écrire. Tantôt une simple ligne, tantôt tout le contenu d’une fonction.</p>
<p><strong>Des IDEs dopés</strong>. Explique-moi ce code, refactor ce morceau, créé cette fonction, intègre ma codebase, … Ce sont quelques exemples de nouveaux usages arrivés avec des IDEs construits autour de l’IA comme Cursor.</p>
<p><strong>Des sandbox</strong>. D’abord des usages simples avec ChatGPT Canvas et Claude Artifacts pour prompter sur un fichier qui se modifie au fur et à mesure, on voit maintenant des solutions comme Bolt.new qui vont générer et assembler du code puis le déployer.</p>
<p><strong>Des agents</strong>. Ici, on est encore plus dans l’expérimental avec de multiples tentatives d’avoirs des agents IA qui réalisent des tâches. Puis il y a Claude qui propose depuis peu de contrôler un PC à distance pour automatiser des tâches via des prompts grâce à sa fonctionnalité Computer Use.</p>
<p><strong>Des intégrations à d’autres systèmes</strong>. Les données sont très importantes pour obtenir des réponses plus pertinentes. Très récemment, Claude MCP a été dévoilé : c’est un protocole pour connecter l’IA à des services externes (notre Filesystem, Google Drive, Slack, …) et agir dessus !</p>
<h1 id="notre-métier-va-changer">Notre métier va changer</h1>
<p>Je suis convaincu que notre métier de développeur va évoluer. Deux choses me font penser cela.</p>
<p>Il y a un <strong>changement extérieur</strong> - l’arrivée de l’IA. Elle apporte des nouveaux outils, de nouvelles pratiques, de nouvelles façons de faire. Il y a et aura donc des impacts. On va s’y adapter, et on va donc évoluer.</p>
<p>Quand on regarde le passé, c’est au final ce qu’il se passe depuis que notre métier existe - <strong>il n’a cessé d’évoluer</strong>. Entre les cartes perforées et nos postes de travail actuel, il s’en est passé des choses ! Assembleur, langages bas niveau, modernes, éditeurs de texte, IDEs, linters, frameworks, gestionnaires de version, extreme programming, etc.</p>
<p>C’est d’ailleurs un des aspects que j’aime dans ce métier, il évolue en permanence et on a continuellement à apprendre.</p>
<p>Si on est plutôt confiant sur le fait que ça va bouger, la question suivante est vers quoi va-t-on se diriger ?</p>
<h1 id="plusieurs-étapes-de-changement">Plusieurs étapes de changement</h1>
<p>On ne passera pas d’un coup de « les devs codent » à « les IA sont magiques, construisent un produit complexe entièrement et dominent le monde ». Non, il y aura au moins <strong>plusieurs étapes</strong> avant d’y arriver (si on y arrive).</p>
<p>Je verrais bien quelque chose de ce genre :</p>
<ul>
<li><code>Les humains codent</code>,</li>
<li><code>Les humains codent et sont assistés par des IA</code>,</li>
<li><code>Les IA sont assistés par des humains</code>,</li>
<li><code>Les IA sont autonomes</code>.</li>
</ul>
<p>Et il y aura plusieurs sous-étapes dans « Les IA sont autonomes ». On n’arrivera pas du jour au lendemain avec des IA et des robots qui fabriquent des choses avant même que nous humains ayons conscience d’avoir besoin de quelque chose.</p>
<p>Je dirais qu’aujourd’hui on est dans « Les humains codent et sont assistés par des IA ». J’aime bien le nom que Microsoft a donné à GitHub Copilot d’ailleurs, ça représente bien cette étape.</p>
<p>J’explicite un peu avant de passer à la suite. J’ai en tête la création de <strong>produits complexes</strong>. Oui, aujourd’hui, on peut déjà créer des landing page ou des todo list basiques à l’aide de quelques prompts seulement, sans (trop) toucher au code. Mais on est loin de pouvoir faire créer le site de la Fnac, le système d’exploitation de nos smartphones, les systèmes bancaires, etc.</p>
<h1 id="ladoption-est-pour-linstant-faible-">L’adoption est pour l’instant faible ?</h1>
<p>Je me questionne sur le taux d’adoption auprès des développeurs. Si on met de côté le bruit créé par les influenceurs - forcément davantage en lumière que la masse - et qu’on regarde aussi de plus près la fréquence et les cas d’utilisation, j’ai l’impression que les développeurs adoptent lentement ces nouveaux outils.</p>
<p>J’imagine une pyramide, où plus on considère une utilisation régulière et avancée, moins il y a d’utilisateurs :</p>
<ul>
<li><code>Ceux qui connaissent</code>,</li>
<li><code>Ceux qui ont utilisé une fois ou deux</code>,</li>
<li><code>Ceux qui utilisent quelques fois chaque mois</code>,</li>
<li><code>Ceux qui utilisent quelques fois chaque jour</code>,</li>
<li><code>Ceux qui utilisent en permanence de multiples IA pour tout un tas d’usages</code>.</li>
</ul>
<figure><a href="images/pyramide-utilisations.png"></a>
</figure>

<p>C’est très subjectif par rapport à ce que je peux observer bien sûr, je n’ai aucune statistique. Mais je dirais que peu de développeurs ont un usage fort de l’IA. On est plutôt dans une phase Early Adopters. Beaucoup ont donc encore à s’équiper, apprendre, expérimenter.</p>
<p>Et ce n&rsquo;est pas tout. Jusque-là, on parlait de l&rsquo;IA à travers un prisme consommateur, mais il y a d&rsquo;autres angles à considérer dans l&rsquo;écosystème de l&rsquo;IA avec également de moins en moins de personnes :</p>
<ul>
<li><code>Ceux qui consomment l'IA (clients)</code>,</li>
<li><code>Ceux qui créent des fonctionnalités et des outils augmentés par de l'IA (développeurs)</code>,</li>
<li><code>Ceux qui personnalisent une IA existante avec du fine-tuning, LoRA, RAG... (data/développeurs)</code>,</li>
<li><code>Ceux qui créent l'IA (chercheurs)</code>.</li>
</ul>
<figure><a href="images/pyramide-usages.png"></a>
</figure>

<h1 id="la-qualité-du-code-sera-moins-importante">La qualité du code sera moins importante</h1>
<p>Les IA font aussi grincer quelques dents. « La qualité du code est nulle. Il y a des hallucinations. On va finir par ne rien comprendre. ». Il y a du vrai là-dedans. Ce n’est juste pas autant noir ou blanc comme certains laissent penser. Il faut nuancer, et ajouter une temporalité.</p>
<p>Je pense qu’il y a une partie d’ego qui est touchée. C’est nouveau, ça dérange, ça change, ça fait peur. Il y a de la résistance, les problèmes sont principalement mis en avant.</p>
<p>Mais <strong>ces problèmes existent</strong> bel et bien. Aujourd’hui, les IA génèrent des choses utiles tout comme elles vont écrire de belles conneries. Du code bien écrit, qui fonctionne mais illisible, qui ne compile même pas, qui provoque des bugs. On a un peu de tout.</p>
<p>Et <strong>il faut interagir avec ce code généré</strong>. On doit (un minimum) le comprendre, l’intégrer aux bons endroits dans une plus grande base de code existante. On devra le retoucher, le brancher avec d’autres composants. Il vit rarement tout seul dans son coin.</p>
<p>Même si on est un enthousiaste de l’IA, il ne faut pas se mettre des œillères et continuer à réfléchir. La qualité a son importance. Aujourd’hui.</p>
<p>Elle a son importance car on a encore besoin de lire le code, le comprendre, le manipuler. <strong>Une bonne qualité nous permet de faciliter le changement</strong>. On a besoin de faire évoluer et de maintenir notre base de code et nos fonctionnalités. Mais demain ?</p>
<p>S’il suffit d’écrire un prompt, ou modifier un fichier de « spécifications-prompt » pour effectuer un changement, et que l’IA est la seule à interagir avec le code, à quel point a-t-on besoin d’une grande qualité de code ?</p>
<p>D’un côté, <strong>le changement est facile</strong>, il suffit d’écrire des prompts. De l’autre côté, <strong>on ne met plus les mains dedans</strong>. De multiples fichiers et composants seront probablement régénérés à chaque fois par l’IA elle-même, qui n’aura pas les mêmes problématiques de compréhension de code que nous.</p>
<h1 id="un-langage-de-programmation-dencore-plus-haut-niveau-">Un langage de programmation d’encore plus haut niveau ?</h1>
<p>J’hypothèse qu’à un moment, la manière de communiquer avec les modèles d’IA deviendra notre nouveau langage de programmation. Quelque chose de <strong>très haut niveau</strong>, qui a de moins en moins d’aspect technique.</p>
<p>On peut l’observer si on regarde dans le passé. On a aujourd’hui de multiples langages de haut niveau, qui embarquent davantage de possibilités (faire des fonctions, des classes versus faire des sauts) et qui permettent de cacher / moins se soucier de certaines problématiques techniques (gérer des registres, avoir des pointeurs).</p>
<p>Code machine, assembleur, C, Java, Kotlin. Le <em>prompt</em> (peu importe sa forme et son nom) serait-il un prochain nouveau langage encore plus haut niveau ?</p>
<p>Il faudrait connaître sa syntaxe - facile, c’est du français, anglais, etc - et on y ajouterait quelques concepts techniques. Qui seront d’ailleurs probablement <strong>de plus en plus abstrait</strong>.</p>
<p>Peut-être qu’au début il faudra guider davantage, avoir les concepts et certains mots-clés assez précis « Enregistres tous les appels réseaux entrant, les erreurs HTTP, les temps de réponse. Branches sur Datadog. Je veux un Dashboard. » Puis un jour simplement « Ajoutes du monitoring, je veux un Dashboard ».</p>
<h1 id="le-futur-est-difficilement-prévisible">Le futur est difficilement prévisible</h1>
<p>Je vais finir sur ce que l’on ne peut pas finir, la suite. Le futur est difficilement prévisible. Je ne suis pas devin, et personne ne l’est. Ce ne sont ici que mes réflexions à voix haute.</p>
<p>Ça avance tellement vite que ça pourrait arriver demain. Les IA pourraient aussi être très différentes pour que toutes nos projections soient fausses. Ou il pourrait soudainement y avoir un énorme mur. Une grosse limitation technique très dure à franchir. Une énorme régulation mondiale. Ou une grande guerre, dans un monde avec encore moins de ressources et plus de problèmes.</p>
]]></description></item><item><title>Des guides plus que des dogmes</title><link>https://jordanchapuy.com/posts/2023/02/des-guides-plus-que-des-dogmes/</link><pubDate>Sat, 25 Feb 2023 16:44:00 +0100</pubDate><author>Auteur</author><guid>https://jordanchapuy.com/posts/2023/02/des-guides-plus-que-des-dogmes/</guid><description><![CDATA[<p>On est entouré de principes, de lois, de modèles, de méthodes et d&rsquo;un tas d&rsquo;autres concepts. C&rsquo;est utile pour construire des choses complexes comme des logiciels - on a besoin d&rsquo;être aidé. Pour autant, je conseille de garder un minimum de recul et de questionnement face à ces <em>grands écrits</em> - ce ne sont pas des vérités absolues en toutes circonstances. Notre cerveau est plus que jamais important.</p>
<p>J&rsquo;aime considérer les principes (&amp; co) comme des <strong>guides</strong>. Ils me donnent des indications sur ce que je fais pour prendre de la hauteur. Ça m&rsquo;aide à réfléchir et à <strong>me questionner</strong>. Suis-je dans une bonne direction ? Pourquoi ce principe semble m&rsquo;alerter ici ? Qu&rsquo;est-ce que ça va m&rsquo;apporter ? De quoi ai-je besoin ? En me posant des questions, je m&rsquo;assure de <strong>prendre en compte mon contexte</strong> et de m&rsquo;y adapter. Je cherche aussi à bien comprendre le principe, pour qu&rsquo;il me guide au mieux. Peut-être que ça ne fait pas sens de l&rsquo;appliquer ici.</p>
<p>Un exemple avec le principe <a href="https://en.wikipedia.org/wiki/Don%27t_repeat_yourself" target="_blank" rel="noopener noreffer">DRY</a> (Don&rsquo;t Repeat Yourself). Je viens d&rsquo;écrire du code qui ressemble à un autre morceau de code ailleurs dans le projet. Le voyant DRY s&rsquo;allume et me dit d&rsquo;éviter la duplication. En prenant du recul, je peux me demander si c&rsquo;est réellement de la duplication. Est-ce qu&rsquo;ils sont dans le même domaine métier ? Est-ce qu&rsquo;ils ont les mêmes raisons de changer ? À quel point est-ce identique ? Ou même, est-ce trop tôt ? Même si le principe peut m&rsquo;indiquer un comportement à adopter, je prends d&rsquo;abord soin de réfléchir et d&rsquo;analyser mon contexte.</p>
<p>À l&rsquo;opposé, une approche plus <strong>dogmatique</strong> des principes. On arrête de réfléchir, on ne se pose pas (trop) de questions. On <strong>applique bêtement</strong> ce que le principe nous dit. En même temps il n&rsquo;y a pas à réfléchir, si le principe le dit, c&rsquo;est forcément vrai. Alors on le fait. On commence même à avoir une <strong>vision binaire</strong> : je respecte ou je ne respecte pas. D&rsquo;ailleurs, si je ne respecte pas, c&rsquo;est évidemment mal.</p>
<p>En reprenant l&rsquo;exemple du principe DRY, j&rsquo;aurais sûrement supprimé la duplication tout de suite. Sans questionnement. Deux bouts de code qui se ressemblent ? Oula, vite ! Qu&rsquo;on me supprime cette duplication ! Pourtant, il s&rsquo;agissait de règles métiers de deux domaines différents. Peu de temps après, j&rsquo;aurais cassé le comportement d&rsquo;un des deux domaines en modifiant ce bout de code non dupliqué. Espérons qu&rsquo;un test unitaire soit passé au rouge et que ce ne soit pas les retours alarmants de la prod qui auront mis en avant le problème.</p>
<p>Continuons de réfléchir, de creuser les principes en profondeur et de prendre en compte notre contexte. N&rsquo;appliquons pas bêtement et évitons les vérités absolues.</p>
]]></description></item><item><title>Permis de développer</title><link>https://jordanchapuy.com/posts/2022/01/permis-de-developper/</link><pubDate>Thu, 06 Jan 2022 15:30:00 +0100</pubDate><author>Auteur</author><guid>https://jordanchapuy.com/posts/2022/01/permis-de-developper/</guid><description><![CDATA[<p>Un développeur a-t-il besoin d&rsquo;une permission pour écrire des tests ? Pratiquer le Test-Driven Development ? Faire du <a href="https://jordanchapuy.com/posts/2021/06/le-refactoring/" rel="">refactoring</a> ? Travailler en Pair Programming ? Faut-il un permis à l&rsquo;image de la légendaire <em>licence to kill</em> de James Bond ?</p>
<p>Ma réponse est <strong>NON</strong> (sans surprise, comme la plupart des articles qui commencent avec une grande question fermée). Un développeur doit être autonome et décider de lui-même pour ce genre de pratiques. Il n&rsquo;a pas à demander l&rsquo;autorisation à un manager, ni un chef, ni un PO, ni un SM, ni même à un tech lead ou un autre développeur.</p>
<p>Encore moins se voir interdire (anecdote récente lors d&rsquo;un entretien technique, un développeur m&rsquo;a indiqué que son client lui interdisait d&rsquo;écrire des tests parce que ça prenait du temps). Au contraire, il faut promouvoir et pousser ces pratiques aux développeurs et aux équipes.</p>
<h1 id="ça-fait-partie-du-job">Ça fait partie du job</h1>
<p>L&rsquo;écriture de tests, le TDD, le Refactoring, le Pair Programming, et j&rsquo;en passe, ce sont des pratiques répandues dans l&rsquo;industrie. Elles sont reconnues et proviennent de mouvements comme le Software Craftsmanship, l&rsquo;eXtreme programming, ou le Domain Driven Design. Ce n&rsquo;est pas le n-ième <em>nouveau super framework</em> à la mode.</p>
<p>On parle ici de pratiques qui améliorent la qualité du code et du produit, qui facilite le changement, qui permettent de mieux collaborer, de mieux retranscrire le métier. Elles font partie intégrante du métier de développeur.</p>
<p>Un développeur n&rsquo;est pas un exécutant. Il n&rsquo;est pas là juste pour pisser du code. Il a un (grand) rôle à jouer pour concevoir un produit de qualité. Il existe de nombreux ouvrages sur ces pratiques et également sur la posture de développeur. Pour en citer un, <em>Sandro Mancuso</em> en parle très bien dans son livre <em>The Software Craftsman</em>.</p>
<h1 id="just-do-it">Just do it</h1>
<p>Je donnerais comme conseil aux développeurs de faire, de passer à l&rsquo;action, d&rsquo;utiliser ces pratiques. Sans attendre une permission officielle, sans aller chercher une approbation quelconque. Faites-le, tout simplement.</p>
<p>Il y a un proverbe qui dit <code>Il vaut mieux demander pardon que demander la permission</code>. Je l&rsquo;aime bien, et je trouve qu&rsquo;il a du sens dans cette situation. Vous êtes développeur et vous hésitez ? Lancez-vous, essayez, montrez par l&rsquo;exemple. Probablement, quelque chose de bon en sortira et on ne viendra pas vous taper sur les doigts. Ce n&rsquo;est pas parfait ? Vous deviendrez meilleur en continuant d&rsquo;essayer et de vous améliorer.</p>
<p>Rappelons que le développeur a l&rsquo;expertise. Il sait comment travailler, il connaît sa boîte à outils. Mon propos n&rsquo;est pas d&rsquo;enfermer le développeur dans sa vision - il doit rester ouvert, comme tout le monde - mais de lui faire confiance et de lui donner de l&rsquo;autonomie.</p>
<p>Ce qui n&rsquo;empêche pas de le challenger. Et quand on touche à ses limites, à sa zone où il ne maîtrise pas, on se penchera plutôt sur comment former, comment apprendre, comment expérimenter, plutôt que d&rsquo;empêcher.</p>
<h1 id="former-les-équipes">Former les équipes</h1>
<p>Ça fait partie du job, d&rsquo;utiliser ces pratiques, ça fait également partie du job de se former. Elles ne tomberont pas soudainement du ciel. Avis aux développeurs qui doivent faire l&rsquo;effort autant qu&rsquo;aux managers qui doivent investir ;)</p>
<p>On se forme, on forme les équipes, on expérimente, on s&rsquo;améliore en continue. Le retour sur l&rsquo;investissement est positif, on ira plus vite, on délivrera mieux. On veut démarrer un cercle vertueux (on apprend, on améliore le code, on change plus facilement, on livre plus vite, on satisfait davantage l&rsquo;utilisateur) plutôt que vicieux (on empêche, on n&rsquo;apprend pas, le code se détériore, les évolutions deviennent difficiles, on cumule des problèmes, on met du temps à livrer à l&rsquo;utilisateur).</p>
<p>Il y a un tas de moyens pour apprendre. Quelques idées : inviter des personnes à faire un BBL, l&rsquo;intervention de coachs, faire des katas seul ou en groupe, du mob-programming sur le projet, assister à des conférences, lire des livres, etc.</p>
<h1 id="casser-les-idées-reçues">Casser les idées reçues</h1>
<p>Et s&rsquo;il y a du blocage, des interdictions, des permissions à demander pour utiliser ces pratiques ? J&rsquo;essaierais de comprendre pourquoi, de challenger, de rappeler que ça fait partie du job, et de casser certaines idées reçues.</p>
<p>En rappelant la vision, la philosophie de certaines pratiques. Le <a href="https://jordanchapuy.com/posts/2021/06/le-refactoring/" rel="">refactoring</a>, ce n&rsquo;est pas un chantier de 3 mois en tunnel. Ce sont des petites étapes, ce sont des améliorations que l&rsquo;on fait au quotidien, qui facilitent le changement, qui améliorent la qualité.</p>
<p><a href="https://jordanchapuy.com/posts/2021/12/ce-nest-pas-plus-long-de-pratiquer-le-tdd/" rel="">L&rsquo;écriture de tests et le TDD, ce n&rsquo;est pas plus long</a>. C&rsquo;est une aide pour le développeur, un guide pour bien retranscrire le métier, le comportement. On obtient en plus de la sérénité quand il faut effectuer des changements. On entre dans des situations où l&rsquo;on ira plus vite.</p>
<p>Le Pair-Programming, ce n&rsquo;est pas juste deux ressources humaines qui se mettent sur un poste pour travailler sur un seul problème à la fois. C&rsquo;est une collaboration poussée, c&rsquo;est un feedback rapide, c&rsquo;est une transmission de connaissances, d&rsquo;informations, c&rsquo;est de l&rsquo;amélioration en continue. Là aussi on entre dans des situations où l&rsquo;on ira plus vite.</p>
<p>On améliore la qualité, on gagne du temps, on gagne de l&rsquo;argent. Trois arguments que l&rsquo;on peut aligner en fonction de l&rsquo;interlocuteur. On pourrait citer en touche finale  <em>Accelerate</em>, un livre qui montre, via une étude sur plusieurs années incluant de très nombreuses entreprises, qu&rsquo;il y a une corrélation entre la performance technique et la performance business.</p>
]]></description></item></channel></rss>