<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Koen Vanderkimpen &#8211; Smals Research</title>
	<atom:link href="https://www.smalsresearch.be/author/vanderkimpen/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.smalsresearch.be</link>
	<description></description>
	<lastBuildDate>Tue, 21 Apr 2026 10:14:24 +0000</lastBuildDate>
	<language>en-GB</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://www.smalsresearch.be/wp-content/uploads/2026/01/cropped-cropped-Smals_Research-32x32.png</url>
	<title>Koen Vanderkimpen &#8211; Smals Research</title>
	<link>https://www.smalsresearch.be</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Legacy &#038; IA : Voyagez dans le Temps depuis votre Terminal</title>
		<link>https://www.smalsresearch.be/legacy-ai-voyagez-temps-terminal/</link>
		
		<dc:creator><![CDATA[Koen Vanderkimpen]]></dc:creator>
		<pubDate>Tue, 14 Apr 2026 09:48:59 +0000</pubDate>
				<category><![CDATA[[FR]]]></category>
		<category><![CDATA[Blog post]]></category>
		<category><![CDATA[Artificial intelligence]]></category>
		<category><![CDATA[legacy]]></category>
		<category><![CDATA[LLM]]></category>
		<category><![CDATA[Productivity]]></category>
		<category><![CDATA[software engineering]]></category>
		<guid isPermaLink="false">https://www.smalsresearch.be/?p=28963</guid>

					<description><![CDATA[Depuis l'essor de l'engouement pour les grands modèles de langage, la plupart des développeurs ont sans doute déjà pu constater le gain de productivité que ces outils peuvent offrir, à condition de les utiliser correctement. Dans cet article de blog, nous explorons la possibilité d'aller plus loin : l'IA offre-t-elle une aide suffisante afin de maîtriser le legacy code ?]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image alignleft size-large is-resized"><a href="https://www.smalsresearch.be/wp-content/uploads/2026/04/Gemini_Generated_Image_6jrj5n6jrj5n6jrj.png"><img fetchpriority="high" decoding="async" width="1024" height="1024" src="https://www.smalsresearch.be/wp-content/uploads/2026/04/Gemini_Generated_Image_6jrj5n6jrj5n6jrj-1024x1024.png" alt="" class="wp-image-27693" style="width:274px;height:auto"/></a></figure>



<p class="justify-text no-top-margin"><em>Dit artikel is ook beschikbaar in het <a href="https://www.smalsresearch.be/legacy-ai-tijdreizen-in-je-terminal/" data-type="post" data-id="27622">Nederlands</a>.</em></p>



<p class="justify-text" style="padding-top:0;padding-right:0;padding-bottom:0;padding-left:0">Depuis l&#8217;essor de l&#8217;engouement pour les grands modèles de langage, la plupart des développeurs ont sans doute déjà pu constater le gain de productivité que ces outils peuvent offrir, à condition de les utiliser correctement. Dans cet article de blogue, nous explorons la possibilité d&#8217;aller plus loin&nbsp;: l&#8217;IA offre-t-elle une aide suffisante afin de maîtriser le <em>legacy code</em>&nbsp;?</p>



<span id="more-28963"></span>



<p class="justify-text">Le recours aux grands modèles de langage <a href="https://www.smalsresearch.be/zin-onzin-en-nut-van-llms-zijn-ze-de-hype-waard/">(Large Language Model &#8211; LLM)</a> en programmation est en effet bien connu à présent&nbsp;: cela va de la formulation de questions à un <em>chatbot</em> (&#8220;comment écrire un algorithme en Java qui&#8230;&#8221;), à un <a href="https://www.smalsresearch.be/llms-pour-code/"><em>code completion</em> de plus en plus intelligent et étendu</a> (saisie automatique de ce que vous souhaitez taper dans l&#8217;éditeur), jusqu&#8217;au <a href="https://www.smalsresearch.be/vibe-coding-avec-les-ides-agentique/"><em>vibe coding</em> complet </a>(dans l&#8217;IDE, ou même simplement dans un terminal)&nbsp;: des agents d&#8217;IA rédigent, à l&#8217;aide de <em>prompts</em>, des pans entiers de code sur votre machine &#8211; oui, même des applications fonctionnelles.</p>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:30%">
<p class="justify-text">Cette méthode de travail a déjà été décrite <a href="https://www.smalsresearch.be/vibe-coding-avec-les-ides-agentique/">dans un article de blog précédent</a>, et les mises en garde et les points auxquels il faut prêter attention, restent d&#8217;actualité&nbsp;: surveiller en permanence, remettre les choses en question, vérifier, et fournir à l&#8217;IA la bonne quantité de contexte utile (un art en soi). Cependant, le traitement du <strong>code <em>legacy</em></strong> pose encore un certain nombre de problèmes supplémentaires&nbsp;:</p>



<ul class="wp-block-list">
<li class="justify-text">Il ne s&#8217;agit pas d&#8217;une nouvelle construction (ou <em>greenfield</em>)&nbsp;: les décisions du passé, souvent obscures, ont un impact considérable.</li>



<li class="justify-text">Dans de nombreux cas, il existe déjà une masse de code.</li>



<li class="justify-text">Souvent, la compilation, l’exécution et le test du code nécessitent une technologie spécifique, qui est elle-même obsolète et parfois difficile à installer ou à simuler.</li>



<li class="justify-text">En tant qu’humain, on n’est souvent plus au courant du comment et du pourquoi de la base de code existante, ce qui rend plus difficile l’évaluation critique des résultats de l’IA.</li>
</ul>
</div>



<div class="wp-block-column is-style-section-1 has-accent-5-background-color has-background is-layout-flow wp-container-core-column-is-layout-43dc041e wp-block-column-is-layout-flow is-style-section-1--1" style="border-width:2px;border-top-left-radius:0px;border-top-right-radius:0px;border-bottom-left-radius:0px;border-bottom-right-radius:0px;padding-top:0;padding-right:0;padding-bottom:0;padding-left:0;flex-basis:70%">
<h3 class="wp-block-heading is-style-default" style="margin-top:var(--wp--preset--spacing--20);margin-right:var(--wp--preset--spacing--20);margin-bottom:var(--wp--preset--spacing--20);margin-left:var(--wp--preset--spacing--20)"><span style="text-decoration: underline;"><em>Vibe coding</em>&nbsp;: quelques conseils</span></h3>



<p class="justify-text has-small-font-size" style="padding-top:var(--wp--preset--spacing--20);padding-right:var(--wp--preset--spacing--20);padding-bottom:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20)"><em>Nous avons déjà découvert ces astuces simples dans le cadre de notre travail sur le code </em>legacy<em> et l&#8217;IA, mais elles s&#8217;appliquent plus largement à tous les projets de </em>Vibe Coding<em>.</em></p>



<ul class="wp-block-list">
<li class="justify-text" style="padding-right:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20);font-size:clamp(14px, 0.875rem + ((1vw - 3.2px) * 0.196), 16px);">Nettoyage en profondeur&nbsp;: avant de laisser une IA se pencher sur une base de code, vous devez vous assurer qu&#8217;elle ne contient aucune donnée privée, aucun mot de passe ni aucune autre information sensible&nbsp;!</li>



<li class="justify-text" style="padding-right:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20);font-size:clamp(14px, 0.875rem + ((1vw - 3.2px) * 0.196), 16px);">Planification&nbsp;: demandez des options et reportez l&#8217;exécution. En effet, lorsqu&#8217;on maîtrise soi-même ce que l&#8217;on souhaite réaliser, on a certainement déjà une idée précise de l&#8217;objectif à atteindre. Il peut toutefois s&#8217;avérer utile de commencer une conversation avec l&#8217;IA en gardant l&#8217;esprit ouvert et de lui demander des idées et des options (par exemple en matière d&#8217;architecture ou de technologie utilisée) pour concrétiser sa vision générale (tout en précisant à l&#8217;IA, parfois trop zélée, qu&#8217;il ne s&#8217;agit encore que de planification). Demandez spécifiquement plusieurs suggestions&nbsp;! Cela peut aider à réfléchir ensemble et à enrichir vos propres idées avec davantage d’inspiration. Au fil de la conversation, explorez plus en profondeur les options qui vous plaisent le plus, puis n’ajoutez votre expertise personnelle que pour affiner les idées de l’IA, jusqu’à ce qu’un plan d’action concret et aussi optimal que possible ait vu le jour. Ce n’est qu’ensuite que nous passerons à une mise en œuvre effective..</li>



<li class="justify-text" style="padding-right:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20);font-size:clamp(14px, 0.875rem + ((1vw - 3.2px) * 0.196), 16px);">Indirection et outils. En particulier lorsque vous travaillez via une CLI (Command Line Interface), ni vous ni l’IA n’avez immédiatement conscience de tous les outils existants qui pourraient être exploités pour atteindre vos objectifs. Laissez l’IA rechercher les outils susceptibles de vous aider, et aidez-la à les installer. Plus vous pouvez accomplir de tâches à l&#8217;aide d&#8217;outils, moins le contexte est encombré par un travail &#8220;manuel&#8221; inutile effectué par l&#8217;IA elle-même (sans parler des économies réalisées en termes de consommation de <em>tokens</em>). Il existe par exemple toutes sortes d&#8217;outils d&#8217;analyse statique de code permettant d&#8217;évaluer et de maintenir la qualité des lignes de code que vous écrivez. L&#8217;IA n&#8217;a souvent aucun mal à mettre en œuvre bon nombre des suggestions fournies après l&#8217;analyse.</li>



<li class="justify-text" style="padding-right:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20);font-size:clamp(14px, 0.875rem + ((1vw - 3.2px) * 0.196), 16px);">Mode Expert&nbsp;: parfois, les outils standard ne suffisent pas pour aider suffisamment l&#8217;IA à accomplir ce que vous souhaitez qu&#8217;elle fasse. Dans ce cas, vous pouvez d&#8217;abord laisser l&#8217;IA écrire ses propres outils. De cette manière, il est possible de s&#8217;assurer que le résultat, ou l&#8217;<em>output</em> de l&#8217;outil, soit concis et synthétique pour les tâches suivantes, afin de ne pas surcharger le contexte. Les <em>context windows</em> des LLM s&#8217;agrandissent certes de plus en plus, mais il faut tout de même veiller à ce qu&#8217;elles ne contiennent que les éléments les plus utiles (attention au <a href="https://redis.io/blog/context-rot/"><em>context rot</em></a>).</li>
</ul>
</div>
</div>



<p>Nous avons donné une définition très large du code <em>legacy</em> dans un <a href="https://www.smalsresearch.be/code-herite-meilleures-pratiques-ia/">précédent article de blog</a>. Commençons donc par préciser ce que nous entendons par &#8220;<em>legacy</em>&#8221; et par mieux illustrer le &#8220;degré de difficulté&#8221; des projets legacy.</p>



<h2 class="wp-block-heading">&#8220;Ancien&#8221; code&nbsp;: une multitude de possibilités</h2>



<p class="justify-text">Il n’existe pas vraiment de définition officielle du code <em>legacy</em>&nbsp;; généralement, on parle de l’utilisation d’une technologie qui n’est plus prise en charge, difficile à maintenir, ou simplement de &#8220;code dont on hérite de quelqu’un d’autre&#8221;. Il s’agit évidemment toujours de code encore en service, et donc important. Ironiquement, les applications les plus critiques sont souvent celles qui existent depuis des années et auxquelles on &#8220;fait confiance&#8221; depuis longtemps, mais sans les entretenir correctement.</p>



<p class="justify-text">L&#8217;IA peut nous aider à entretenir n&#8217;importe quel code ; nous allons donc présenter un spectre allant du code <em>legacy</em> le plus ancien et le plus problématique au code de projets ne nécessitant qu&#8217;une petite mise à jour. À une extrémité du spectre, on trouve des programmes écrits dans des langages de programmation obsolètes, selon une architecture dépassée, utilisant des bases de données qui ne sont plus d’actualité et fonctionnant sur des serveurs équipés de systèmes d’exploitation qui ne sont plus pris en charge&nbsp;: avec ces géants, on doit souvent craindre une défaillance critique à la moindre modification erronée. À l’autre extrémité, on trouve des logiciels assez bien entretenus, mais qui utilisent une bibliothèque logicielle qui n’est plus la version la plus récente&nbsp;: il est généralement très facile de les remettre entièrement à jour. Enfin, quelque part entre les deux, on trouve des applications pour lesquelles la plupart des développeurs n’utiliseraient pas encore le terme <em>legacy</em>, mais qui nécessitent néanmoins des migrations complexes, avec par exemple un ou deux <em>frameworks</em> obsolètes à remplacer.</p>



<figure class="wp-block-image size-large is-resized"><a href="https://www.smalsresearch.be/wp-content/uploads/2026/04/Gemini_Generated_Image_307h9q307h9q307h-scaled.png"><img decoding="async" width="1024" height="506" src="https://www.smalsresearch.be/wp-content/uploads/2026/04/Gemini_Generated_Image_307h9q307h9q307h-1024x506.png" alt="" class="wp-image-27634" style="width:1301px;height:auto"/></a></figure>



<p class="justify-text">Que pouvons-nous en faire&nbsp;? Les LLM offrent-ils d&#8217;autres possibilités en fonction de la position du projet sur ce spectre&nbsp;? Jusqu&#8217;à présent, nos recherches se sont concentrées sur la partie gauche de ce spectre&nbsp;; la suite de cet article portera donc davantage sur les possibilités d&#8217;aborder le &#8220;véritable&#8221; legacy. Plus tard dans l&#8217;année, nous approfondirons également ce que nous pouvons faire en matière de migrations et d&#8217;updates.</p>



<h1 class="wp-block-heading">Utilisation des LLM sur des bases de code <em>legacy</em></h1>



<p class="justify-text">Il est clair qu&#8217;un simple prompt &#8220;réécris ce programme selon les normes modernes&#8221; ne fonctionnera pas (même si certains fournisseurs affirment que cela sera bientôt possible). Nous devrons poser des questions un peu plus concrètes et décomposer le travail en plusieurs étapes. Il y a en fait deux choses que nous pouvons faire avec notre code <em>legacy&nbsp;</em>: le réécrire et le documenter.</p>



<h2 class="wp-block-heading">Réécriture du code <em>legacy</em></h2>



<p class="justify-text">Lorsque nous commençons à réécrire du code, nous devons souvent tenir compte du fait que la reconstruction complète d’un très grand projet est une tâche trop difficile. Il est possible d’obtenir des &#8220;quick wins&#8221; en réécrivant stratégiquement certaines parties d’un projet, qui seront ensuite réutilisées dans un contexte plus large, où une équipe humaine et l’IA reconstruiront l’application dans les règles de l’art. Nos expériences nous ont montré qu’il était trop ambitieux d’attendre de l’IA qu’elle utilise une architecture entièrement nouvelle tout en traduisant l’ancien code vers le nouveau. En revanche, il est possible de &#8220;vibe coder&#8221; une grande partie de la charpente typique d’un nouveau projet, puis d’y injecter de manière ciblée un certain nombre de morceaux de code qui sont des traductions de parties d’un projet <em>legacy</em>. En tant qu’êtres humains, notre tâche consiste à indiquer clairement quelle architecture nous attendons et quelles sont les règles de qualité du code nouveau.</p>



<p class="justify-text">L&#8217;un des principaux défis liés à la réécriture de code à l&#8217;aide de l&#8217;IA consiste à tester l&#8217;exactitude de la traduction&nbsp;: le code fait-il toujours ce qu&#8217;il faisait auparavant (indépendamment du fait que cela soit souhaitable, car même le <em>business case</em> peut parfois être trop obsolète dans le cas d&#8217;un projet <em>legacy</em>)&nbsp;? Pour les projets relativement récents, il existe déjà de nombreux tests que nous pouvons effectuer pour vérifier l&#8217;exactitude, mais avec les anciens systèmes <em>legacy</em>, nous sommes souvent confrontés au problème que l&#8217;application est simplement testée en production, ou du moins avec des données de production&nbsp;: il n&#8217;y a pas de tests spécifiques ni même de données de test pouvant être utilisées en toute sécurité. Dans ce cas, il s&#8217;agit de créer un environnement dans lequel nous pouvons tester le nouveau code en toute sécurité, ce qui est généralement un travail ad hoc et demande une certaine créativité. Nous ne pouvons pas envoyer de données de production vers le <em>cloud</em>, nous devons donc nous assurer que le LLM ne puisse pas les lire. Ce serait plus simple si nous pouvions utiliser des LLM fonctionnant en local, mais pour l&#8217;instant, ceux-ci ne sont pas encore assez puissants (quand ils sont disponibles) pour effectuer des tâches aussi complexes avec du code <em>legacy</em>.</p>



<p class="justify-text">L&#8217;interface utilisateur constitue un autre défi&nbsp;: dans les projets plus anciens, celle-ci est souvent obsolète et il faut construire une nouvelle GUI à partir de zéro. Cela pose toutefois le problème de ne plus disposer d&#8217;une base de référence dans l&#8217;ancien projet&nbsp;: la nouvelle interface devra généralement être testée manuellement par des personnes. J&#8217;espère toutefois que nous verrons des progrès dans ce domaine dans un avenir proche, en ce qui concerne les possibilités de l&#8217;IA. En effet, nous voyons déjà apparaître des systèmes capables de contrôler l&#8217;intégralité de votre ordinateur (comme OpenClawd), et l&#8217;intégration avec des frameworks plus traditionnels pour le test d&#8217;une interface graphique fait également partie des possibilités.</p>



<p class="justify-text">Enfin, les petits projets <em>legacy</em> constituent également un domaine où nous pouvons obtenir des résultats rapides. Si nous utilisons un programme <em>legacy </em>petit à moyen, doté de fonctionnalités limitées et d’une GUI simple, ou présentant un <em>input </em>et un <em>output </em>clairs en cas de traitement par lots, et qu’il n’existe aucun <em>business case</em> justifiant son intégration dans une autre méthode de travail, nous pouvons alors tenter une approche directe pour construire une version moderne dans un nouveau langage de programmation à l’aide de l’IA. Dans ce cas, il faudra tout de même bien tester et adopter une approche structurée avec un accompagnement des développeurs humains, mais il est possible d&#8217;essayer cette méthode pour des applications non critiques. Une application à usage interne, par exemple, constitue généralement un bon premier candidat.</p>



<h2 class="wp-block-heading">Documentation du code <em>legacy</em></h2>



<p class="justify-text">Parfois, la réécriture du code <em>legacy </em>avec l&#8217;IA est un peu trop ambitieuse, ou nous avons besoin de plus d&#8217;informations avant de nous y risquer. Il peut être intéressant de se tourner d’abord vers la documentation&nbsp;: l’IA peut également nous aider à faire en sorte que l’exploration d’une base de code <em>legacy </em>ressemble un peu moins à de l’archéologie de haut niveau.</p>



<p class="justify-text">Expliquer un morceau de code de petite à moyenne taille et en extraire la logique business, ou analyser un morceau plus important et en expliquer la structure et l’architecture, tout cela est tout à fait possible avec les grands modèles de langage actuels. Il est toutefois possible d’aller plus loin&nbsp;: il est possible de créer des outils d’IA pour l&#8217;aider à explorer la base de code et, par exemple, à générer des diagrammes illustrant les dépendances entre les segments de code. Ou bien on peut lui faire écrire des scripts afin de structurer soigneusement ses conclusions après chaque analyse dans un fichier texte pour elle-même et un PDF destiné à l’utilisateur humain.</p>



<p class="justify-text">Il est également possible d&#8217;adopter une approche hiérarchique&nbsp;: commencer par explorer la base de code, puis approfondir progressivement l&#8217;analyse des différents modules afin d&#8217;obtenir de plus en plus de détails et de compléter l&#8217;analyse. Il s&#8217;agit là de l&#8217;approche descendante, que nous pouvons toutefois compléter par une version ascendante&nbsp;: une fois que nous sommes allés en profondeur, nous pouvons à nouveau demander un résumé afin de construire une présentation mieux documentée de la situation dans son ensemble.</p>



<p class="justify-text">Il est toutefois important ici de savoir à l&#8217;avance ce que nous souhaitons exactement atteindre. Une analyse générale d’une base de code par l’IA peut s’avérer intéressante lorsque les utilisateurs humains ne connaissent pas du tout le système et souhaitent disposer de points de repère pour se familiariser avec celui-ci.</p>



<p class="justify-text">Cependant, lorsque l&#8217;objectif est de pouvoir assurer la maintenance de la base de code, il est préférable de mettre en place un système proposant un <em>chatbot</em> qui connaît le contexte spécifique et les particularités du projet <em>legacy</em>, et qui peut répondre à des questions très ciblées à ce sujet. Cela est possible, par exemple, dans CoPilot Studio. Si cela ne fonctionne pas correctement, il est possible d&#8217;envisager de construire manuellement une base de connaissances en utilisant l&#8217;IA qui pourra ensuite être utilisée par l&#8217;IA pour répondre aux questions.</p>



<p class="justify-text">Une autre option consiste à extraire des informations spécifiques de la base de code, telles que la logique business par module individuel, ou du pseudocode pouvant aider les développeurs humains à réimplémenter cette logique dans un autre projet. (Et bien sûr, une IA peut également être mise à contribution lors de cette deuxième étape).</p>



<p class="justify-text">Avec une touche de créativité, nous pouvons concevoir une meilleure approche pour la plupart des analyses ad hoc que celle consistant à &#8220;se contenter d’analyser à tout va&#8221;. Et la documentation d’un système <em>legacy </em>peut tout simplement constituer une première étape vers sa réécriture.</p>



<h1 class="wp-block-heading" style="margin-top:var(--wp--preset--spacing--20);margin-bottom:var(--wp--preset--spacing--20)">Conclusion&nbsp;: professionnels recherchés</h1>



<figure class="wp-block-image alignright size-large is-resized is-style-default" style="margin-top:var(--wp--preset--spacing--20);margin-bottom:var(--wp--preset--spacing--20)"><a href="https://www.smalsresearch.be/wp-content/uploads/2026/04/Gemini_Generated_Image_98eus398eus398eu-scaled.png"><img decoding="async" width="1024" height="559" src="https://www.smalsresearch.be/wp-content/uploads/2026/04/Gemini_Generated_Image_98eus398eus398eu-1024x559.png" alt="" class="wp-image-27699" style="aspect-ratio:1.8333516399024625;object-fit:contain;width:546px;height:auto"/></a></figure>



<p class="justify-text no-top-margin">Comme mentionné précédemment, les LLM nous offrent progressivement des possibilités très puissantes pour traiter nos bases de code <em>legacy</em>, surtout lorsque nous avons accès aux modèles volumineux et puissants disponibles aujourd’hui. Nous constatons toutefois qu’il s’agit en réalité d’une boîte à outils très bien fournie, comprenant plusieurs outils puissants, et que nous devons savoir ce que nous voulons en faire et comment les utiliser au mieux.</p>



<p class="justify-text">Tout n’est pas encore entièrement automatisé&nbsp;: nous aurons donc toujours besoin de bons professionnels pour tirer le meilleur parti de ces outils. Notre conseil aux développeurs est de ne surtout pas avoir peur de l’IA et de l’utiliser régulièrement lors de l’analyse et du développement de logiciels&nbsp;: l’expérience est la meilleure école pour former les bons professionnels dont nous avons besoin dans ce domaine.</p>



<p class="justify-text">Pour l’instant, la conclusion est donc la suivante&nbsp;: pour le code <em>legacy</em>, l’IA n’est pas une panacée, mais une boîte à outils pratique qu’il vaut mieux essayer dans le cadre d’une approche plus large. Comme indiqué, nous nous pencherons plus tard dans l&#8217;année sur le milieu et la partie droite du spectre du code <em>legacy</em>. Nous pensons qu&#8217;il existe ici davantage de possibilités d&#8217;automatisation de certains workflows, surtout si nous exploitons davantage les agents. Il est donc possible que, pour des projets un peu plus simples et répétitifs, nous puissions évoluer du &#8220;professionnel&#8221; vers &#8220;l&#8217;usine&#8221;.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Legacy &#038; AI: Tijdreizen in je Terminal</title>
		<link>https://www.smalsresearch.be/legacy-ai-tijdreizen-in-je-terminal/</link>
		
		<dc:creator><![CDATA[Koen Vanderkimpen]]></dc:creator>
		<pubDate>Thu, 09 Apr 2026 07:56:17 +0000</pubDate>
				<category><![CDATA[[NL]]]></category>
		<category><![CDATA[Blog post]]></category>
		<category><![CDATA[Artificial intelligence]]></category>
		<category><![CDATA[legacy]]></category>
		<category><![CDATA[LLM]]></category>
		<category><![CDATA[Productivity]]></category>
		<category><![CDATA[software engineering]]></category>
		<guid isPermaLink="false">https://www.smalsresearch.be/?p=27622</guid>

					<description><![CDATA[Sinds de hype van grote taalmodellen is losgebarsten, zullen de meeste ontwikkelaars ondertussen al wel geproefd hebben van de productiviteitswinst die deze tools, mits correct gebruik, kunnen bieden. In deze blog onderzoeken we of we verder kunnen gaan dan dat: biedt het AI ook voldoende hulp bij het beheersen van Legacy Code?]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image alignleft size-large is-resized"><a href="https://www.smalsresearch.be/wp-content/uploads/2026/04/Gemini_Generated_Image_6jrj5n6jrj5n6jrj.png"><img loading="lazy" decoding="async" width="1024" height="1024" src="https://www.smalsresearch.be/wp-content/uploads/2026/04/Gemini_Generated_Image_6jrj5n6jrj5n6jrj-1024x1024.png" alt="" class="wp-image-27693" style="width:274px;height:auto"/></a></figure>



<p class="no-top-margin justify-text"><em>Cet article est aussi disponible en <a href="https://www.smalsresearch.be/legacy-ai-voyagez-temps-terminal/" data-type="post" data-id="28963">français</a>.</em></p>



<p class="justify-text" style="padding-top:0;padding-right:0;padding-bottom:0;padding-left:0">Sinds de hype van grote taalmodellen is losgebarsten, zullen de meeste ontwikkelaars ondertussen al wel geproefd hebben van de productiviteitswinst die deze tools, mits correct gebruik, kunnen bieden. In deze blog onderzoeken we of we verder kunnen gaan dan dat: biedt AI ook voldoende hulp bij het beheersen van Legacy Code?</p>



<span id="more-27622"></span>



<p class="justify-text">Het inzetten van <a href="https://www.smalsresearch.be/zin-onzin-en-nut-van-llms-zijn-ze-de-hype-waard/" data-type="post" data-id="24386">Large Language Models (LLM)</a> bij het programmeren is inderdaad ondertussen stilaan goed gekend: het gaat van vragen stellen aan een chatbot (&#8220;hoe schrijf ik in Java een algoritme dat &#8230; &#8220;), overheen steeds <a href="https://www.smalsresearch.be/llms-voor-code/" data-type="post" data-id="18875">slimmere en langer wordende <em>code completion</em></a> (automatisch aanvullen wat je wil typen in de editor), tot <a href="https://www.smalsresearch.be/vibe-coding-met-agentic-ides/" data-type="post" data-id="22499">volledige <em>vibe coding</em></a> (in de IDE, of zelfs gewoon in een terminal): AI agenten, via prompts, hele stukken code &#8211; ja, zelfs werkende toepassingen &#8211; laten schrijven op je machine.</p>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:30%">
<p class="justify-text">Deze manier van werken beschreven we reeds <a href="https://www.smalsresearch.be/vibe-coding-met-agentic-ides/" data-type="post" data-id="22499">in een vorige blogpost</a>, en de caveats, zaken waarop men moet letten, gelden nog steeds: blijf continu opvolgen, stel zaken in vraag, controleer, en geef de juiste hoeveelheid nuttige context mee aan het AI (een kunst op zich). Voor het behandelen van <strong><em>legacy code</em></strong>, stellen er zich echter nog een aantal verdere problemen:</p>



<ul class="wp-block-list">
<li class="justify-text">Het is geen nieuwbouw (of <em>greenfield</em>): er is erg veel impact van &#8211; vaak obscure &#8211; beslissingen uit het verleden.</li>



<li class="justify-text">In veel gevallen is er reeds een massa code aanwezig.</li>



<li class="justify-text">Vaak vraagt het com- pileren, uitvoeren en testen van de code specifieke technologie, die zelf verouderd is en soms moeilijk te in-stalleren of simuleren.</li>



<li class="justify-text">Je bent als mens vaak niet meer onderwezen in het hoe en waarom van de bestaande codebase, waardoor het moeilijker wordt de resultaten van het AI kritisch te be-oordelen.</li>
</ul>
</div>



<div class="wp-block-column is-style-section-1 has-accent-5-background-color has-background is-layout-flow wp-container-core-column-is-layout-43dc041e wp-block-column-is-layout-flow is-style-section-1--2" style="border-width:2px;border-top-left-radius:0px;border-top-right-radius:0px;border-bottom-left-radius:0px;border-bottom-right-radius:0px;padding-top:0;padding-right:0;padding-bottom:0;padding-left:0;flex-basis:70%">
<h3 class="wp-block-heading is-style-default" style="margin-top:var(--wp--preset--spacing--20);margin-right:var(--wp--preset--spacing--20);margin-bottom:var(--wp--preset--spacing--20);margin-left:var(--wp--preset--spacing--20)"><span style="text-decoration: underline;">Vibe Coding: Een aantal Tips</span></h3>



<p class="justify-text has-small-font-size" style="padding-top:var(--wp--preset--spacing--20);padding-right:var(--wp--preset--spacing--20);padding-bottom:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20)"><em>Deze eenvoudige truukjes ondervonden we reeds bij ons werk rond Legacy Code &amp; AI, maar zijn breder toepasbaar naar alle Vibe Coding projecten.</em></p>



<ul class="wp-block-list">
<li class="justify-text" style="padding-right:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20);font-size:clamp(14px, 0.875rem + ((1vw - 3.2px) * 0.196), 16px);">Grote Schoonmaak: vóór je een AI loslaat op een codebase, moet je ervoor zorgen dat er geen privégegevens, paswoorden, of andere gevoelige informatie in te vinden zijn!</li>



<li class="justify-text" style="padding-right:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20);font-size:clamp(14px, 0.875rem + ((1vw - 3.2px) * 0.196), 16px);">Planning: vraag om opties en stel executie uit. Als je zelf bedreven bent in wat je wil doen, heb je vast en zeker al een idee van waar je precies naartoe wilt. Het kan echter soms lonen om je gesprek met het AI heel open van geest te beginnen en te vragen naar ideeën en opties (b.v. qua architectuur of gebruikte technologie) om je algemene visie te bewaarlijken (waarbij je het soms overijverige AI ook duidelijk maakt dat er alleen nog maar wordt gepland). Vraag specifiek naar meerdere suggesties! Dit kan helpen bij het brainstormen, en om je eigen ideeën aan te vullen met meer inspiratie. In het vervolg van het geprek ga je dan dieper in op de opties die je het meeste aanstaan, en dan pas vul je aan met je eigen expertise om de ideeën van het AI bij te sturen, tot er een concreet plan van actie is ontstaan dat zo optimaal mogelijk is. Pas daarna gaan we over tot effectieve implementatie.</li>



<li class="justify-text" style="padding-right:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20);font-size:clamp(14px, 0.875rem + ((1vw - 3.2px) * 0.196), 16px);">Indirectie en Tools. Zeker als je via een CLI (Command Line Interface) werkt, zijn zowel jij als het AI zich niet meteen bewust van alle mogelijke reeds bestaande tools die zouden kunnen worden geëxploiteerd om je doelen te bereiken. Laat het AI zoeken naar tools die zouden kunnen helpen, en helpen bij de installatie ervan. Hoe meer zaken je via tools kan doen, hoe minder de context wordt vervuild met nodeloos &#8220;manueel&#8221; werk door het AI zelf (om nog maar te zwijgen van de besparing qua token gebruik). Zo bestaan er b.v. allerlei <a href="https://en.wikipedia.org/wiki/Static_program_analysis">static code analysis tools</a> die je kan gebruiken om de kwaliteit van je geschreven code te evalueren en hoog te houden. Het is vaak een koud kunstje voor het AI om heel wat van de gegeven suggesties na de analyse uit te voeren.</li>



<li class="justify-text" style="padding-right:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20);font-size:clamp(14px, 0.875rem + ((1vw - 3.2px) * 0.196), 16px);">Expert Mode: soms volstaan standaard tools niet om het AI voldoende te helpen bij wat je wil dat het doet. In dat geval kan je het AI eerst diens eigen tools laten schrijven. Daarbij kan je er voor zorgen dat het resultaat, of de output van de tool, iets is wat kort en samenvattend is voor de verdere taken, om de context niet teveel te belasten. Context windows van LLMs worden weliswaar steeds groter, maar dan nog moet je ervoor zorgen dat enkel de nuttigste zaken erin zitten (pas op voor <a href="https://redis.io/blog/context-rot/">context rot</a>).</li>
</ul>
</div>
</div>



<p>In een vorige <a href="https://www.smalsresearch.be/legacy-code-trotseren-best-practices-ai/" data-type="post" data-id="21131">post rond legacy code</a>, gaven we een erg brede definitie. Laten we dus vooreerst iets duidelijker stellen wat we met Legacy bedoelen, en de &#8220;moeilijkheidsgraad&#8221; van Legacy projecten beter illustreren.</p>



<h2 class="wp-block-heading">&#8220;Oude&#8221; code: een spectrum aan mogelijkheden</h2>



<p class="justify-text">Er is niet echt een officiële definitie van legacy code; meestal spreekt men van het gebruik van niet langer ondersteunde technologie, moeilijk te onderhouden, of simpelweg &#8220;code die je van iemand anders erft&#8221;. Het gaat uiteraard altijd wel om code die nog in gebruik, en dus belangrijk is. Ironisch genoeg, zijn het vaak de meest kritische toepassingen, die al jaren meegaan en waar men al jaren &#8220;op vertrouwt&#8221;, maar dan zonder ze goed te onderhouden.</p>



<p class="justify-text">AI kan ons helpen bij het onderhoud van eender welke code, dus we zullen een spectrum demonstreren dat van de oudste, ergste legacy code gaat, tot code van projecten die slechts een kleine update nodig heeft. Aan de ene kant van het spectrum heb je programma&#8217;s, geschreven in ouderwetse programmeertalen, volgens een achterhaalde architectuur, gebruik makend van databases die niet meer van deze tijd zijn, en draaiende op servers met niet langer ondersteunde besturingssystemen: bij deze mastodonten moet men vaak bang zijn dat ze kritisch zullen falen bij de kleinste verkeerde wijziging. Helemaal aan de andere kant heb je vrij goed onderhouden software, waarin een softwarebibliotheek wordt gebruikt die niet meer de meest recente versie is: meestal een koud kunstje om ze weer helemaal up-to-date te krijgen. Ergens in het midden vind je, ten slotte, toepassingen terug waarbij de meeste developers nog niet meteen het woord Legacy in de mond zullen nemen, maar waar wel moeilijke migraties dienen te gebeuren, met b.v. een verouderd framework of twee dat zou moeten worden vervangen.</p>



<figure class="wp-block-image size-large is-resized"><a href="https://www.smalsresearch.be/wp-content/uploads/2026/04/Gemini_Generated_Image_307h9q307h9q307h-scaled.png"><img loading="lazy" decoding="async" width="1024" height="506" src="https://www.smalsresearch.be/wp-content/uploads/2026/04/Gemini_Generated_Image_307h9q307h9q307h-1024x506.png" alt="" class="wp-image-27634" style="width:1301px;height:auto"/></a></figure>



<p class="justify-text">Wat kunnen we hier nu mee? Bieden LLMs ons andere mogelijkheden naargelang de plaats van het project op dit spectrum? Ons onderzoek heeft zich tot nu toe op de linkerkant van dit spectrum gefocust, dus het vervolg van deze blogpost zal veeleer over de mogelijkheden gaan om &#8220;échte&#8221; Legacy aan te pakken. Later dit jaar gaan we ook verder uitdiepen wat we met migraties en updates kunnen doen.</p>



<h2 class="wp-block-heading">Gebruik van LLMs op Legacy Codebases</h2>



<p class="justify-text">Het is duidelijk dat de eenvoudige prompt &#8220;herschrijf mij dit programma volgens moderne standaarden&#8221; niet zal werken (al beweren sommige vendors dat dit eraan zit te komen). We zullen iets concretere zaken gaan vragen, en het werk ook enigszins in stukjes moeten kappen. Verder zijn er eigenlijk twee zaken die we kunnen gaan doen met onze legacy code: ze herschrijven en ze documenteren.</p>



<h3 class="wp-block-heading">Herschrijven van Legacy Code</h3>



<p class="justify-text">Als we beginnen met code herschrijven, zullen we er vaak rekening mee moeten houden dat een heel groot project voldoende goed herbouwen een te moeilijke opgave is. We kunnen &#8220;quick wins&#8221; behalen door strategisch een aantal zaken te gaan herschrijven van een project, en die stukken dan te gebruiken in een ruimere context, waarbij een team van mensen en AI de toepassing opnieuw bouwen volgens de regels van de kunst. Bij onze experimenten stelden we vast dat het een brug te ver was om van het AI te verwachten een volledig nieuwe architectuur te gebruiken, tegelijk met het vertalen van oude code naar nieuwe. Wat wel mogelijk is, is om heel wat van de typische scaffolding (de standaardcode om tot iets werkend te komen) van een nieuw project te vibe coden, en daar dan gericht een aantal stukken code in te injecteren die vertalingen zijn van stukjes van een legacy project. Als mens is het onze taak om duidelijk aan te geven welke architectuur we verwachten, en wat de kwaliteitsregels zijn van de nieuw geschreven code.</p>



<p class="justify-text">Eén van de grotere uitdagingen bij het herschrijven van code met behulp van AI, is het testen van de correctheid van de vertaling: doet de code nog wat ze vroeger deed (los van het feit of dit wenselijk is, want zelfs de business case kan soms te verouderd zijn in geval van Legacy)? Bij redelijk nieuwe projecten zullen er reeds heel wat testen bestaan die we kunnen uitvoeren om de correctheid na te gaan, maar bij legacy hebben we vaak het probleem dat de toepassing eenvoudigweg wordt getest in productie, of op zijn minst met productiedata: er zijn geen specifieke tests of zelfs maar veilig bruikbare testdata. In dat geval komt het erop neer een omgeving te creëren waarin we de nieuwe code op een veilige manier kunnen testen, wat meestal ad hoc werk is en enige creativiteit vraagt. We mogen namelijk geen productiedata naar de Cloud sturen, dus we moeten ervoor zorgen dat het LLM deze niet kan lezen. Het zou eenvoudiger zijn als we lokaal draaiende LLMs zouden kunnen gebruiken, maar voorlopig zijn deze nog niet krachtig genoeg (als ze al beschikbaar zijn) om dergelijke complexe taken uit te voeren met legacy code.</p>



<p class="justify-text">Een andere uitdaging is de gebruikersinterface: bij oudere projecten is deze vaak achterhaald en moet er, vanaf de grond, een nieuwe GUI (Graphical User Interface) worden opgebouwd. Dat geeft echter het probleem dat je geen basis meer hebt in het oude project om mee te vergelijken: de nieuwe interface zal doorgaans manueel door mensen moeten worden getest. Ik verwacht echter dat we op dit vlak nog vorderingen zullen zien in de nabije toekomst, wat de mogelijkheden van het AI betreft. We zien namelijk al systemen opduiken die je volledige computer kunnen besturen (zoals <a href="https://openclawd.ai/">OpenClaw</a> of het <a href="https://www.anthropic.com/news/3-5-models-and-computer-use">&#8220;Computer Use&#8221; van Anthropic</a>), en ook integratie met meer traditionele raamwerken voor het testen van een GUI behoort tot de mogelijkheden.</p>



<p class="justify-text">Waar we, ten slotte, ook quick wins mee kunnen halen, zijn kleinere Legacy projecten. Als we een klein tot matig groot legacy programma gebruiken, met beperkte functionaliteit en een eenvoudige GUI of een duidelijke input en output in geval van batch processing, en geen business case om deze te integreren in een andere manier van werken, dan kunnen we een rechttoe rechtaan aanpak proberen om een moderne versie in een nieuwe programmeertaal te bouwen met AI. We moeten dan nog altijd goed testen en een gestructureerde aanpak hebben met bijsturingen door menselijke developers, maar het wordt wel feasible om dit voor niet-kritische toepassingen te gaan uitproberen. Een intern gebruikte toepassing is bijvoorbeeld een typische goede eerste kandidaat.</p>



<h3 class="wp-block-heading">Documenteren van Legacy Code</h3>



<p class="justify-text">Soms is herschrijven van Legacy met AI net iets te ambitieus, óf we hebben meer informatie nodig voor we er ons aan wagen. In dat geval kan het interessant zijn om eerst richting documentatie te kijken: het AI kan ons ook helpen om het verkennen van een legacy codebase net iets minder op archeologie voor gevorderden te doen lijken.</p>



<p class="justify-text">Van een klein tot matig stuk code uitleggen en er de business logica uithalen, of een groter stuk analyseren en de opbouw en architectuur uitleggen: dat kan met de huidige grote taalmodellen zonder meer. We kunnen echter verder gaan: we kunnen het AI tools laten bouwen om zichzelf te helpen de codebase te verkennen, en b.v. diagrammen te voorzien van de afhankelijkheden tussen de stukken code. Of we kunnen het scripts laten maken om de bevindingen na elk stuk analyse netjes te structureren in een tekstbestand voor zichzelf en een pdf voor de menselijke gebruiker.</p>



<p class="justify-text">We kunnen ook hiërarchisch werken: eerst een verkenning van de codebase doen, en dan telkens dieper duiken in de verschillende modules, om meer en meer detail te verkrijgen en de analyse aan te vullen. Dat is de top-down aanpak, die we echter kunnen aanvullen met een bottom-up versie: eens we tot in de diepte zijn gegaan, kunnen we weer zaken laten samenvatten om van het grotere plaatje een beter geïnformeerde uiteenzetting op te bouwen.</p>



<p class="justify-text">Hier is het wel van belang dat we van tevoren weten wat we precies willen bereiken. Een algemene analyse van een codebase door het AI kan interessant zijn wanneer de menselijke gebruikers het systeem nog totaal niet kennen en aanknopingspunten willen hebben om zaken te leren, maar biedt meestal weinig extra aan mensen die de codebase reeds beheersen.</p>



<p class="justify-text">Maar wanneer het doel is om de codebase te kunnen onderhouden, kunnen we eventueel een systeem opbouwen waarbij we een chatbot aanbieden die de specifieke context en bijzonderheden van het legacy project kent, en daar heel gerichte vragen over kan beantwoorden. Dit kan b.v. in <a href="https://adoption.microsoft.com/en-us/ai-agents/copilot-studio/">CoPilot Studio</a>. Wanneer dat niet goed genoeg werkt, kunnen we nog overwegen om manueel een knowledge base op te bouwen, gebruik makend van het AI, die dan weer door het AI kan worden gebruikt om vragen te beantwoorden.</p>



<p class="justify-text">Nog een andere optie bestaat eruit dat we specifieke informatie uit de codebase willen extraheren, zoals de business logica per afzonderlijke module, of pseudocode die menselijke developers kan helpen om de logica in een ander project te herimplementeren. (En uiteraard kan bij die tweede stap ook weer een AI worden ingezet.)</p>



<p class="justify-text">Kortom, met een beetje creativiteit kunnen we voor de meeste ad hoc analyses een betere aanpak verzinnen dan &#8220;analyseer er maar gewoon op los&#8221;. En het documenteren van een legacy systeem kan ook gewoon een eerste opstap zijn naar het herschrijven.</p>



<p></p>



<h2 class="wp-block-heading" style="margin-top:var(--wp--preset--spacing--20);margin-bottom:var(--wp--preset--spacing--20)">Besluit: vakmannen gevraagd</h2>



<figure class="wp-block-image alignright size-large is-resized is-style-default" style="margin-top:var(--wp--preset--spacing--20);margin-bottom:var(--wp--preset--spacing--20)"><a href="https://www.smalsresearch.be/wp-content/uploads/2026/04/Gemini_Generated_Image_98eus398eus398eu-scaled.png"><img loading="lazy" decoding="async" width="1024" height="559" src="https://www.smalsresearch.be/wp-content/uploads/2026/04/Gemini_Generated_Image_98eus398eus398eu-1024x559.png" alt="" class="wp-image-27699" style="aspect-ratio:1.8333516399024625;object-fit:contain;width:546px;height:auto"/></a></figure>



<p class="justify-text no-top-margin">Zoals we hebben aangekaart, bieden LLMs ons stilaan erg krachtige mogelijkheden om onze Legacy Codebases aan te pakken, zéker wanneer we toegang hebben tot de grote en krachtige modellen die vandaag beschikbaar zijn. We zien echter ook dat het eigenlijk een heel goed gevulde gereedschapskoffer is, met een aantal krachtige &#8220;power tools&#8221;, en dat we moeten weten <em>wat </em>we ermee willen bereiken en <em>hoe </em>we deze best kunnen gebruiken.</p>



<p class="justify-text">We zitten nog niet op het punt dat alles automatisch gaat: we zullen dus nog steeds goede <em>vakmannen </em>nodig hebben om optimaal van dit gereedschap gebruik te maken. Onze raad aan developers is om zeker niet bang te zijn van AI en er geregeld gebruik van te maken bij de analyse en ontwikkeling van software: ervaring is de beste leerschool om de goede vakmannen die we hiervoor nodig hebben, op te leiden.</p>



<p class="justify-text">Voorlopig is dus het besluit: voor legacy code is AI geen wondermiddel, maar een handige gereedschapskist die je best kan uitproberen als deel van een bredere aanpak. Zoals gezegd kijken we later dit jaar eerder naar het midden en de rechterkant van het spectrum van legacy. Wij vermoeden dat hier meer mogelijkheden zijn tot automatisering van een aantal workflows, zeker als we ook dieper gebruik gaan maken van agents. Mogelijks kunnen we, voor iets eenvoudigere en repetitievere projecten, dus toch van &#8220;vakman&#8221; naar &#8220;fabriek&#8221; evolueren.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Zin, Onzin, en Nut van LLMs: Zijn ze de Hype waard?</title>
		<link>https://www.smalsresearch.be/zin-onzin-en-nut-van-llms-zijn-ze-de-hype-waard/</link>
					<comments>https://www.smalsresearch.be/zin-onzin-en-nut-van-llms-zijn-ze-de-hype-waard/#comments</comments>
		
		<dc:creator><![CDATA[Koen Vanderkimpen]]></dc:creator>
		<pubDate>Wed, 10 Dec 2025 09:22:56 +0000</pubDate>
				<category><![CDATA[[NL]]]></category>
		<category><![CDATA[Blog post]]></category>
		<category><![CDATA[Artificial intelligence]]></category>
		<category><![CDATA[chatbot]]></category>
		<category><![CDATA[LLM]]></category>
		<category><![CDATA[software engineering]]></category>
		<guid isPermaLink="false">/?p=24386</guid>

					<description><![CDATA[We hebben waarschijnlijk het moment bereikt waarop de hype over AI op zijn grootst is: men is langs één kant laaiend enthousiast over AI, maar hier en daar raken mensen al gedesillusioneerd. Ook spreekt men meer en meer over een bubbel in de markt van de grote tech-spelers. Maar hoe nuttig zijn LLMs momenteel nu [&#8230;]]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image alignleft size-full is-resized"><a href="/wp-content/uploads/2025/11/yin-yang-llm.png"><img loading="lazy" decoding="async" width="520" height="514" src="/wp-content/uploads/2025/11/yin-yang-llm.png" alt="" class="wp-image-24491" style="width:120px;height:auto" srcset="https://www.smalsresearch.be/wp-content/uploads/2025/11/yin-yang-llm.png 520w, https://www.smalsresearch.be/wp-content/uploads/2025/11/yin-yang-llm-300x297.png 300w" sizes="auto, (max-width: 520px) 100vw, 520px" /></a></figure>



<p class="justify-text">We hebben waarschijnlijk het moment bereikt waarop de hype over AI op zijn grootst is: men is langs één kant laaiend enthousiast over AI, maar hier en daar raken mensen al gedesillusioneerd. Ook spreekt men meer en meer over een bubbel in de markt van de grote tech-spelers. Maar hoe nuttig zijn LLMs momenteel nu echt? Kunnen we nog veel verbetering verwachten? En hoe zit dat met die hallucinaties?</p>



<span id="more-24386"></span>



<p class="justify-text">Waarschijnlijk heb je het zelf al meegemaakt: je praat met ChatGPT of een andere slimme chatbot, en deze vertelt je vol vertrouwen iets waarvan je weet dat het niet klopt. Of je bent een developer, en die <a href="https://blog.singleton.io/posts/2025-06-14-coding-agents-cross-a-chasm/">coding assistant werkt best wel goed</a>, tot je <a href="https://martinfowler.com/articles/pushing-ai-autonomy.html">naar wat meer verlangt</a>, maar die nieuw toegevoegde feature aan je programma <a href="https://www.csoonline.com/article/4053635/when-ai-nukes-your-database-the-dark-side-of-vibe-coding.html">hopeloos tekort schiet</a>. En dat zijn nog maar je eigen, bescheiden, ervaringen: wat je hoort van anderen, of op het nieuws of via sociale media, is allicht nog veel extremer: vreugdekreten over hoe we, dankzij AI, een volgende industriële revolutie tegemoet gaan en doemberichten dat mensen hun job erdoor zullen verliezen, versus artikels die vertellen over hoe AI projecten maar blijven mislukken en verhalen over wat voor <a href="https://www.vrt.be/vrtnws/nl/2023/03/24/chatgpt-nepbronnen/">belachelijke of zelfs gevaarlijke hallucinaties</a> uit de AI chatbots blijven komen. Dus wat moet je er nu van denken?</p>



<figure class="wp-block-image alignright size-full is-resized is-style-rounded"><a href="/wp-content/uploads/2025/11/stochastic-parrot.jpeg"><img loading="lazy" decoding="async" width="1024" height="1024" src="/wp-content/uploads/2025/11/stochastic-parrot.jpeg" alt="" class="wp-image-24485" style="width:392px;height:auto" srcset="https://www.smalsresearch.be/wp-content/uploads/2025/11/stochastic-parrot.jpeg 1024w, https://www.smalsresearch.be/wp-content/uploads/2025/11/stochastic-parrot-150x150.jpeg 150w, https://www.smalsresearch.be/wp-content/uploads/2025/11/stochastic-parrot-300x300.jpeg 300w, https://www.smalsresearch.be/wp-content/uploads/2025/11/stochastic-parrot-768x768.jpeg 768w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></figure>



<p class="justify-text">Om dit enigszins beter te begrijpen: een heel kort, niet te technisch, intermezzo over wat LLMs alweer zijn (mijn excuses dat ik daarbij opzettelijk vaag blijf: voor een betere uitleg raad ik de <a href="/chatgpt-een-eerste-indruk/" data-type="post" data-id="17969">blogposts</a> van mijn <a href="/1-jaar-chatgpt/" data-type="post" data-id="19172">collega&#8217;s</a> aan): AI taalmodellen doen voorspellingen over wat het volgende stukje tekst moet zijn, aan de hand van probabiliteiten. Ze zijn getraind op zó veel tekst, dat de <em>in se</em> willekeurige zinnen die eruit rollen, daardoor van een hoge kwaliteit zijn en perfect juist <em>klinken </em>(en het vaak genoeg ook <em>zijn</em>). Echt nadenken zoals een mens doen ze dus niet; het is heel erg &#8220;text based&#8221;. Het is meer het vinden en herhalen van patronen, dan écht begrip; de intelligentie erin ontstaat als <a href="https://nl.wikipedia.org/wiki/Emergentie">emergent verschijnsel</a>. De leukste naam die ik er al voor gehoord heb is &#8220;<a href="https://en.wikipedia.org/wiki/Stochastic_parrot">probabilistische papegaai</a>&#8220;.</p>



<p class="justify-text">Volgens Gartner zitten we nu al <a href="https://www.gartner.com/en/articles/hype-cycle-for-artificial-intelligence">voorbij de piek van opgeblazen verwachtingen en in de trog van desillusie</a>. Ook <a href="https://ai.plainenglish.io/wall-street-is-wrong-about-artificial-intelligence-4d58369ddcb2">andere verslaggevers</a> spreken van een hype of bubbel. Er worden ettelijke miljarden geïnvesteerd in nieuwe datacenters om de AI-machine te voeden, soms zelfs met inbegrip van nieuwe energiecentrales, terwijl de <a href="https://www.computerworld.com/article/3998244/ai-chatbots-see-fast-adoption-but-deliver-minimal-productivity-gains-study-finds.html">winstgevendheid voorlopig nog ver te zoeken</a> is. Is het effectief een bubbel? Dat hangt af van je <a href="https://danielmiessler.com/blog/no-ai-is-not-a-bubble">definitie van bubbel</a>&#8230; Het lijkt in elk geval een grote, soms geostrategische gok, op de volgende technologie die de wereld drastisch kan veranderen en verbeteren, of zelfs veroveren; misschien zelfs vernietigen&#8230; En op moment van schrijven deinzen sommigen er niet van terug om te zeggen dat de luchtbel weldra zal barsten, met als belangrijkste argumenten de <a href="https://graceblakeley.substack.com/p/the-ai-circular-economy">circulaire investeringen</a> van een aantal grote bedrijven in elkaars capaciteit, en het <a href="https://www.bbc.com/news/articles/cpd2qv58yl5o">openstellen van ChatGPT voor erotische inhoud</a>, een zet die meer op cashflow-druk dan op ruimdenkendheid lijkt te duiden.</p>



<p class="justify-text">Bijkomend probleem is dat momenteel ook de <a href="https://olivermolander.medium.com/gartners-ai-hype-cycle-way-passed-its-due-date-and-are-we-entering-a-classical-ml-winter-7c09041c72c4">investeringen in LLM de wind wegnemen uit de zeilen van een aantal andere zeer nuttige AI-technologieën</a> (maar wanneer de storm is gaan liggen kunnen de datacenters misschien wel van pas komen voor deze laatste). Stemmen gaan trouwens op dat we voor échte intelligentie <a href="https://www.forbes.com/sites/robtoews/2023/09/03/transformers-revolutionized-ai-what-will-replace-them/">nóg een andere AI technologie</a> zullen moeten ontwikkelen (al zal het uiteindelijk wel iets zijn dat <a href="https://www.a16z.news/p/bitter-economics">gebruik maakt van alle rekenkracht die we nu uitrollen</a>), en dat <a href="https://thenewstack.io/entering-ai-autumn-why-llms-are-nearing-their-limit/">LLMs stilaan op hun limieten</a> botsen, met steeds kleiner wordende incrementele verbeteringen (en <a href="https://tweakers.net/nieuws/241122/wetenschappers-vinden-fouten-in-445-veiligheidstests-voor-ai-modellen.html">opgeklopte testresultaten</a>). Ondanks <a href="https://www.incompleteideas.net/IncIdeas/BitterLesson.html">de bittere les dat meer data en rekenkracht de grootste vooruitgang</a> mogelijk hebben gemaakt, gaan er nu stemmen op dat men <a href="https://www.businessinsider.com/openai-cofounder-ilya-sutskever-scaling-ai-age-of-research-dwarkesh-2025-11">met LLMs geen Artificial General Intelligence (AGI) zal kunnen bouwen</a>; men zal nieuwe research moeten aanboren. En ondertussen kan men ook aantonen dat de <a href="https://tweakers.net/nieuws/239420/openai-rapport-hallucinaties-zijn-wiskundig-inherent-aan-huidige-ai-aanpak.html">hallucinaties er gewoon bij horen</a> en <a href="https://openai.com/nl-NL/index/why-language-models-hallucinate/">allicht nooit volledig weg te krijgen zullen zijn</a>: onkruid vergaat niet. </p>



<figure class="wp-block-image alignleft size-full is-resized"><a href="/wp-content/uploads/2025/11/llm-garden.jpeg"><img loading="lazy" decoding="async" width="1024" height="1024" src="/wp-content/uploads/2025/11/llm-garden.jpeg" alt="" class="wp-image-24489" style="width:424px;height:auto" srcset="https://www.smalsresearch.be/wp-content/uploads/2025/11/llm-garden.jpeg 1024w, https://www.smalsresearch.be/wp-content/uploads/2025/11/llm-garden-150x150.jpeg 150w, https://www.smalsresearch.be/wp-content/uploads/2025/11/llm-garden-300x300.jpeg 300w, https://www.smalsresearch.be/wp-content/uploads/2025/11/llm-garden-768x768.jpeg 768w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></figure>



<p class="justify-text">Maar in een tuin waar onkruid groeit, kan men toch ook goede dingen laten groeien, met wat moeite. En in zo&#8217;n tuin hebben LLMs wel degelijk hun nut: daar waar een taak vooral gaat over tekst en taal, zijn ze bijvoorbeeld heel krachtig (denk aan samenvatten, vertalen, zaken verzinnen, zeer eenvoudige redeneringen opbouwen, &#8230;). En ook voor programmeren (wat een soort omgaan met een specifiek soort taal is), merken we enthousiasme van vele developers die hun productiviteit zagen stijgen (maar <a href="/ai-om-de-veiligheid-van-de-code-te-verbeteren-deel-1-veiligheid-van-de-gegenereerde-code/">security blijft een aandachtspunt!</a>). Als algemene slimme assistent kan het ook een rol spelen, zolang de gebruiker zelf voldoende onderlegd is in een onderwerp en kritisch is ingesteld. En misschien moeten ze gewoon nog verder <a href="https://jenson.org/boring/">evolueren tot de beste tool voor een bepaalde niche</a> van taken.</p>



<p class="justify-text">Ook zelf heb ik een genuanceerd verhaal te vertellen: in mijn <a href="/vibe-coding-met-agentic-ides/" data-type="post" data-id="22499">vorige blogpost</a> had ik het over een aantal kleine successen met <a href="https://www.infoworld.com/article/4058076/vibe-coding-and-the-future-of-software-development.html">vibe coding</a>, en de beperkingen van het AI, wanneer de taken groter of complexer worden. Hetzelfde zie ik in het werk dat ik sindsdien heb verricht: het analyseren en vertalen van legacy code met behulp van deze taalmodellen. Ook daar dus een gemengd succes: geen toverstokjes, nauwelijks of moeilijk te automatiseren, maar toch een zichtbare tijdswinst bij het begrijpen van middelmatig grote en het herschrijven van kleine stukken code van dit soort projecten (meer details daarover in een komende blogpost).</p>



<h2 class="wp-block-heading">Conclusie</h2>



<p class="justify-text">Een LLM is slechts één van de vele intelligente technologieën die we momenteel aan onze vingertippen hebben, al zij het wel de meest toegankelijke en zichtbare. Misschien vandaar zowel de hype als de controverse?</p>



<p class="justify-text">Zijn LLMs nuttig? Ik zou durven argumenteren van wel. Met de huidige stand van de technologie is het echter van groot belang dit te nuanceren: zet een LLM als <a href="https://leadershiplighthouse.substack.com/p/i-went-all-in-on-ai-the-mit-study">powertool ter beschikking</a> van een menselijke expert! <strong>De echte waarde ligt dus niet in vervanging, maar in augmentatie</strong>. Laten we het komende jaar kijken of alle <a href="/ai-agents-voordelen-uitdagingen-en-usecases/" data-type="post" data-id="22407">agent-based systemen</a> hier verandering in brengen&#8230;</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.smalsresearch.be/zin-onzin-en-nut-van-llms-zijn-ze-de-hype-waard/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>Sens, absurdité et utilité des LLM : méritent-ils ce battage médiatique ?</title>
		<link>https://www.smalsresearch.be/sens-absurdite-et-utilite-des-llm-meritent-ils-ce-battage-mediatique/</link>
		
		<dc:creator><![CDATA[Koen Vanderkimpen]]></dc:creator>
		<pubDate>Wed, 10 Dec 2025 09:17:25 +0000</pubDate>
				<category><![CDATA[[FR]]]></category>
		<category><![CDATA[Blog post]]></category>
		<category><![CDATA[Artificial intelligence]]></category>
		<category><![CDATA[chatbot]]></category>
		<category><![CDATA[LLM]]></category>
		<category><![CDATA[software engineering]]></category>
		<guid isPermaLink="false">/?p=24579</guid>

					<description><![CDATA[Nous avons probablement atteint le point culminant du battage médiatique autour de l&#8217;IA&#160;: d&#8217;un côté, l&#8217;IA suscite l&#8217;enthousiasme, de l&#8217;autre, elle commence déjà à créer la désillusion. On parle aussi de plus en plus d&#8217;une bulle sur le marché des grands acteurs technologiques. Mais quelle est réellement l&#8217;utilité des LLM à l&#8217;heure actuelle&#160;? Pouvons-nous encore [&#8230;]]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image alignleft size-full is-resized"><a href="/wp-content/uploads/2025/11/yin-yang-llm.png"><img loading="lazy" decoding="async" width="520" height="514" src="/wp-content/uploads/2025/11/yin-yang-llm.png" alt="" class="wp-image-24491" style="width:143px;height:auto" srcset="https://www.smalsresearch.be/wp-content/uploads/2025/11/yin-yang-llm.png 520w, https://www.smalsresearch.be/wp-content/uploads/2025/11/yin-yang-llm-300x297.png 300w" sizes="auto, (max-width: 520px) 100vw, 520px" /></a></figure>



<p class="justify-text">Nous avons probablement atteint le point culminant du battage médiatique autour de l&#8217;IA&nbsp;: d&#8217;un côté, l&#8217;IA suscite l&#8217;enthousiasme, de l&#8217;autre, elle commence déjà à créer la désillusion. On parle aussi de plus en plus d&#8217;une bulle sur le marché des grands acteurs technologiques. Mais quelle est réellement l&#8217;utilité des LLM à l&#8217;heure actuelle&nbsp;? Pouvons-nous encore espérer de nombreuses améliorations&nbsp;? Et qu&#8217;en est-il des hallucinations&nbsp;?</p>



<span id="more-24579"></span>



<p class="justify-text">Vous avez probablement déjà vécu cette situation&nbsp;: vous discutez avec ChatGPT ou un autre robot conversationnel «&nbsp;intelligent&nbsp;» et celui-ci produit sans détour une affirmation que vous savez fausse. Ou vous êtes développeur et votre <a href="https://blog.singleton.io/posts/2025-06-14-coding-agents-cross-a-chasm/">assistant de codage fonctionne plutôt bien</a>, jusqu&#8217;à <a href="https://martinfowler.com/articles/pushing-ai-autonomy.html">ce que vous en demandiez plus</a>, mais la nouvelle fonctionnalité ajoutée à votre programme <a href="https://www.csoonline.com/article/4053635/when-ai-nukes-your-database-the-dark-side-of-vibe-coding.html">est loin d&#8217;être à la hauteur</a>. Et ce ne sont là que vos propres expériences, modestes. En effet, les expériences relatées par les autres ou celles relayées dans la presse ou sur les réseaux sociaux sont sans doute bien plus extrêmes&nbsp;: d&#8217;un côté, des cris de joie à l&#8217;idée que l&#8217;IA amorce une nouvelle révolution industrielle et des messages alarmistes selon lesquels elle entraînera des pertes d&#8217;emploi, de l&#8217;autre, des articles qui disent que les projets d&#8217;IA ne cessent d&#8217;échouer et des récits sur <a href="https://www.vrt.be/vrtnws/nl/2023/03/24/chatgpt-nepbronnen/">les hallucinations ridicules, voire dangereuses</a> que ne cessent de produire les robots conversationnels basés sur l’IA. Que faut-il dès lors en penser&nbsp;?</p>



<figure class="wp-block-image alignright size-full is-resized is-style-rounded"><a href="/wp-content/uploads/2025/11/stochastic-parrot.jpeg"><img loading="lazy" decoding="async" width="1024" height="1024" src="/wp-content/uploads/2025/11/stochastic-parrot.jpeg" alt="" class="wp-image-24485" style="width:414px;height:auto" srcset="https://www.smalsresearch.be/wp-content/uploads/2025/11/stochastic-parrot.jpeg 1024w, https://www.smalsresearch.be/wp-content/uploads/2025/11/stochastic-parrot-150x150.jpeg 150w, https://www.smalsresearch.be/wp-content/uploads/2025/11/stochastic-parrot-300x300.jpeg 300w, https://www.smalsresearch.be/wp-content/uploads/2025/11/stochastic-parrot-768x768.jpeg 768w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></figure>



<p class="justify-text">Pour une meilleure compréhension, un bref intermède, pas trop technique, sur ce que sont les LLM (je vous prie de m&#8217;excuser de rester volontairement vague à ce sujet&nbsp;: pour une meilleure explication, je vous recommande les <a href="/chatgpt-een-eerste-indruk/">articles de blog</a> de mes <a href="/1-an-chatgpt/" data-type="post" data-id="19587">collègues</a>)&nbsp;: les modèles de langage d&#8217;IA prédisent ce que doit être le prochain morceau de texte, en se basant sur des probabilités. Ils ont été entraînés sur une telle quantité de texte que les phrases aléatoires qu&#8217;ils produisent sont de grande qualité et semblent parfaitement cohérentes (et le sont souvent). Ils ne réfléchissent donc pas comme un être humain&nbsp;: leur fonctionnement est très &#8220;basé sur le texte&#8221;. Il s&#8217;agit davantage de trouver et de répéter des modèles que de faire preuve d&#8217;une véritable compréhension&nbsp;; l&#8217;intelligence qui s&#8217;en dégage est un <a href="https://fr.wikipedia.org/wiki/%C3%89mergence">phénomène émergent</a>. Le nom le plus cocasse que j&#8217;ai entendu jusqu&#8217;à présent est &#8220;<a href="https://fr.wikipedia.org/wiki/Perroquet_stochastique">perroquet stochastique</a>&#8220;.</p>



<p class="justify-text">Selon Gartner, nous avons déjà <a href="https://www.gartner.com/en/articles/hype-cycle-for-artificial-intelligence">dépassé le pic des attentes déraisonnables et nous sommes désormais dans la phase de désillusion</a>. <a href="https://ai.plainenglish.io/wall-street-is-wrong-about-artificial-intelligence-4d58369ddcb2">D&#8217;autres journalistes</a> parlent d&#8217;un effet de mode ou d&#8217;une bulle.<br>Des milliards sont investis dans de nouveaux centres de données pour alimenter la machine IA, parfois même avec de nouvelles centrales électriques, alors que <a href="https://www.computerworld.com/article/3998244/ai-chatbots-see-fast-adoption-but-deliver-minimal-productivity-gains-study-finds.html">la rentabilité est encore loin d&#8217;être atteinte</a>. S&#8217;agit-il réellement d&#8217;une bulle&nbsp;? Tout dépend de votre <a href="https://danielmiessler.com/blog/no-ai-is-not-a-bubble">définition d&#8217;une bulle</a>&#8230; En tout cas, cela ressemble à un pari énorme, parfois géostratégique, sur la prochaine technologie qui pourrait changer et <a>améliorer</a> radicalement le monde, voire le conquérir, voire le détruire&#8230; Tandis que j&#8217;écris ces lignes, certains n&#8217;hésitent pas à affirmer que la bulle est sur le point d&#8217;éclater, avec comme principaux arguments les <a href="https://graceblakeley.substack.com/p/the-ai-circular-economy">investissements circulaires</a> d&#8217;un certain nombre de grandes entreprises dans leurs capacités respectives et <a href="https://www.bbc.com/news/articles/cpd2qv58yl5o">l&#8217;ouverture de ChatGPT au contenu érotique</a>, une décision qui semble davantage refléter une pression sur les flux de trésorerie qu&#8217;une ouverture d&#8217;esprit.</p>



<p class="justify-text">Un autre problème réside dans le fait qu&#8217;actuellement, <a href="https://olivermolander.medium.com/gartners-ai-hype-cycle-way-passed-its-due-date-and-are-we-entering-a-classical-ml-winter-7c09041c72c4">les investissements dans les LLM freinent également le développement d&#8217;un certain nombre d&#8217;autres technologies d&#8217;IA très utiles</a> (mais lorsque la tempête se sera calmée, les centres de données pourraient bien s&#8217;avérer utiles pour ces dernières). Certains pensent d&#8217;ailleurs que pour obtenir une véritable intelligence, nous devrons développer <a href="https://www.forbes.com/sites/robtoews/2023/09/03/transformers-revolutionized-ai-what-will-replace-them/">une autre technologie d&#8217;IA</a> (même si, au final, celle-ci <a href="https://www.a16z.news/p/bitter-economics">utilisera toute la puissance de calcul que nous déployons actuellement </a>), et que <a href="https://thenewstack.io/entering-ai-autumn-why-llms-are-nearing-their-limit/">les LLM atteignent peu à peu leurs limites</a>, avec des améliorations incrémentielles de plus en plus faibles (et <a href="https://www.begeek.fr/les-benchmarks-dia-sous-le-feu-des-critiques-424095">des résultats de tests gonflés</a>). Malgré <a href="https://algonaute.fr/fr/stupefiant.html">la leçon amère</a> que davantage de données et de puissance de calcul ont permis les plus grands progrès, des voix s&#8217;élèvent maintenant pour dire qu&#8217;on ne pourra pas construire une Intelligence Artificielle Générale (AGI) avec les LLM ; il faudra se tourner vers de nouvelles recherches. Et entre-temps, on peut aussi démontrer que <a href="https://intelligence-artificielle.developpez.com/actu/375803/OpenAI-l-avoue-generation-de-contre-verites-de-citations-fictives-ou-de-faits-inexacts-les-hallucinations-de-ChatGPT-ne-disparaitront-jamais-L-IA-generative-face-a-sa-limite-structurelle/">les hallucinations en font tout simplement partie</a> et <a href="https://openai.com/fr-FR/index/why-language-models-hallucinate/">qu&#8217;elles ne disparaîtront probablement jamais complètement</a>&nbsp;: les mauvaises herbes ne disparaissent jamais. </p>



<figure class="wp-block-image alignleft size-full is-resized"><a href="/wp-content/uploads/2025/11/llm-garden.jpeg"><img loading="lazy" decoding="async" width="1024" height="1024" src="/wp-content/uploads/2025/11/llm-garden.jpeg" alt="" class="wp-image-24489" style="width:424px;height:auto" srcset="https://www.smalsresearch.be/wp-content/uploads/2025/11/llm-garden.jpeg 1024w, https://www.smalsresearch.be/wp-content/uploads/2025/11/llm-garden-150x150.jpeg 150w, https://www.smalsresearch.be/wp-content/uploads/2025/11/llm-garden-300x300.jpeg 300w, https://www.smalsresearch.be/wp-content/uploads/2025/11/llm-garden-768x768.jpeg 768w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></figure>



<p class="justify-text">Mais dans un jardin envahi par les mauvaises herbes, de belles plantations sont tout de même possibles, moyennant quelques efforts. Et dans un tel jardin, les LLM ont bel et bien leur utilité&nbsp;: lorsqu&#8217;une tâche concerne principalement le texte et le langage, ils sont par exemple très performants (pensez au résumé, à la traduction, à la création, à la construction de raisonnements très simples&#8230;). Et même pour la programmation (qui est une sorte de manipulation d&#8217;un langage spécifique), nous constatons l&#8217;enthousiasme de nombreux développeurs qui ont vu leur productivité augmenter (mais <a href="/ia-pour-ameliorer-securite-du-code-1/">la sécurité demeure un point d&#8217;attention&nbsp;!</a>). En tant qu&#8217;assistant intelligent général, les LLM peuvent également jouer un rôle, à condition que l&#8217;utilisateur soit suffisamment informé sur un sujet et ait l&#8217;esprit critique. Et peut-être doivent-ils simplement continuer à <a href="https://jenson.org/boring/">évoluer pour devenir le meilleur outil pour une certaine niche</a> de tâches.</p>



<p class="justify-text">J&#8217;ai moi-même une histoire nuancée à raconter&nbsp;: dans mon <a href="/vibe-coding-avec-les-ides-agentique/">précédent article de blog</a>, j&#8217;ai évoqué quelques petits succès avec le <a href="https://www.infoworld.com/article/4058076/vibe-coding-and-the-future-of-software-development.html">vibe coding</a>, ainsi que les limites de l&#8217;IA lorsque les tâches deviennent plus importantes ou plus complexes. Je constate la même chose dans le travail que j&#8217;ai effectué depuis&nbsp;: l&#8217;analyse et la traduction de code hérité à l&#8217;aide de ces modèles de langage. Là aussi, le succès est mitigé&nbsp;: pas de baguette magique, difficile voire impossible à automatiser, mais tout de même un gain de temps visible dans la compréhension des codes de taille moyenne et la réécriture des petits morceaux de code de ce type de projets (plus de détails à ce sujet dans un prochain article de blog).</p>



<p><strong>Conclusion</strong></p>



<p class="justify-text">Un LLM n&#8217;est qu&#8217;une des nombreuses technologies «&nbsp;intelligentes&nbsp;» disponibles actuellement, même s&#8217;il s&#8217;agit de la plus accessible et la plus visible. C&#8217;est peut-être ce qui explique à la fois l&#8217;engouement et la controverse qu&#8217;elle suscite.</p>



<p class="justify-text">Les LLM sont-ils utiles&nbsp;? J&#8217;oserais dire que oui. Cependant, compte tenu de l&#8217;état actuel de la technologie, il est fondamental de nuancer cette affirmation&nbsp;: mettez un LLM à la disposition d&#8217;un expert humain en tant qu&#8217;<a href="https://leadershiplighthouse.substack.com/p/i-went-all-in-on-ai-the-mit-study">outil puissant</a>&nbsp;! <strong>La véritable valeur ne réside donc pas dans le remplacement, mais dans l&#8217;augmentation.</strong> Nous verrons si tous les <a href="/agents-ia-avantages-defis-et-cas-utilisation/">systèmes basés sur des agents</a> changeront la donne au cours de l&#8217;année à venir.<a id="_msocom_1"></a></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>&#8220;Vibe Coding&#8221; avec les IDE agentiques</title>
		<link>https://www.smalsresearch.be/vibe-coding-avec-les-ides-agentique/</link>
		
		<dc:creator><![CDATA[Koen Vanderkimpen]]></dc:creator>
		<pubDate>Tue, 13 May 2025 11:35:51 +0000</pubDate>
				<category><![CDATA[[FR]]]></category>
		<category><![CDATA[Blog post]]></category>
		<category><![CDATA[agent]]></category>
		<category><![CDATA[Artificial intelligence]]></category>
		<category><![CDATA[coding]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[methodology]]></category>
		<category><![CDATA[Productivity]]></category>
		<category><![CDATA[software engineering]]></category>
		<guid isPermaLink="false">/?p=22652</guid>

					<description><![CDATA[Les environnements de développement intégrés (IDE) agentiques font presque tout à votre place, comme si vous regardiez par-dessus l'épaule d'un programmeur tout en lui donnant des instructions. Bienvenue dans le monde du "Vibe Coding".]]></description>
										<content:encoded><![CDATA[
<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:100%">
<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:100%">
<p><em><em>Dit artikel is ook beschikbaar in het&nbsp;<a href="/vibe-coding-met-agentic-ides/" data-type="post" data-id="22499">Nederlands</a>.</em></em></p>



<figure class="wp-block-image alignleft size-thumbnail is-resized is-style-default"><a href="/wp-content/uploads/2025/05/android.png"><img loading="lazy" decoding="async" width="150" height="150" src="/wp-content/uploads/2025/05/android-150x150.png" alt="" class="wp-image-22544" style="width:213px;height:auto" srcset="https://www.smalsresearch.be/wp-content/uploads/2025/05/android-150x150.png 150w, https://www.smalsresearch.be/wp-content/uploads/2025/05/android.png 268w" sizes="auto, (max-width: 150px) 100vw, 150px" /></a></figure>



<p class="justify-text">Avez-vous déjà entendu parler du &#8220;Vibe Coding&#8221;&nbsp;? Il s&#8217;agit de programmer sans avoir à taper le code source. Un outil d&#8217;IA dans votre éditeur le fera pour vous ; il vous suffit de lui donner des instructions en langage naturel.</p>



<span id="more-22652"></span>



<p class="justify-text">Cela semble trop beau pour être vrai&nbsp;? La vérité est actuellement quelque part entre les deux. Créer une application spécifique et complexe en partant de zéro est en effet encore un peu ambitieux. Il existe cependant des exemples d&#8217;applications web simples qui ont été construites à l&#8217;aide de simples descriptions textuelles soumises à un moteur d’IA générative et qui font ce qu&#8217;elles doivent faire. Dans cet article, nous explorons les &#8220;IDE agentiques&#8221;, l&#8217;outil d&#8217;IA qui permet de faire cela, et nous nous intéressons de plus près à un produit que j&#8217;ai récemment testé&nbsp;: WindSurf.</p>
</div>
</div>



<h2 class="wp-block-heading justify-text">Le buzz du moment&nbsp;: agentiques</h2>



<p class="justify-text">À mon avis, les agents sont actuellement le principal moyen de faire progresser l&#8217;IA. La construction d&#8217;une couche d&#8217;outils et de processus de réflexion utiles autour d&#8217;un <a href="/les-modeles-de-langue-open-source-une-alternative-a-chatgpt/" data-type="post" data-id="19808">LLM</a> (Large Language Model ou grand modèle de langage) offre encore beaucoup de potentiel, là où les modèles de langage purs commencent à se heurter à <a href="https://thenewstack.io/entering-ai-autumn-why-llms-are-nearing-their-limit/">certaines limites</a>.</p>



<p class="justify-text">Dans un <a href="/agents-ia-avantages-defis-et-cas-utilisation/" data-type="post" data-id="22578">précédent article de blog sur les agents</a>, mon collègue Bert a déjà brièvement expliqué ce qu&#8217;est un IDE agentique. En bref, un agent est un fragment d&#8217;IA qui peut effectuer toutes sortes de tâches de manière (semi-)autonome (comme éditer des fichiers texte, par exemple, ce qui est l&#8217;activité principale en programmation). Nous connaissons déjà les environnements de développement intégrés&nbsp;: il s&#8217;agit des logiciels que nous utilisons pour écrire du code, composés d&#8217;un éditeur de texte et de tous les outils supplémentaires possibles pour compiler, exécuter, refactoriser le code, etc. Mon IDE préféré, par exemple, est <a href="https://www.jetbrains.com/idea/">Intellij IDEA</a>.</p>



<p class="justify-text">Le terme <em>IDE agentique</em> désigne un IDE qui, parmi ses outils supplémentaires intégrés, comprend une fonctionnalité permettant à l&#8217;IA d&#8217;exécuter toutes sortes de tâches à votre place. En général, l&#8217;IDE affiche une fenêtre dans laquelle vous pouvez dialoguer avec l&#8217;IA, qui se met au travail dès que vous lui demandez quelque chose. La grande différence avec les assistants IA plus basiques réside dans le fait que l&#8217;agent peut utiliser pratiquement toutes les fonctionnalités de l&#8217;IDE&nbsp;: éditer toutes sortes de fichiers (pas nécessairement celui sur lequel vous travaillez à ce moment-là), compiler et exécuter le code, voire le déployer sur un serveur, exécuter des commandes dans le terminal, etc. Travailler de cette manière, en conversant simplement dans la fenêtre de dialogue et en laissant l&#8217;agent faire le reste, est ce que l&#8217;on appelle le &#8220;vibe coding&#8221;.</p>



<h2 class="wp-block-heading">Quelques Exemples</h2>



<p class="justify-text">Une petite recherche sur Internet nous permet de trouver rapidement plusieurs exemples d&#8217;IDE agentiques.</p>



<ul class="wp-block-list">
<li class="justify-text"><a href="https://bolt.new/">https://bolt.new/</a> fonctionne entièrement sur le web et permet de créer des applications web complètes à partir d&#8217;une invite. La plateforme est très populaire, même si plusieurs tentatives sont parfois nécessaires (et donc plutôt une conversation entière qu&#8217;une seule invite) pour obtenir le résultat souhaité. Ce site de commerce en ligne (qui n&#8217;est pas entièrement fonctionnel) a par exemple été construit après une conversation avec 5 invites de plus en plus complexes: <a href="https://starlit-melba-287efe.netlify.app/products">https://starlit-melba-287efe.netlify.app/products</a> .</li>



<li class="justify-text"><a href="https://github.com/features/copilot">GitHub CoPilot</a> est sans doute l&#8217;un des plus connus. Il donne un nouvel élan à l&#8217;IDE Visual Studio Code (VS Code) grâce à une IA qui travaille pour vous, un peu comme la programmation en binôme.</li>



<li class="justify-text"><a href="https://windsurf.com/editor">Codeium WindSurf</a>, un autre IDE agentique basé sur VS Code, sera présenté plus en détail ci-dessous. WindSurf est actuellement en cours d&#8217;acquisition par OpenAI.</li>



<li class="justify-text"><a href="https://www.cursor.com/">Cursor</a> est également un IDE basé sur VS Code et l&#8217;un des IDE agentique les plus connus et les plus populaires.</li>



<li class="justify-text"><a href="https://cline.bot/">https://cline.bot/</a> . Également basé sur VS Code, et open source.</li>



<li class="justify-text">La liste continue&nbsp;: Lovable, V0, Replit Agent, Devin, Trae, …</li>



<li class="justify-text">Le petit nouveau (disponible depuis quelques semaines seulement)&nbsp;:  <a href="https://www.jetbrains.com/junie/">IntelliJ Junie</a>. Il sera certainement intéressant pour nous de le tester plus en détail à l&#8217;avenir, car il est basé sur IntelliJ IDEA.</li>
</ul>



<h2 class="wp-block-heading">Testé&nbsp;: Codeium WindSurf</h2>



<p class="justify-text">Avant de commencer à tester WindSurf (anciennement Codeium), je n&#8217;avais pratiquement aucune expérience avec VS Code, l&#8217;IDE sur lequel Windsurf est basé, mais cela s&#8217;est avéré ne pas poser de problème&nbsp;! Une fois l&#8217;installation terminée, j&#8217;ai eu l&#8217;idée d&#8217;un test très simple&nbsp;: j&#8217;ai demandé à l&#8217;IDE de m&#8217;écrire un petit outil en Java, qui se connecterait à Confluence et lirait les données d&#8217;un tableau sur une page spécifique. L&#8217;outil devait ensuite transférer ces données dans un nouveau fichier Excel et l&#8217;enregistrer sur mon PC..</p>



<p class="justify-text">L&#8217;outil a bien démarré, mais il y avait quelques problèmes à surmonter. À titre d&#8217;exemple, la connexion à Confluence ne fonctionnait pas avec les identifiants que Windsurf m&#8217;avait demandés lors de notre conversation initiale. Après une petite recherche sur Confluence, j&#8217;ai compris comment la connexion au site devait fonctionner pour les outils programmés, et j&#8217;ai pu en informer WindSurf. L&#8217;IDE a rapidement apporté les modifications nécessaires et tout a fonctionné. Après une brève conversation pour obtenir quelques détails supplémentaires sur l&#8217;application afin qu&#8217;elle réponde à mes besoins, j&#8217;ai obtenu, en une heure environ, une version fonctionnelle de l&#8217;outil demandé.</p>



<figure class="wp-block-image size-large"><a href="/wp-content/uploads/2025/05/windsurf.png"><img loading="lazy" decoding="async" width="1024" height="603" src="/wp-content/uploads/2025/05/windsurf-1024x603.png" alt="" class="wp-image-22550" srcset="https://www.smalsresearch.be/wp-content/uploads/2025/05/windsurf-1024x603.png 1024w, https://www.smalsresearch.be/wp-content/uploads/2025/05/windsurf-300x177.png 300w, https://www.smalsresearch.be/wp-content/uploads/2025/05/windsurf-768x452.png 768w, https://www.smalsresearch.be/wp-content/uploads/2025/05/windsurf.png 1229w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a><figcaption class="wp-element-caption">L&#8217;IDE WindSurf en action</figcaption></figure>



<p class="justify-text">Un deuxième test, dans lequel j&#8217;ai demandé une application plus importante en plusieurs composants (serveur API + interface web, etc.), a été interrompu en raison d&#8217;un manque de crédits dans la version gratuite. Il s&#8217;est avéré qu&#8217;un IDE agentique perd ici un peu de sa vue d&#8217;ensemble et commet des erreurs en raison de la taille du projet.</p>



<p class="justify-text">Pour le troisième test, armé d&#8217;une licence commerciale et soutenu par un architecte compétent, je me suis mis au travail sur le code existant d&#8217;un projet Java assez ancien, avec une structure monolithique et des dépendances et méthodes obsolètes. Du moins, c&#8217;était une partie de l&#8217;équation. L&#8217;application est en cours de réécriture chez Smals, et une partie du nouveau code était déjà disponible. L&#8217;objectif du test était de permettre à WindSurf d&#8217;ajouter une fonctionnalité complète dans le nouveau code source, sur la base de tout le code existant (hérité + nouveau).</p>



<p class="justify-text">La nouvelle architecture de cette application était extrêmement modulaire (une architecture dite &#8220;oignon&#8221;) et nous avons dû ajuster régulièrement l&#8217;IDE, car il ne fournissait pas les ajouts et modifications appropriés dans tous les modules en même temps. À un moment donné, nous avons également dû l&#8217;aider manuellement à rechercher une fonctionnalité dans l&#8217;ancienne version du projet, afin de pouvoir la reprogrammer dans la nouvelle version. Finalement, après deux heures de &#8220;vibe coding&#8221;, nous avons ajouté la fonctionnalité, ce qui aurait autrement été une tâche fastidieuse et répétitive (mais impossible à automatiser de manière traditionnelle) pour un programmeur.</p>



<h2 class="wp-block-heading">Comment peut-on faire encore mieux&nbsp;?</h2>



<p class="justify-text">Comme nous avons pu le voir dans la section précédente, les IDE agentiques offrent de nombreuses possibilités pour raccourcir et automatiser en partie le travail de programmation, mais tout ne se passe pas toujours sans accroc, car l&#8217;agent se trompe, ne fait pas exactement ce que nous voulons ou oublie de faire certaines choses. Un peu comme un programmeur inexpérimenté, peut-être&nbsp;? Le problème se pose d&#8217;autant plus que le projet prend de l&#8217;ampleur.</p>



<p class="justify-text">Nous nous posons alors naturellement la question suivante&nbsp;: comment pouvons-nous améliorer cela&nbsp;? Nous ne sommes toutefois pas les seuls ; d&#8217;autres <a href="https://nmn.gl/blog/ai-understand-senior-developer">sur le web</a> ont déjà réfléchi à cette question et confirment ce que nous soupçonnions déjà&nbsp;: il faut fournir davantage de contexte et de meilleure qualité pour aider l&#8217;agent à comprendre ce que nous voulons réellement. Cela peut se faire de différentes manières&nbsp;: vous pouvez ajouter une liste de tâches à l’invite, et/ou vous pouvez fournir un fichier dans le projet, avec une liste d&#8217;instructions supplémentaires, et/ou vous pouvez ajouter dans chaque dossier d&#8217;un projet existant un fichier contenant des informations utiles sur ce dossier, et vous pouvez le faire de manière hiérarchique pour les sous-dossiers. Il s&#8217;agit en fait d&#8217;une sorte de signalisation de votre projet, adaptée à l&#8217;IA.</p>



<p class="justify-text">Bien sûr, fournir tout ce contexte représente beaucoup de travail. Mais ne vous inquiétez pas&nbsp;: il est probablement possible de laisser l&#8217;IA le faire elle-même dans une étape préparatoire. Il existe même déjà <a href="https://gigamind.dev/context">des outils commerciaux</a> à cet effet, qui agissent également comme des agents et utilisent également un LLM en arrière-plan.</p>



<p class="justify-text">Documenter le code existant et le rendre plus compréhensible de cette manière est utile pour un IDE agentique, mais aussi pour les développeurs humains&nbsp;! Ce sera la prochaine piste de recherche sur ce que l&#8217;IA peut apporter à la programmation…</p>



<h2 class="wp-block-heading">Conclusion</h2>



<figure class="wp-block-image alignleft size-full is-resized"><a href="/wp-content/uploads/2025/05/computers.png"><img loading="lazy" decoding="async" width="576" height="864" src="/wp-content/uploads/2025/05/computers.png" alt="" class="wp-image-22553" style="width:239px;height:auto" srcset="https://www.smalsresearch.be/wp-content/uploads/2025/05/computers.png 576w, https://www.smalsresearch.be/wp-content/uploads/2025/05/computers-200x300.png 200w" sizes="auto, (max-width: 576px) 100vw, 576px" /></a></figure>



<p class="justify-text">Les IDE agentiques sont actuellement l&#8217;incarnation ultime de la programmation assistée par l&#8217;IA. Ils vont bien au-delà de la simple assistance et peuvent coder à votre place, comme si vous parliez à un développeur (inexpérimenté) qui effectue le travail à votre place. Le &#8220;Vibe Coding&#8221; pourrait bien prendre en charge une grande partie de notre travail dans un avenir proche&nbsp;!<br>La seule nuance, que nous devons toujours apporter à l&#8217;IA, c&#8217;est qu&#8217;il ne s&#8217;agit pas de magie&nbsp;: elle ne sait pas automatiquement ce qui doit être fait, et vous devrez l&#8217;ajuster et lui fournir un contexte. <em>Garbage in – Garbage out.</em><br>Il y a donc certainement encore matière à amélioration, mais vu la vitesse à laquelle la technologie évolue, cela pourrait bien arriver rapidement…</p>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow"></div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow"></div>
</div>
</div>
</div>


]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Vibe Coding met Agentic IDEs</title>
		<link>https://www.smalsresearch.be/vibe-coding-met-agentic-ides/</link>
		
		<dc:creator><![CDATA[Koen Vanderkimpen]]></dc:creator>
		<pubDate>Tue, 06 May 2025 11:27:50 +0000</pubDate>
				<category><![CDATA[[NL]]]></category>
		<category><![CDATA[Blog post]]></category>
		<category><![CDATA[agent]]></category>
		<category><![CDATA[Artificial intelligence]]></category>
		<category><![CDATA[coding]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[methodology]]></category>
		<category><![CDATA[Productivity]]></category>
		<category><![CDATA[software engineering]]></category>
		<guid isPermaLink="false">/?p=22499</guid>

					<description><![CDATA[Agentic IDE’s doen bijna alles in je plaats, alsof je achter de rug van een programmeur meekijkt op het scherm, terwijl je hem of haar instructies geeft. Welkom in de wereld van “Vibe Coding”.]]></description>
										<content:encoded><![CDATA[
<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:100%">
<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:100%">
<p><em>Cet article est aussi disponible en <a href="/vibe-coding-avec-les-ides-agentique/">français</a>.</em></p>



<figure class="wp-block-image alignleft size-thumbnail is-resized is-style-default"><a href="/wp-content/uploads/2025/05/android.png"><img loading="lazy" decoding="async" width="150" height="150" src="/wp-content/uploads/2025/05/android-150x150.png" alt="" class="wp-image-22544" style="width:213px;height:auto" srcset="https://www.smalsresearch.be/wp-content/uploads/2025/05/android-150x150.png 150w, https://www.smalsresearch.be/wp-content/uploads/2025/05/android.png 268w" sizes="auto, (max-width: 150px) 100vw, 150px" /></a></figure>



<p class="justify-text">Had je al van &#8220;Vibe Coding&#8221; gehoord? Dit betekent dat je gaat programmeren zonder zelf effectief de broncode in te typen. Een AI tool in je editor zal dit voor jou doen; je moet deze enkel nog instructies geven in natuurlijke taal.</p>



<span id="more-22499"></span>



<p class="justify-text">Klinkt dit te mooi om waar te zijn? Wel, de waarheid zit momenteel nog wat in het midden. Een specifieke en complexe toepassing bouwen, helemaal vanaf nul, is inderdaad nog wat hoog gegrepen. Maar er zijn voorbeelden van eenvoudige webtoepassingen die via een chat-prompt gebouwd werden en doen wat ze moeten doen. In deze blog-post verkennen we &#8220;Agentic IDEs&#8221;, de AI tool waarmee je dit kan doen en gaan we dieper in op een product dat ik onlangs heb getest: de WindSurf IDE.</p>
</div>
</div>



<h2 class="wp-block-heading justify-text">De rage van het moment: Agentic</h2>



<p class="justify-text">Agents zijn, naar mijn mening, momenteel de belangrijkste manier waarop AI vooruitgang boekt. Het bouwen van een laag van nuttige tools  en denkprocessen rondom een <a href="/open-source-taalmodellen-een-serieus-alternatief-voor-chatgpt/" data-type="post" data-id="19888">LLM</a> (Large Language Model) biedt nog erg veel ruimte voor potentieel, daar waar zuivere taalmodellen <em>op zich</em> stilaan op een <a href="https://thenewstack.io/entering-ai-autumn-why-llms-are-nearing-their-limit/">aantal limieten</a> botsen.</p>



<p class="justify-text">In een <a href="/ai-agents-voordelen-uitdagingen-en-usecases/" data-type="post" data-id="22407">vorige blogpost over Agents</a> legde mijn collega Bert reeds kort uit wat een Agentic IDE is. Kort herhaald: een zogenaamde <em>agent </em>is een stukje AI dat (semi-)autonoom allerlei zaken kan doen (zoals b.v. tekstbestanden editeren; de voornaamste bezigheid bij het programmeren). Een <em>Integrated Development Environment </em>of <em>IDE </em>kennen we reeds: dat is de software die we gebruiken om code te schrijven, bestaande uit een tekst editor en daarnaast alle mogelijke extra tools om de code te compileren, uit te voeren, te refactoren, &#8230; , noem maar op. Mijn favoriete IDE is b.v. <a href="https://www.jetbrains.com/idea/">Intellij IDEA</a>.</p>



<p class="justify-text">De term <em>Agentic IDE</em> slaat dan op een IDE, die, als een van de extra geïntegreerde tools, de functionaliteit zal bevatten om via het gebruik van AI allerlei zaken in jouw plaats te gaan doen. Typisch krijg je dan binnen de IDE een venster om te chatten met dit AI, en zal dit voor jou aan de slag gaan wanneer je er iets aan hebt gevraagd. Het grote verschil met de meer eenvoudige AI-assistants is dat de agent daarbij zowat alle functionaliteit van de IDE kan gebruiken: allerlei bestanden editeren (niet enkel het bestand waar je zelf op dat moment in werkt), de code compileren en runnen, of zelfs uitrollen op een server, terminal commando&#8217;s uitvoeren, enz. Op deze manier werken, door enkel in het chatvenster te praten en de agent de rest te laten doen, noemen we het zogenaamde <em>vibe coding</em>.</p>



<h2 class="wp-block-heading">Een paar voorbeelden</h2>



<p class="justify-text">Met een klein beetje zoekwerk op het internet vinden we algauw een aantal voorbeelden van Agentic IDEs.</p>



<ul class="wp-block-list">
<li class="justify-text"><a href="https://bolt.new/">https://bolt.new/</a> draait volledig op het web, en laat toe om volledige webtoepassingen te bouwen op basis van een prompt. Het platform is erg populair, zelfs al zijn er soms toch meerdere pogingen nodig (en dus toch eerder een hele conversatie dan één enkele prompt) om tot het beoogde resultaat te komen. Deze (niet volledig functionele) webshop, werd bijvoorbeeld na een conversatie met 5 complexer wordende prompts gebouwd: <a href="https://starlit-melba-287efe.netlify.app/products">https://starlit-melba-287efe.netlify.app/products</a> .</li>



<li class="justify-text">GitHub CoPilot is allicht een van de bekendste. Deze geeft de IDE Visual Studio Code (VS Code) een nieuw elan met een AI dat voor je werkt, een beetje zoals &#8220;pair programming&#8221;. <a href="https://github.com/features/copilot">GitHub Copilot Studio</a>.</li>



<li class="justify-text">Codeium WindSurf, nog een andere Agentic IDE gebaseerd op VS Code, bespreken we verderop in iets meer detail. <a href="https://windsurf.com/editor">https://windsurf.com/editor</a> . WindSurf wordt momenteel overgenomen door OpenAI.</li>



<li class="justify-text">Ook <a href="https://www.cursor.com/">Cursor</a> is een IDE gebaseerd op VS Code en één van de meer bekende en populaire Agentic IDEs.</li>



<li class="justify-text"><a href="https://cline.bot/">https://cline.bot/</a> . Gebaseerd op &#8211; opnieuw &#8211; VS Code, en open source.</li>



<li class="justify-text">De lijst gaat verder: Lovable, V0, Replit Agent, Devin, Trae, &#8230;</li>



<li class="justify-text"><em>New kid on the block</em> (pas sinds enkele weken algemeen beschikbaar): <a href="https://www.jetbrains.com/junie/">IntelliJ Junie</a>. Voor ons zeker interessant om in de toekomst nog verder uit te testen, aangezien hij is gebaseerd op IntelliJ IDEA.</li>
</ul>



<h2 class="wp-block-heading">Getest: Codeium WindSurf</h2>



<p class="justify-text">Voor ik begon te testen met Codeium&#8217;s IDE, had ik nauwelijks ervaring met VS Code, de IDE waar Windsurf op is gebaseerd; dit bleek echter geen probleem! Na de installatie kreeg ik een idee voor een erg eenvoudige test: ik vroeg de IDE om voor mij een kleine tool te schrijven in Java, die zou gaan inloggen op confluence en op een bepaalde pagina de gegevens van een tabel uitlezen. Vervolgens zou de tool deze data in een nieuw Excel bestand gieten en dit opslaan op mijn pc.</p>



<p class="justify-text">De tool schoot goed uit de startblokken, maar er waren enkele euvels te overkomen. Het inloggen in confluence werkte b.v. niet met de inloggegevens die Windsurf mij tijdens de initiële conversatie had gevraagd te voorzien. Na een kleine opzoeking op confluence zelf, had ik een idee van hoe het inloggen op de site moest werken voor geprogrammeerde tools, en kon ik dit aan WindSurf vertellen. De IDE maakte <em>prompt </em>de nodige wijzigingen en daarna werkte het wel. Na nog een kleine conversatie om wat details van de toepassing naar mijn wensen te krijgen, had ik, al bij al op een uurtje, een werkende versie van mijn gevraagde tool.</p>



<figure class="wp-block-image size-large"><a href="/wp-content/uploads/2025/05/windsurf.png"><img loading="lazy" decoding="async" width="1024" height="603" src="/wp-content/uploads/2025/05/windsurf-1024x603.png" alt="" class="wp-image-22550" srcset="https://www.smalsresearch.be/wp-content/uploads/2025/05/windsurf-1024x603.png 1024w, https://www.smalsresearch.be/wp-content/uploads/2025/05/windsurf-300x177.png 300w, https://www.smalsresearch.be/wp-content/uploads/2025/05/windsurf-768x452.png 768w, https://www.smalsresearch.be/wp-content/uploads/2025/05/windsurf.png 1229w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a><figcaption class="wp-element-caption">De WindSurf IDE in actie</figcaption></figure>



<p class="justify-text">Een tweede test, waarbij ik een grotere toepassing vroeg in verschillende componenten (API server + web frontend, enz.), ben ik gestaakt wegens een gebrek aan credits in de gratis versie. Het bleek wel dat een agentic IDE hier wat het overzicht kwijtraakt en steken laat vallen door de omvang van het project.</p>



<p class="justify-text">Als derde test ging ik, gewapend met een commerciële licentie en ondersteund door een bekwame architect, aan de slag op bestaande code van een legacy project. Het betreft een vrij oud Java project met een monolitische structuur en verouderde afhankelijkheden en werkwijzen. Althans, dat was een deel van het gegeven. De toepassing wordt momenteel herschreven bij Smals, en een deel van de nieuwe code was ook reeds beschikbaar. Het doel van de test was om WindSurf een volledige feature te laten toevoegen in de nieuwe broncode, gebaseerd op al deze reeds bestaande code (legacy + nieuw).</p>



<p class="justify-text">De nieuwe architectuur van deze toepassing was extreem modulair (een zogenaamde onion architecture) en we moesten de IDE geregeld bijsturen omdat deze niet in alle modules tegelijk de juiste toevoegingen en wijzigingen voorzag. Op een bepaald moment moesten we hem ook manueel wat op weg helpen bij de zoektocht naar een stukje functionaliteit in de oude versie van het project, om dit te kunnen herimplementeren in de nieuwe versie. Maar al bij al hadden we na twee uur vibe coding de feature toegevoegd; iets wat anders een vervelend en repetitief (doch niet op een traditionele manier te automatiseren) karwei zou zijn voor een developer.</p>



<h2 class="wp-block-heading">Hoe kan het nu nóg beter?</h2>



<p class="justify-text">Zoals we in de vorige sectie zagen, bieden agentic IDEs heel wat mogelijkheden om programmeerwerk in te korten en deels te automatiseren, maar verloopt het toch niet altijd van een leien dakje, omdat de agent zich vergist, de dingen niet precies doet hoe we willen, of zaken vergeet te doen. Misschien een beetje zoals een onervaren programmeur? Het probleem stelt zich ook des te meer naarmate het project groter wordt.</p>



<p class="justify-text">We vragen ons dan uiteraard af: hoe kunnen we dit verbeteren? We zijn echter niet alleen; <a href="https://nmn.gl/blog/ai-understand-senior-developer">op het web</a> hebben reeds andere mensen hierover nagedacht, en deze bevestigen wat we reeds vermoedden: er moet meer en betere context worden voorzien om de agent wegwijs te maken in wat we eigenlijk willen. Dit kan op verschillende manieren: je kan een lijst zaken toevoegen aan de prompt, en/of je voorziet een bestand in het project, met een waslijst aan extra instructies, en/of je voegt in elke folder van een bestaand project een bestand toe met nuttige info over die folder, en je doet dit op een hiërarchische manier voor subfolders. Eigenlijk is dit een soort van bewegwijzering van je project, op maat van het AI.</p>



<p class="justify-text">Het is uiteraard wel een pak werk, al die context voorzien. Maar niet getreurd: het is waarschijnlijk goed mogelijk om het AI dit eerst zelf te laten doen in een voorbereidende stap. Ondertussen zijn er zelfs al <a href="https://gigamind.dev/context">commerciële tools hiervoor</a> te vinden, die eveneens als agents optreden en hiervoor op de achtergrond óók van een LLM gebruik maken.</p>



<p class="justify-text">Bestaande code documenteren en beter begrijpbaar maken op deze manier, is nuttig voor een Agentic IDE, maar ook voor menselijke developers! Dit wordt de volgende onderzoekspiste in wat AI kan doen voor het programmeren&#8230;</p>



<h2 class="wp-block-heading">Conclusie</h2>



<figure class="wp-block-image alignleft size-full is-resized"><a href="/wp-content/uploads/2025/05/computers.png"><img loading="lazy" decoding="async" width="576" height="864" src="/wp-content/uploads/2025/05/computers.png" alt="" class="wp-image-22553" style="width:239px;height:auto" srcset="https://www.smalsresearch.be/wp-content/uploads/2025/05/computers.png 576w, https://www.smalsresearch.be/wp-content/uploads/2025/05/computers-200x300.png 200w" sizes="auto, (max-width: 576px) 100vw, 576px" /></a></figure>



<p class="justify-text">Agentic IDEs zijn momenteel de ultieme incarnatie van door AI geassisteerd programmeren. Ze gaan een stuk verder dan enkel assisteren en kunnen in jouw plaats coderen, alsof je tegen een (onervaren) developer praat en deze voor jou het werk doet. Vibe Coding kan in de nabije toekomst een heel stuk van ons werk overnemen!</p>



<p class="justify-text">De enige nuance, die we eigenlijk altijd moeten maken bij AI: het is geen magie, het weet niet vanzelf <em>precies </em>wat er moet gebeuren, en je zal moeten bijsturen en context geven. <em>Garbage in &#8211; Garbage out</em>.</p>



<p class="justify-text">Er is dus zeker nog ruimte voor verbetering , maar als we zien hoe snel de technologie evolueert, zou die wel eens snel kunnen komen&#8230;</p>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow"></div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow"></div>
</div>
</div>
</div>


]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Code hérité: meilleures pratiques &#038; IA</title>
		<link>https://www.smalsresearch.be/code-herite-meilleures-pratiques-ia/</link>
		
		<dc:creator><![CDATA[Koen Vanderkimpen]]></dc:creator>
		<pubDate>Wed, 25 Sep 2024 11:31:00 +0000</pubDate>
				<category><![CDATA[[FR]]]></category>
		<category><![CDATA[Blog post]]></category>
		<category><![CDATA[Artificial intelligence]]></category>
		<category><![CDATA[EDA]]></category>
		<category><![CDATA[legacy]]></category>
		<category><![CDATA[methodology]]></category>
		<category><![CDATA[Productivity]]></category>
		<category><![CDATA[software design]]></category>
		<category><![CDATA[software engineering]]></category>
		<category><![CDATA[technical debt]]></category>
		<guid isPermaLink="false">/?p=21169</guid>

					<description><![CDATA[Dans ce blog, nous discutons de plusieurs stratégies générales pour gérer le code hérité, et nous donnons un aperçu de ce que l'intelligence artificielle peut encore y ajouter.]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image alignleft size-full is-resized"><a href="/wp-content/uploads/2024/09/brain-code-image.png"><img loading="lazy" decoding="async" width="1024" height="1024" src="/wp-content/uploads/2024/09/brain-code-image.png" alt="" class="wp-image-21152" style="width:338px;height:auto" srcset="https://www.smalsresearch.be/wp-content/uploads/2024/09/brain-code-image.png 1024w, https://www.smalsresearch.be/wp-content/uploads/2024/09/brain-code-image-150x150.png 150w, https://www.smalsresearch.be/wp-content/uploads/2024/09/brain-code-image-300x300.png 300w, https://www.smalsresearch.be/wp-content/uploads/2024/09/brain-code-image-768x768.png 768w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></figure>



<p><a href="/legacy-code-trotseren-best-practices-ai/"><em>Nederlandstalige Versie</em></a></p>



<p class="has-black-color has-text-color has-link-color wp-elements-cd97f2ccfcf37b961a4d14b734b19e33">Dans le monde en perpétuelle évolution du développement logiciel, le code hérité est un sujet souvent abordé, mais finalement très peu compris. Le code hérité peut être défini de différentes manières, mais pour cette discussion, nous considérons qu&#8217;il s&#8217;agit de <em>tout code qui est encore utilisé par une application importante, mais qui devrait être mis à niveau</em>. Il se peut qu&#8217;un nouveau style architectural ou de nouvelles normes soient nécessaires, que des cadres obsolètes soient encore utilisés ou que le code soit écrit dans un langage de programmation qui n&#8217;est plus pris en charge. Ou alors le code n&#8217;est pas travaillé à la base, et se retrouve donc trop souvent pollué de correctifs rapides. En d&#8217;autres termes, il s&#8217;agit d&#8217;un code devenant de plus en plus difficile à maintenir et qui doit être réécrit, mais qui, pour une raison ou une autre, n&#8217;est pas pris en main. Certains parlent également de dette technique <a>(<em>technical debt</em>)</a>.</p>



<p class="justify-text">Et si nous allions plus loin en essayant non seulement de gérer ce code, mais en plus de l&#8217;améliorer de manière proactive&nbsp;? Pouvons-nous utiliser de nouvelles technologies comme l&#8217;IA pour y parvenir&nbsp;?</p>



<span id="more-21169"></span>



<h3 class="wp-block-heading"><strong>Pourquoi le Code hérité est un problème</strong></h3>



<figure class="wp-block-image alignright size-full is-resized"><a href="/wp-content/uploads/2024/09/technical-debt-imge.png"><img loading="lazy" decoding="async" width="1024" height="1024" src="/wp-content/uploads/2024/09/technical-debt-imge.png" alt="" class="wp-image-21156" style="width:338px;height:auto" srcset="https://www.smalsresearch.be/wp-content/uploads/2024/09/technical-debt-imge.png 1024w, https://www.smalsresearch.be/wp-content/uploads/2024/09/technical-debt-imge-150x150.png 150w, https://www.smalsresearch.be/wp-content/uploads/2024/09/technical-debt-imge-300x300.png 300w, https://www.smalsresearch.be/wp-content/uploads/2024/09/technical-debt-imge-768x768.png 768w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></figure>



<p class="justify-text">Le code hérité entraîne un certain nombre de défis. Le plus important d&#8217;entre eux est probablement le fait qu&#8217;il ralentit le développement et rend la maintenance difficile, ou qu&#8217;il nécessite des connaissances spécialisées et des outils obsolètes. Sans les connaissances et les outils adéquats, il peut représenter un coût énorme pour tout éditeur de logiciels. De plus, si les développeurs qui ont écrit le code original ont également quitté l&#8217;entreprise, le problème peut se révéler encore plus grave. En parlant des développeurs, c&#8217;est également la <a href="https://stackoverflow.blog/2024/07/24/developers-want-more-more-more-the-2024-results-from-stack-overflow-s-annual-developer-survey/">&nbsp;dette technique qui constitue l&#8217;un des plus grands désagréments dans leur travail</a>.</p>



<p class="justify-text">Il existe heureusement plusieurs façons de relever ces défis, même en utilisant les technologies les plus avancées, telles que l&#8217;intelligence artificielle.</p>



<h2 class="wp-block-heading"><strong>Stratégies de gestion du code hérité</strong></h2>



<p class="justify-text">Il n&#8217;existe malheureusement pas de solution magique permettant de résoudre tous les problèmes liés aux code hérité en une seule fois. Il faut adopter une approche polyvalente faisant appel à plusieurs tactiques à la fois. Pensons à l&#8217;analyse du code, à la construction de nouveaux composants de manière modulaire et à la maintenance continue de la base de code pour s&#8217;assurer qu&#8217;elle reste à jour et bien adaptée aux besoins futurs.</p>



<p class="justify-text">Une première étape consiste à effectuer une <strong>analyse statique</strong>. Il s&#8217;agit d&#8217;examiner le code sans l&#8217;exécuter afin d&#8217;identifier les problèmes potentiels tels que les dépendances, les failles de sécurité ou les <a href="https://refactoring.guru/refactoring/smells">&#8220;code smells&#8221;</a>. En utilisant des outils d&#8217;analyse statique, les développeurs peuvent mieux comprendre la structure du code et identifier les zones problématiques à améliorer. Ces outils sont en partie intégrés dans un bon environnement de développement, mais il est souvent possible de leur ajouter une puissance supplémentaire.</p>



<p class="justify-text">Après l&#8217;analyse du code, il est essentiel de <strong>mettre en place des bancs d&#8217;essai</strong>, conformément au paradigme du <em><a href="https://en.wikipedia.org/wiki/Test-driven_development">Test Driven Development</a></em> (TDD). Cela permet de créer un environnement sûr dans lequel divers tests peuvent être exécutés afin de garantir que le code se comporte comme prévu. Les tests sont essentiels pour détecter rapidement les bogues et les problèmes de performance, avant que des changements ne soient apportés. Par ailleurs, si la couverture des tests est suffisante, il devient beaucoup plus sûr de remanier le code, ce que nous devons continuer à faire tout au long du cycle de vie afin de veiller à ce que le code continue d’être amélioré et n&#8217;atteigne surtout pas le <em>legacy status</em>. La mise en place de bancs d&#8217;essai soutient en outre les processus d’intégration et de déploiement continus (CI/CD)), qui sont essentiels pour la gestion de la qualité à long terme.</p>



<p class="justify-text">Une autre stratégie importante consiste à remanier le code pour le rendre <strong>modulaire</strong>. En <a href="/van-n-tier-naar-microservices/">décomposant une base de code monolithique en modules plus petits et plus faciles à gérer</a>, les développeurs peuvent isoler les fonctionnalités, ce qui rend le code plus facile à comprendre, à maintenir et à tester (et peut-être même à réécrire). Cette <a href="/ecosysteem-architectuur/">modularisation</a> permet également à différentes équipes de travailler simultanément sur différentes parties de la base de code, ce qui augmente la productivité et réduit la probabilité d&#8217;erreurs.</p>



<h2 class="wp-block-heading"><strong>Le rôle de l&#8217;IA dans la gestion de code hérité</strong></h2>



<p class="justify-text">L&#8217;intelligence artificielle offre de nouvelles possibilités pour la gestion de code hérité, en particulier aujourd&#8217;hui, avec l&#8217;évolution rapide de l&#8217;<a href="/llms-pour-code/"><em>IA générative</em></a>. Bien que les capacités actuelles de l&#8217;IA soient souvent limitées à des tâches à petite échelle, son potentiel de transformation de la gestion du code hérité est considérable. L&#8217;IA peut aider à analyser le code, à écrire des tests, à remanier et même à générer de la documentation. Cela fait de l&#8217;IA un outil précieux pour les développeurs.</p>



<ul class="wp-block-list">
<li class="justify-text"><strong>Analyser le code&nbsp;:</strong> Les outils d&#8217;IA peuvent analyser le code pour en déterminer la structure et la fonctionnalité, ce qui permet d&#8217;obtenir des informations qui ne sont pas forcément évidentes pour les développeurs humains. Cela peut s&#8217;avérer particulièrement utile lorsqu&#8217;il s&#8217;agit de systèmes hérités complexes ou mal documentés.</li>



<li class="justify-text"><strong>Rédaction de tests&nbsp;:</strong> L&#8217;IA peut également aider à générer automatiquement des tests basés sur le comportement du code, ce qui permet de gagner du temps et d&#8217;améliorer la qualité du code en identifiant les cas marginaux qui pourraient être négligés lors des tests manuels.</li>



<li class="justify-text"><strong>Refonte du code&nbsp;:</strong> Les outils pilotés par l&#8217;IA peuvent suggérer des améliorations et aider les développeurs à remanier le code graduellement. Ce processus de remaniement continu permet de garder la base de code propre et maintenable, réduisant ainsi la dette technique au fil du temps.</li>



<li class="justify-text"><strong>Génération de documentation&nbsp;:</strong> L&#8217;IA peut automatiquement générer et actualiser la documentation dans le cadre de CI/CD, ce qui est particulièrement utile dans les grands projets où la maintenance de la documentation peut être un défi.</li>
</ul>



<p>Ces tâches peuvent principalement être effectuées par le même type d&#8217;outils d&#8217;IA&nbsp;: les assistants de codage. &nbsp;<a href="https://www.codacy.com/">Codacy</a>,&nbsp;<a href="https://snyk.io/platform/deepcode-ai/">Snyk</a>&nbsp;et, bien entendu,&nbsp;<a href="https://github.com/features/copilot">github CoPilot</a> en sont quelques exemples.</p>



<h2 class="wp-block-heading"><strong>Conclusion&nbsp;: l&#8217;avenir de la gestion de code hérité grâce à l&#8217;IA</strong></h2>



<p class="justify-text">La gestion de code hérité reste un défi complexe qui nécessite une approche stratégique. Cependant, l&#8217;émergence de l&#8217;IA en tant qu&#8217;outil d&#8217;analyse, de test et de remaniement du code offre des possibilités de relever ce défi de manière plus efficace et plus rentable. L&#8217;évolution de la technologie de l&#8217;IA générative est encore en plein essor, et son rôle dans la gestion de code hérité ne fera probablement que s&#8217;accroître, offrant davantage de possibilités d&#8217;améliorer les processus de développement de logiciels.</p>



<figure class="wp-block-image aligncenter size-full is-resized is-style-default"><a href="/wp-content/uploads/2024/09/two-hands.png"><img loading="lazy" decoding="async" width="1024" height="1024" src="/wp-content/uploads/2024/09/two-hands.png" alt="" class="wp-image-21160" style="width:455px;height:auto" srcset="https://www.smalsresearch.be/wp-content/uploads/2024/09/two-hands.png 1024w, https://www.smalsresearch.be/wp-content/uploads/2024/09/two-hands-150x150.png 150w, https://www.smalsresearch.be/wp-content/uploads/2024/09/two-hands-300x300.png 300w, https://www.smalsresearch.be/wp-content/uploads/2024/09/two-hands-768x768.png 768w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></figure>



<p class="justify-text">Toutefois, il ne faut pas non plus se focaliser sur l&#8217;IA&nbsp;: le meilleur remède contre le code hérité est encore de l&#8217;éviter, et ce, en appliquant les bonnes tactiques tout au long du cycle de vie du développement logiciel afin de maintenir la conception et le code aussi propres et à jour que possible. Dans un prochain article de blog, nous examinerons cette question plus en détail, en zoomant sur les différentes phases du cycle de vie afin de discuter de la manière d&#8217;éviter le code hérité et de la façon dont l&#8217;IA peut être utilisée au cours de chaque phase en vue d&#8217;y contribuer.</p>



<p></p>


]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Legacy Code Trotseren: Best Practices &#038; AI</title>
		<link>https://www.smalsresearch.be/legacy-code-trotseren-best-practices-ai/</link>
		
		<dc:creator><![CDATA[Koen Vanderkimpen]]></dc:creator>
		<pubDate>Wed, 25 Sep 2024 11:30:00 +0000</pubDate>
				<category><![CDATA[[NL]]]></category>
		<category><![CDATA[Blog post]]></category>
		<category><![CDATA[Artificial intelligence]]></category>
		<category><![CDATA[EDA]]></category>
		<category><![CDATA[legacy]]></category>
		<category><![CDATA[methodology]]></category>
		<category><![CDATA[Productivity]]></category>
		<category><![CDATA[software design]]></category>
		<category><![CDATA[software engineering]]></category>
		<category><![CDATA[technical debt]]></category>
		<guid isPermaLink="false">/?p=21131</guid>

					<description><![CDATA[In deze blog bespreken we een aantal algemene strategieën om met legacy code om te gaan, en geven we een overzicht van wat artificiële intelligentie daar nog aan kan toevoegen.]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image alignleft size-full is-resized"><a href="/wp-content/uploads/2024/09/brain-code-image.png"><img loading="lazy" decoding="async" width="1024" height="1024" src="/wp-content/uploads/2024/09/brain-code-image.png" alt="" class="wp-image-21152" style="width:338px;height:auto" srcset="https://www.smalsresearch.be/wp-content/uploads/2024/09/brain-code-image.png 1024w, https://www.smalsresearch.be/wp-content/uploads/2024/09/brain-code-image-150x150.png 150w, https://www.smalsresearch.be/wp-content/uploads/2024/09/brain-code-image-300x300.png 300w, https://www.smalsresearch.be/wp-content/uploads/2024/09/brain-code-image-768x768.png 768w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></figure>



<p><em><a href="/code-herite-meilleures-pratiques-ia/">Version française</a></em></p>



<p class="justify-text">In de steeds veranderende wereld van softwareontwikkeling is legacy code een onderwerp dat vaak ter sprake komt, maar zelden goed wordt begrepen. Legacy code kan op verschillende manieren worden gedefinieerd, maar voor deze discussie beschouwen we ze als <em>elke code die nog steeds wordt gebruikt door een belangrijke toepassing, maar die zou moeten worden geüpgraded</em>. Misschien zijn er een nieuwe architectuurstijl of standaarden nodig, worden er nog verouderde frameworks gebruikt, of is de code geschreven in een niet langer ondersteunde programmeertaal. Of er is al te vaak niet meer ten gronde aan de code gewerkt en ze is vervuild geraakt met snelle fixes. Met andere woorden, het is code die steeds moeilijker te onderhouden wordt en die opnieuw moet worden geschreven, maar om een of andere reden niet wordt aangepakt. Sommigen noemen dit ook wel eens <em>technical debt</em>.</p>



<p class="justify-text">Maar wat nu als we een stap verder gaan en deze code niet alleen proberen te beheersen, maar ook proactief verbeteren? En kunnen we hierbij gebruik maken van nieuwe technologieën zoals AI?</p>



<span id="more-21131"></span>



<h3 class="wp-block-heading">Waarom Legacy-Code een Probleem Is</h3>



<figure class="wp-block-image alignright size-full is-resized"><a href="/wp-content/uploads/2024/09/technical-debt-imge.png"><img loading="lazy" decoding="async" width="1024" height="1024" src="/wp-content/uploads/2024/09/technical-debt-imge.png" alt="" class="wp-image-21156" style="width:338px;height:auto" srcset="https://www.smalsresearch.be/wp-content/uploads/2024/09/technical-debt-imge.png 1024w, https://www.smalsresearch.be/wp-content/uploads/2024/09/technical-debt-imge-150x150.png 150w, https://www.smalsresearch.be/wp-content/uploads/2024/09/technical-debt-imge-300x300.png 300w, https://www.smalsresearch.be/wp-content/uploads/2024/09/technical-debt-imge-768x768.png 768w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></figure>



<p class="justify-text">Legacy code brengt tal van uitdagingen met zich mee. De grootste daarvan is waarschijnlijk het feit dat ze de ontwikkeling vertraagt en onderhoud bemoeilijkt; of ze vraagt gespecialiseerde kennis van voorbijgestreefde hulpmiddelen. Zonder de juiste kennis en tools kan dit een gigantische kostenpost worden voor elk softwarebedrijf. Als de ontwikkelaars die de oorspronkelijke code schreven, bovendien ook nog het bedrijf verlaten hebben, kan het probleem nog groter worden. Over de ontwikkelaars gesproken: ook voor hen is <a previewlistener="true" href="https://stackoverflow.blog/2024/07/24/developers-want-more-more-more-the-2024-results-from-stack-overflow-s-annual-developer-survey/">technical debt een van de grootste ergernissen bij hun werk</a>.</p>



<p class="justify-text">Er zijn gelukkig een aantal manieren om met deze uitdagingen om te gaan, zelfs met behulp van de meest geavanceerde technologieën, zoals kunstmatige intelligentie.</p>



<h2 class="wp-block-heading">Strategieën om Legacy Code te beheren</h2>



<p class="justify-text">Er bestaat, jammer genoeg, geen magische oplossing die alle problemen met legacy code in een keer oplost. Het vereist een veelzijdige aanpak waarbij meerdere taktieken tegelijkertijd worden toegepast. Denk aan het analyseren van de code, het modulair opbouwen van nieuwe componenten en het continu onderhouden van de codebase, om ervoor te zorgen dat deze up-to-date blijft en goed is aangepast aan toekomstige behoeften.</p>



<p class="justify-text">Een eerste stap is het uitvoeren van <strong>statische analyse</strong>. Hierbij wordt de code onderzocht zonder deze daadwerkelijk uit te voeren, om zo potentiële problemen te identificeren zoals afhankelijkheden, beveiligingslekken, of <a previewlistener="true" href="https://refactoring.guru/refactoring/smells">zogenaamde ‘code smells’</a>. Met behulp van statische analysetools kunnen ontwikkelaars de structuur van de code beter begrijpen en probleemgebieden aanwijzen die verbetering behoeven. Deze tools zijn voor een deel ingebakken in een goede IDE, maar je kan er vaak nog extra kracht aan toevoegen.</p>



<p class="justify-text">Nadat de code is geanalyseerd, is het <strong>opzetten van testbanken</strong> essentieel, volgens het <a previewlistener="true" href="https://en.wikipedia.org/wiki/Test-driven_development">Test Driven Development</a> (TDD) paradigma. Dit creëert een veilige omgeving waarin verschillende tests kunnen worden uitgevoerd om ervoor te zorgen dat de code zich gedraagt zoals verwacht. Testen is cruciaal om bugs en prestatieproblemen vroegtijdig op te sporen, voordat er wijzigingen worden doorgevoerd. Als er voldoende test coverage is, wordt het trouwens een stuk veiliger om de code te refactoren, hetgeen we tijdens de volledige levenscyclus zullen moeten blijven doen, om ervoor te zorgen dat de code steeds beter wordt en zeker geen legacy status krijgt. Het opzetten van testbanken ondersteunt daarnaast ook continuous integration en deployment (CI/CD) processen, die essentieel zijn voor kwaliteitsbeheer op lange termijn.</p>



<p class="justify-text">Een andere belangrijke strategie is het refactoren van de code om deze <strong>modulair</strong> te maken. Door een monolithische codebase <a href="/van-n-tier-naar-microservices/" data-type="post" data-id="9702">op te splitsen in kleinere, beter beheersbare modules</a>, kunnen ontwikkelaars functionaliteiten isoleren, wat de code gemakkelijker maakt om te begrijpen, te onderhouden en te testen (en eventueel zelfs om ze te herschrijven). Deze <a href="/ecosysteem-architectuur/" data-type="post" data-id="16980">modularisatie</a> stelt verschillende teams ook in staat om tegelijkertijd aan verschillende onderdelen van de codebase te werken, wat de productiviteit verhoogt en de kans op fouten vermindert.</p>



<h2 class="wp-block-heading">De rol van AI in het aanpakken van Legacy Code</h2>



<p class="justify-text">Kunstmatige intelligentie biedt nieuwe mogelijkheden voor het beheren van legacy code, zeker nu, met de snelle evolutie van <em><a href="/llms-voor-code/" data-type="post" data-id="18875">generatieve AI</a></em>. Hoewel de huidige mogelijkheden van AI vaak beperkt zijn tot kleinschalige taken, is het potentieel om legacy codebeheer te transformeren aanzienlijk. AI kan helpen bij het analyseren van code, het schrijven van tests, het refactoren en zelfs bij het genereren van documentatie. Dit maakt AI een waardevol hulpmiddel voor ontwikkelaars.</p>



<ul class="wp-block-list">
<li class="justify-text"><strong>Code Analyseren</strong>: AI-tools kunnen code analyseren om de structuur en functionaliteit te bepalen, waardoor inzichten ontstaan die mogelijk niet direct duidelijk zijn voor menselijke ontwikkelaars. Dit kan vooral nuttig zijn bij het omgaan met complexe of slecht gedocumenteerde legacy-systemen.</li>



<li class="justify-text"><strong>Tests Schrijven</strong>: AI kan ook helpen bij het automatisch genereren van tests op basis van het gedrag van de code, wat tijd bespaart en de codekwaliteit verbetert door randgevallen te identificeren die tijdens handmatige tests over het hoofd kunnen worden gezien.</li>



<li class="justify-text"><strong>Code Refactoren</strong>: AI-gestuurde tools kunnen verbeteringen voorstellen en ontwikkelaars helpen om code stapsgewijs te refactoren. Dit continue refactoringsproces helpt om de codebase schoon en onderhoudbaar te houden, waardoor technische schuld in de loop van de tijd wordt verminderd.</li>



<li class="justify-text"><strong>Documentatie Genereren</strong>: AI kan automatisch up-to-date documentatie genereren en bijhouden als onderdeel van CI/CD, wat vooral nuttig is in grote projecten waar het bijhouden van documentatie een uitdaging kan zijn.</li>
</ul>



<p>Deze taken kunnen veelal worden uitgevoerd door dezelfde type AI tools: de zogenaamde <em>code assistants</em>. Een aantal voorbeelden zijn <a href="https://www.codacy.com/">Codacy</a>, <a href="https://snyk.io/platform/deepcode-ai/">Snyk</a> en, uiteraard, <a href="https://github.com/features/copilot">github copilot</a>.</p>



<h2 class="wp-block-heading">Conclusie: de toekomst van legacy codebeheer met AI</h2>



<p class="justify-text">Het beheren van legacy code blijft een complexe uitdaging die een strategische aanpak vereist. Maar met de opkomst van AI als hulpmiddel bij het analyseren, testen en refactoren van code, ontstaan er mogelijkheden om deze uitdaging op een meer efficiënte en kosteneffectieve manier aan te pakken. Generatieve AI-technologie is nog in volle ontwikkeling, en haar rol in legacy codebeheer zal waarschijnlijk alleen maar toenemen, wat nog meer kansen biedt voor het verbeteren van softwareontwikkelingsprocessen.</p>



<figure class="wp-block-image aligncenter size-full is-resized is-style-default"><a href="/wp-content/uploads/2024/09/two-hands.png"><img loading="lazy" decoding="async" width="1024" height="1024" src="/wp-content/uploads/2024/09/two-hands.png" alt="" class="wp-image-21160" style="width:455px;height:auto" srcset="https://www.smalsresearch.be/wp-content/uploads/2024/09/two-hands.png 1024w, https://www.smalsresearch.be/wp-content/uploads/2024/09/two-hands-150x150.png 150w, https://www.smalsresearch.be/wp-content/uploads/2024/09/two-hands-300x300.png 300w, https://www.smalsresearch.be/wp-content/uploads/2024/09/two-hands-768x768.png 768w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></figure>



<p class="justify-text">We mogen ons echter ook niet blind staren op AI: het beste medicijn tegen legacy code is ze te voorkomen, en dit door gedurende de volledige softwareontwikkelingslevenscyclus de juiste taktieken toe te passen om het ontwerp en de code zo clean en up-to-date mogelijk te houden. In een toekomstige blogpost zullen we hier nog dieper op ingaan, waarbij we op de verschillende fasen van de levenscyclus inzoomen, om te bespreken hoe we legacy kunnen vermijden, en ook hoe AI tijdens elke fase kan worden ingezet als hulpmiddel daarbij.</p>



<p></p>


]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Méér EDA: stap voor stap Programmeren</title>
		<link>https://www.smalsresearch.be/meer-eda-stap-voor-stap-programmeren/</link>
					<comments>https://www.smalsresearch.be/meer-eda-stap-voor-stap-programmeren/#comments</comments>
		
		<dc:creator><![CDATA[Koen Vanderkimpen]]></dc:creator>
		<pubDate>Thu, 07 Dec 2023 13:30:35 +0000</pubDate>
				<category><![CDATA[[NL]]]></category>
		<category><![CDATA[Blog post]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[EDA]]></category>
		<category><![CDATA[Event]]></category>
		<category><![CDATA[Eventual Consistency]]></category>
		<category><![CDATA[methodology]]></category>
		<category><![CDATA[software design]]></category>
		<category><![CDATA[software engineering]]></category>
		<guid isPermaLink="false">/?p=19610</guid>

					<description><![CDATA[De voordelen van het gebruik van EDA zijn legio. Maar hoe gebruik je nu eigenlijk EDA in de praktijk? Wat als je al een enorm ecosysteem van toepassingen hebt die enkel en alleen via synchrone communicatie worden geïntegreerd en je nog nagenoeg geen business Events publiceert? In deze blog-post stellen we een methode voor om [&#8230;]]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image alignleft size-full is-resized"><a href="/wp-content/uploads/2022/12/EDA.png"><img loading="lazy" decoding="async" width="569" height="491" src="/wp-content/uploads/2022/12/EDA.png" alt="" class="wp-image-17967" style="width:153px;height:auto" srcset="https://www.smalsresearch.be/wp-content/uploads/2022/12/EDA.png 569w, https://www.smalsresearch.be/wp-content/uploads/2022/12/EDA-300x259.png 300w" sizes="auto, (max-width: 569px) 100vw, 569px" /></a></figure>



<p class="justify-text">De voordelen van het gebruik van EDA zijn legio. Maar hoe gebruik je nu eigenlijk EDA in de praktijk? Wat als je al een enorm ecosysteem van toepassingen hebt die enkel en alleen via synchrone communicatie worden geïntegreerd en je nog nagenoeg geen business Events publiceert? In deze blog-post stellen we een methode voor om een applicatie te laten evolueren om meer Events te gaan publiceren.</p>



<span id="more-19610"></span>



<p></p>



<p class="justify-text">Binnen de instellingen van de Sociale Zekerheid groeit het besef dat <a href="/de-vier-gezichten-van-eda/" data-type="post" data-id="17574">Event Driven Architecture</a> (EDA) erg nuttig kan zijn als onderdeel van de integratiestrategie (we hebben hierover reeds uitvoerig geblogd en de belangrijkste voordelen zijn ook samengevat in ons <a href="/webinar-eda/" data-type="post" data-id="19311">webinar van november</a>). We hebben in ons IT ecosysteem echter al een enorm groot aantal systemen en applicaties die hier nog niet noodzakelijk van gebruik maken. Het zou zonde zijn als we ons voor EDA enkel zouden focussen op nieuwe toepassingen &#8211; de belangrijkste business Events in het ecosysteem worden waarschijnlijk al gecapteerd door reeds bestaande diensten. Maar hoe kunnen we er dan voor zorgen dat deze Events effectief via EDA technologie &#8211; als effectieve IT Events &#8211; worden gepubliceerd en beschikbaar worden in het ecosysteem voor subscribers?</p>



<p class="justify-text">In deze blog zullen we een mogelijke stap voor stap benadering bekijken, waarmee we reeds bestaande toepassingen meer Event-Driven kunnen maken. Niet alleen maar door ze stelselmatig meer Events te laten publiceren (al zal dit een logische eerste stap zijn), maar ook door ze hun eigen Events te laten gebruiken.</p>



<p class="justify-text">Een noodzakelijke disclaimer hier, is dat het Event-Driven maken van toepassingen niet het enige is dat zal moeten gebeuren om te evolueren naar een ecosysteem met een ruim en matuur gebruik van EDA. Wat dit allemaal zou moeten inhouden (b.v. het opzetten van een goede Event Broker), staat momenteel nog ter discussie in onze innovatiewerkgroep, al kunnen we daaromtrent uiteraard onze mening geven in een toekomstige blog-post&#8230;</p>



<h2 class="wp-block-heading">Fase 1: Event-Publicatie, &#8220;Na de Feiten&#8221;</h2>



<p class="justify-text">De eerste stap in het refactoren van een bestaande toepassing is meteen ook de belangrijkste voor het ecosysteem: het publiceren van Events. We moeten dit in eerste instantie als een zuivere toevoeging aan de functionaliteiten beschouwen, zonder enige impact op de reeds bestaande. Daarom zullen we een Event pas publiceren &#8220;na de feiten&#8221;, i.e. nadat alle zaken die normaal gezien door de toepassing worden gedaan, reeds zijn uitgevoerd.</p>



<figure class="wp-block-image aligncenter size-full"><a href="/wp-content/uploads/2023/12/fase1.png"><img loading="lazy" decoding="async" width="915" height="430" src="/wp-content/uploads/2023/12/fase1.png" alt="" class="wp-image-19614" srcset="https://www.smalsresearch.be/wp-content/uploads/2023/12/fase1.png 915w, https://www.smalsresearch.be/wp-content/uploads/2023/12/fase1-300x141.png 300w, https://www.smalsresearch.be/wp-content/uploads/2023/12/fase1-768x361.png 768w" sizes="auto, (max-width: 915px) 100vw, 915px" /></a><figcaption class="wp-element-caption">Figuur 1: Een Event publiceren na al het andere werk.</figcaption></figure>



<p class="justify-text">Laten we kijken hoe we dit kunnen doen voor één Event (we kunnen dit uiteraard herhalen om de toepassing meerdere Events te laten publiceren). Beschouw het (informele) sequentiediagram in Fig. 1: een  bepaald commando komt binnen in de toepassing (normaal gezien <a href="/data-centric-it-met-rest/" data-type="post" data-id="9535">via een API</a>), en er is besloten dat dit aanleiding geeft tot het voorkomen van een bepaald business Event; we willen dit Event dan ook publiceren als gevolg van het ontvangen commando. De toepassing doet reeds ander werk (&#8220;Internal Work&#8221;) als gevolg van het commando, en het commando moet worden beschouwd als een transactie (zoals we zien in &#8220;Command Transaction&#8221;).</p>



<p class="justify-text">Om het Event te publiceren met een minimale impact op de werking van de toepassing, zullen we het (via het &#8220;EDA Subsystem&#8221;) publiceren nadat we de transactie hebben vervolledigd. In de praktijk zal dit b.v. kunnen door (bínnen de transactie) een extra taak in de toepassing te creëren in een aparte thread, die pas wordt uitgevoerd nadat de transactie is afgewerkt (de &#8220;publicatietaak&#8221;). Het creëren van deze taak zal een zo eenvoudig mogelijke instructie zijn in de programmatie, met een veel kleinere kans op falen dan het effectieve uitvoeren van de taak, en kunnen we daarom dus veilig binnen de transactie doen.</p>



<p class="justify-text">Wanneer dan, achteraf, de publicatietaak effectief wordt uitgevoerd, zal dit door het EDA subsysteem gebeuren, en zullen we dan effectief het Event publiceren (in eerste instantie kan dit als &#8220;mock&#8221;: een operatie zonder enig effect, later zullen we het Event effectief aanbieden aan de Event Broker). Aldus komt het Event terecht in het ecosysteem en kan men het nuttig beginnen gebruiken.</p>



<h2 class="wp-block-heading">Fase 2: Event-Publicatie, &#8220;In Transactie&#8221;</h2>



<p class="justify-text">In fase 1 hebben we, om een zo min mogelijke impact te hebben op de performantie en kans op falen van de transactie, een nogal gekunstelde manier moeten gebruiken om het Event te publiceren búiten de transactie om. Een logische volgende stap is dan ook om het publiceren van het Event onderdeel te laten uitmaken van de transactie. Bijgevolg zullen we dan ook garanderen dat, indien de transactie volledig wordt uitgevoerd, het Event ook wordt gepubliceerd. Dit kan een garantie zijn van groot belang voor de Event subscribers verderop in het ecosysteem, vanaf nu kan men erop rekenen dat álle Events van dat type de revue zullen passeren.</p>



<figure class="wp-block-image aligncenter size-full"><a href="/wp-content/uploads/2023/12/fase2.png"><img loading="lazy" decoding="async" width="1007" height="509" src="/wp-content/uploads/2023/12/fase2.png" alt="" class="wp-image-19616" srcset="https://www.smalsresearch.be/wp-content/uploads/2023/12/fase2.png 1007w, https://www.smalsresearch.be/wp-content/uploads/2023/12/fase2-300x152.png 300w, https://www.smalsresearch.be/wp-content/uploads/2023/12/fase2-768x388.png 768w" sizes="auto, (max-width: 1007px) 100vw, 1007px" /></a><figcaption class="wp-element-caption">Figuur 2: Event publiceren als deel van het werk.</figcaption></figure>



<p class="justify-text">Beschouw nu Fig. 2: het verschil met de vorige tekening is niet groot: we zien nu dat het EDA subsysteem wordt opgeroepen tijdens het uitvoeren van het normale werk als gevolg van het binnenkomende commando. Wanneer het Event is gepubliceerd én het andere werk is uitgevoerd, kan de transactie worden afgewerkt. Publicatie van het Event betekent dat we bevestiging hebben gekregen van de Event Broker dat het goed door deze is ontvangen, maar uiteraard niet noodzakelijk reeds naar de subscribers is gestuurd. Dit is net één van de voordelen van de asynchrone communicatie binnen EDA.</p>



<p class="justify-text">Bij deze fase moeten we er wel op letten dat we op een zeer betrouwbare Event Broker kunnen rekenen. Vermits deze online moet zijn om het Event in ontvangst te nemen tíjdens de transactie, zou de transactie worden geblokkeerd indien er daarbij een fout optreedt. Men zou dit als een nadeel kunnen beschouwen, maar we moeten er aan denken dat het Event kan worden gebruikt als plaatsvervanger van het eventuele rechtstreeks oproepen van alle subscribers, indien deze tijdig op de hoogte moeten worden gebracht van wat er wordt beoogd met het uitvoeren van de transactie. Indien men tijdens het verwerken van het commando normaal gezien beroep deed op achterliggende APIs van andere systemen, kan men deze andere systemen nu in plaats daarvan inschrijven op het Event, waardoor deze API calls niet meer hoeven gebeuren en onze toepassing dus niet langer afhankelijk is van de achterliggende. Op deze manier vermínderen we de kans op falen van de transactie indien de Event Broker betrouwbaarder wordt gemaakt dan de andere achterliggende systemen.</p>



<h2 class="wp-block-heading">Fase 3: Event-First Programming, Transactioneel</h2>



<p class="justify-text">Tot nu toe waren onze wijzigingen in de oorspronkelijke toepassing vrij conservatief: het doel was een reeds bestaand systeem Events te laten publiceren ten voordele van het grotere ecosysteem (we zagen daarbij dat dit in principe kan leiden tot het verminderen van het gebruik van APIs van andere systemen en op die manier tot minder afhankelijkheden).</p>



<p class="justify-text">Vanaf fase 3 zullen we echter ook de eigen toepassing gebruik laten maken van de eigen Events, alvorens, als gevolg van het ontvangen van deze Events, het normale werk te doen. Dit noem ik Event-First programming, en het laat toe om een standaard stramien te hebben om te reageren op binnenkomende informatie: alle belangrijke wijzigingen komen nu binnen via Events. Dat betekent dat we op dezelfde manier zullen reageren op de eigen Events, als op andere Events van het ecosysteem, komende van andere toepassingen.</p>



<figure class="wp-block-image aligncenter size-large"><a href="/wp-content/uploads/2023/12/fase3.png"><img loading="lazy" decoding="async" width="1024" height="450" src="/wp-content/uploads/2023/12/fase3-1024x450.png" alt="" class="wp-image-19621" srcset="https://www.smalsresearch.be/wp-content/uploads/2023/12/fase3-1024x450.png 1024w, https://www.smalsresearch.be/wp-content/uploads/2023/12/fase3-300x132.png 300w, https://www.smalsresearch.be/wp-content/uploads/2023/12/fase3-768x338.png 768w, https://www.smalsresearch.be/wp-content/uploads/2023/12/fase3.png 1173w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a><figcaption class="wp-element-caption">Figuur 3: Event-First programmeren, met kunstmatig behoud van de volledig transactie.</figcaption></figure>



<p class="justify-text">Beschouw Fig. 3: om de transactie (voor het commando) op te volgen, voeren we een extra controller in. Als eerste stap wordt er nu een Event gepubliceerd als gevolg van het binnenkomende commando. Het EDA subsysteem zal dit Event publiceren, en óók de applicatie zelf (naast eventuele andere in het ecosysteem), zullen er zich voor inschrijven. Wanneer het Event dan opnieuw binnenkomt in de applicatie ten gevolge van de subscription, wordt het effectieve werk uitgevoerd dat de applicatie moet doen ten gevolge van het commando. Om de transactie, ten slotte, te kunnen beëindigen, moet de controller worden ingelicht wanneer het werk is gedaan. Hier zijn we vrij om dit opnieuw via een Event te doen, of op een andere manier (gebruik makend van een of ander bestaand mechanisme voor communicatie tussen threads dat wordt aangeboden door de programmeertaal).</p>



<p class="justify-text">Indien we deze fase voor een toepassing volledig implementeren (i.e. toepassen op álle binnenkomende commando&#8217;s), kunnen we de toepassing verder gaan modulariseren volgens het principe van CQRS (<a href="/architecturale-evoluties-deel-2/" data-type="post" data-id="11475">Command &amp; Query Responsability Segregation</a>). Dit wil zeggen dat modules die reageren op commando&#8217;s apart zullen staan van modules die reageren op queries.</p>



<p class="justify-text">Als u heeft opgemerkt dat het een beetje raar is dat we via een extra controller gaan wachten op een bericht dat het werk, als gevolg van ons Event, is gedaan en we onze transactie nu kunnen beëindigen, dan heeft u gelijk: we hebben deze fase eerder als illustratie ingevoegd om het contrast met de volgende fase te verduidelijken. Maar het lijkt ons eerder aangeraden om fase 3 over te slaan en onmiddellijk gebruik te maken van Eventual Consistency!</p>



<h2 class="wp-block-heading">Fase 4: Eventual Consistency</h2>



<p class="justify-text">Tot nu toe hielden we sterk vast aan de transactionaliteit van het uitvoeren van ons binnenkomende commando. Eigenlijk is dit een kunstmatig opgelegde beperking, die ons ervan weerhoudt maximaal in te zetten op de availability van het ecosysteem (zie: <a href="/newsql-een-upgrade-voor-je-oude-database/" data-type="post" data-id="13610">CAP theorema</a>). In fase 4 zullen we gaan vertrouwen in het concept <a href="/eventual-consistency-1/" data-type="post" data-id="15544">Eventual Consistency</a>: we gaan het commando als uitgevoerd beschouwen, van zodra we zeker zijn dat ons Event is gepubliceerd. We gaan er dan van uit dat de toestand van de applicatie (en, per extensie, van het volledige ecosysteem), na verloop van tijd (&#8220;eventually&#8221;) consistent zal worden en alle nodige zaken zijn gebeurd als gevolg van het commando (ook in andere toepassingen!). Typisch zal deze tijd redelijk kort zijn; we laten enkel de mogelijkheid open dat het langer kan duren, omdat we het falen van een achterliggend systeem nu kunnen toelaten (zie ook het <a href="/newsql-getest-en-goedgekeurd/" data-type="post" data-id="13705">PACELC theorema</a>).</p>



<figure class="wp-block-image aligncenter size-large"><a href="/wp-content/uploads/2023/12/fase4.png"><img loading="lazy" decoding="async" width="1024" height="445" src="/wp-content/uploads/2023/12/fase4-1024x445.png" alt="" class="wp-image-19623" srcset="https://www.smalsresearch.be/wp-content/uploads/2023/12/fase4-1024x445.png 1024w, https://www.smalsresearch.be/wp-content/uploads/2023/12/fase4-300x130.png 300w, https://www.smalsresearch.be/wp-content/uploads/2023/12/fase4-768x334.png 768w, https://www.smalsresearch.be/wp-content/uploads/2023/12/fase4.png 1187w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a><figcaption class="wp-element-caption">Figuur 4: Event-First programmeren, met Eventual Consistency</figcaption></figure>



<p class="justify-text">Beschouw nu Fig. 4: eigenlijk doen we hier hetzelfde als in Fig. 3, maar dan met een vereenvoudiging: er hoeft geen feedback meer te komen van &#8220;Internal Work&#8221; naar de &#8220;Controller&#8221; voor het commando. Deze laatste zal nu simpelweg het commando als uitgevoerd beschouwen wanneer het Event is verstuurd (we hadden de extra controller eigenlijk terug weg kunnen laten). Met deze manier van werken verkrijgen we het meeste voordeel uit EDA voor de eigen applicatie (het voordeel voor het ecosysteem kregen we reeds in fase 1).</p>



<h2 class="wp-block-heading">Besluit</h2>



<p class="justify-text">In deze blog-post lieten we een mogelijke, stapsgewijze evolutie zien van een computerprogramma dat bij het uitvoeren van een commando een business Event zou moeten publiceren. In de eerste fases wordt de impact geminimaliseerd; in latere fases wordt de toepassing zelf meer Event Driven gemaakt. Het spreekt voor zich dat deze manier van werken niet de enige goede is, en dat men ook niet steeds álle stappen hoeft te zetten.</p>



<p class="justify-text">We beseffen dat de vier fases zeer verboos zijn gedocumenteerd in dit schrijven; voor programmeurs kan dit nogal overbodig lijken. Maar we richten deze blog ook op niet-programmeurs, zodat voor hen een tipje van de sluier wordt gelicht over hoe programmeurs moeten nadenken over het echte binnenwerk van een toepassing, en hoe dit in verband staat met de communicatie op schaal van het ecosysteem waarbinnen een toepassing opereert.</p>



<p class="justify-text">Het publiceren van herbruikbare business Events is cruciaal voor een groot IT ecosysteem, waarbij integraties, <a href="/event-driven-apis/" data-type="post" data-id="16655">louter op basis van APIs</a>, op langere termijn voor een verminderde resiliëntie en agility kunnen zorgen. Een goed evenwicht tussen integraties via zowel synchrone als asynchrone communicatie, waarbij EDA als evenwaardig wordt beschouwd aan API, leidt tot het meest gezonde ecosysteem van applicaties.</p>





<p></p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.smalsresearch.be/meer-eda-stap-voor-stap-programmeren/feed/</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
			</item>
		<item>
		<title>Architecting Tomorrow: a Vision on Event-Driven Architecture</title>
		<link>https://www.smalsresearch.be/architecting-tomorrow-a-vision-on-event-driven-architecture/</link>
		
		<dc:creator><![CDATA[Koen Vanderkimpen]]></dc:creator>
		<pubDate>Mon, 13 Nov 2023 10:06:38 +0000</pubDate>
				<category><![CDATA[Presentations]]></category>
		<category><![CDATA[EDA]]></category>
		<category><![CDATA[EDSE]]></category>
		<guid isPermaLink="false">https://www.smalsresearch.be/architecting-tomorrow-a-vision-on-event-driven-architecture/</guid>

					<description><![CDATA[In dit webinar gaan we in de eerste plaats in op waarom EDA belangrijk is, wat EDA precies doet en de plaats die het kan innemen in een toekomstbestendige IT-architectuur zoals wordt nagestreefd in “eGov 3.0”. We focussen vooral op het waarom van EDA, en op welke manier dit paradigma zijn voordelen biedt wanneer het [&#8230;]]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image alignleft size-full"><a href="https://www.smalsresearch.be/wp-content/uploads/2023/11/DALLE-2023-10-18-13.48.11-one-computer-sending-a-message-to-the-entire-internet-futuristic-300x300-1.png"><img loading="lazy" decoding="async" width="300" height="300" src="https://www.smalsresearch.be/wp-content/uploads/2023/11/DALLE-2023-10-18-13.48.11-one-computer-sending-a-message-to-the-entire-internet-futuristic-300x300-1.png" alt="" class="wp-image-28983" srcset="https://www.smalsresearch.be/wp-content/uploads/2023/11/DALLE-2023-10-18-13.48.11-one-computer-sending-a-message-to-the-entire-internet-futuristic-300x300-1.png 300w, https://www.smalsresearch.be/wp-content/uploads/2023/11/DALLE-2023-10-18-13.48.11-one-computer-sending-a-message-to-the-entire-internet-futuristic-300x300-1-150x150.png 150w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a></figure>



<p>In dit webinar gaan we in de eerste plaats in op waarom EDA belangrijk is, wat EDA precies doet en de plaats die het kan innemen in een toekomstbestendige IT-architectuur zoals wordt nagestreefd in “eGov 3.0”. We focussen vooral op het waarom van EDA, en op welke manier dit paradigma zijn voordelen biedt wanneer het wordt gecombineerd met andere belangrijke ontwerpprincipes. We zullen een “bird’s eye view” ontwikkelen op hoe applicaties op zich, maar ook het ruimere IT-landschap, eruit zouden kunnen zien met een groter gebruik van dit paradigma. Op een aantal zaken zoomen we technisch dieper in om een voldoende ruim begrip van EDA te bekomen, zonder al te veel in detail te gaan.</p>



<p>Een greep uit de andere concepten die we op deze manier toegankelijk willen maken via dit webinar: Domain-Driven Design (DDD), event storming, hexagonal architecture, microservices, modular architecture, loose coupling, … Ten slotte kijken we ook naar wat er bij zal komen kijken om “meer” of “voldoende” EDA te hebben in onze portfolio, en op de “mindset shift” die daarbij als belangrijkste nood – en obstakel – naar boven komt.
</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<p>Voici quelques-uns des autres concepts que nous nous souhaitons rendre accessibles de cette manière lors de ce webinaire&nbsp;: Domain-Driven Design (DDD), event storming, architecture hexagonale, microservices, architecture modulaire, loose coupling… Enfin, nous examinerons également les éléments à prendre en compte pour avoir “plus” ou “suffisamment” d’EDA dans notre portefeuille, ainsi que le changement de mentalité qui apparaît comme le principal besoin – et obstacle – pour y parvenir.</p>



<h1 class="wp-block-heading">Recording</h1>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="Architecting Tomorrow: a Vision on Event-Driven Architecture" width="500" height="281" src="https://www.youtube.com/embed/g3HSFzkcUL0?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div></figure>



<h1 class="wp-block-heading">Presentation</h1>



<div data-wp-interactive="core/file" class="wp-block-file"><object data-wp-bind--hidden="!state.hasPdfPreview" hidden class="wp-block-file__embed" data="/wp-content/uploads/2023/11/2023-11-09-Webinar-EDA.pdf" type="application/pdf" style="width:100%;height:600px" aria-label="Embed of 2023-11-09-Webinar-EDA."></object><a id="wp-block-file--media-567e735f-f503-444a-a2c7-6cf62a3e6560" href="https://www.smalsresearch.be/wp-content/uploads/2023/11/2023-11-09-Webinar-EDA.pdf">2023-11-09-Webinar-EDA</a><a href="/wp-content/uploads/2023/11/2023-11-09-Webinar-EDA.pdf" class="wp-block-file__button wp-element-button" download aria-describedby="wp-block-file--media-567e735f-f503-444a-a2c7-6cf62a3e6560">Download</a></div>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
