<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Jérémy DECOOL (@jdecool), Ingénieur Etudes et Développement à Lyon</title>
        <description></description>
        <link>https://www.jdecool.fr</link>
        <atom:link href="https://www.jdecool.fr/feed/feed-all.xml" rel="self" type="application/rss+xml" />
        
        
            
                
            <item>
                <title>L&apos;IA n&apos;a pas votre vécu</title>
                <description>&lt;p&gt;J’ai évoqué dans &lt;a href=&quot;/blog/2026/07/22/convaincre-ne-se-delegue-pas-a-l-ia.html&quot;&gt;une publication précédente&lt;/a&gt;, l’usage de l’IA par les leaders pour construire leurs arguments, et la perte d’authenticité que cela entraîne. J’ai exactement le même sentiment côté technique.&lt;/p&gt;

&lt;p&gt;De plus en plus, je vois des développeurs avancer des arguments qu’ils n’ont pas construits. Des réponses générées, structurées, bien tournées, mais qui ne sont pas les leurs. Et tout comme pour les leaders, cela désincarne les propos et leur fait perdre en crédibilité.&lt;/p&gt;

&lt;!--more--&gt;

&lt;p&gt;La discussion s’engage alors, on tente de comprendre pourquoi une approche plutôt qu’une autre dans le contexte en question. À l’écrit, on a une réponse générique, qui va dans le sens du développeur, qui a du sens, mais qui manque d’intention. C’est une réponse qui a du mal à convaincre. Et lorsque la discussion passe à l’oral, les échanges se vident souvent de leurs arguments car le sujet n’est pas maitrisé.&lt;/p&gt;

&lt;p&gt;Une décision technique ne se défend pas avec des arguments génériques. Elle se défend avec du contexte et de l’expérience: la maturité du projet, les compétences de l’équipe en place, l’historique des choix précédents, les échéances. En un mot: le vécu. L’IA et les LLMs n’ont pas ce contexte.&lt;/p&gt;
</description>
                <pubDate>Wed, 12 Aug 2026 00:00:00 +0200</pubDate>
                <link>https://www.jdecool.fr/blog/2026/08/12/l-ia-n-a-pas-votre-vecu.html</link>
                <guid isPermaLink="true">https://www.jdecool.fr/blog/2026/08/12/l-ia-n-a-pas-votre-vecu.html</guid>
            </item>
            
        
            
                
            <item>
                <title>Les meilleures idées ne viennent pas devant l&apos;écran</title>
                <description>&lt;p&gt;Je vais régulièrement courir. Pas pour la performance, juste pour m’aérer l’esprit et être un minimum mobile, plutôt que de camper devant mon écran. Paradoxalement, c’est à ce moment que j’ai les meilleures idées qui me viennent à l’esprit.&lt;/p&gt;

&lt;!--more--&gt;

&lt;p&gt;Je pense que tous les développeurs ont connu cette situation où l’on n’arrive pas à résoudre un bug incompréhensible, ou celle où l’on tourne en rond sur une décision technique à prendre. Souvent, plus on s’acharne et moins on avance. On refait les mêmes raisonnements et on s’enferme dans une logique dont on n’arrive plus à sortir.&lt;/p&gt;

&lt;p&gt;Pour sortir de cette boucle infernale, je vais courir. Une heure ou deux sans écran, sans notification, sans intention particulière. Juste moi et moi-même. Je pars pour me libérer l’esprit et prendre l’air, pour lâcher prise. Et c’est précisément à ce moment-là que les idées arrivent. La solution que je cherchais, l’approche que je n’avais pas envisagée et parfois même la remise en question du problème lui-même.&lt;/p&gt;

&lt;p&gt;Tant que l’on reste en mode exécution, la tête dans le guidon, l’esprit reste enfermé dans le chemin qu’il a déjà emprunté. Lâcher prise, c’est le meilleur moyen d’explorer autre chose. Pour moi c’est courir, mais chacun a sa propre manière de s’aérer.&lt;/p&gt;

&lt;p&gt;Prendre du recul, c’est rarement du temps perdu. C’est souvent du temps gagné.&lt;/p&gt;
</description>
                <pubDate>Mon, 10 Aug 2026 00:00:00 +0200</pubDate>
                <link>https://www.jdecool.fr/blog/2026/08/10/les-meilleures-idees-ne-viennent-pas-devant-l-ecran.html</link>
                <guid isPermaLink="true">https://www.jdecool.fr/blog/2026/08/10/les-meilleures-idees-ne-viennent-pas-devant-l-ecran.html</guid>
            </item>
            
        
            
                
            <item>
                <title>Ce n&apos;est pas le titre qui définit le poste, c&apos;est ce qu&apos;on en fait</title>
                <description>&lt;p&gt;Il y a quelque temps, je faisais passer des entretiens pour un poste. J’ai pu rencontrer de nombreux profils: développeur, “lead dev” ou “architecte” et derrière ces titres des réalités bien différentes (même à titre équivalent).&lt;/p&gt;

&lt;!--more--&gt;

&lt;p&gt;Certains pouvaient passer leurs journées à écrire du code, d’autres ne pouvaient faire que des revues. Parfois, ils ne codaient pas du tout et ils devaient gérer des plannings. Les intitulés de postes sont souvent équivalent, mais les métiers exercés n’ont parfois rien en commun.&lt;/p&gt;

&lt;p&gt;Pourtant, on utilise souvent ces titres comme des repères pour se situer, se comparer et parfois se valoriser. J’ai croisé des développeurs qui portaient un rôle de tech lead sans en avoir le titre. À l’inverse, j’ai vu des architectes qui n’ont jamais eu la main sur des décisions structurantes.&lt;/p&gt;

&lt;p&gt;Au final ce qui compte, ce n’est pas la ligne sur son CV. Ce sont les responsabilités que l’on porte au quotidien. Est-ce que j’ai de l’impact ? Les décisions techniques que je prends sont-elles structurantes ? Est-ce que je participe à la montée en compétence des autres développeurs ? Ce sont ces questions qui permettent de définir un poste, bien plus que son intitulé.&lt;/p&gt;

&lt;p&gt;C’est d’ailleurs ce que l’on creuse généralement lors d’un entretien. Un titre apprend peu de chose. C’est ce que la personne a réellement fait, et qui arrive à le communiquer, qui en apprend le plus.&lt;/p&gt;

&lt;p&gt;Ce n’est pas le titre qui définit le poste, c’est ce que l’on en fait.&lt;/p&gt;
</description>
                <pubDate>Wed, 29 Jul 2026 00:00:00 +0200</pubDate>
                <link>https://www.jdecool.fr/blog/2026/07/29/ce-n-est-pas-le-titre-qui-definit-le-poste-c-est-ce-qu-on-en-fait.html</link>
                <guid isPermaLink="true">https://www.jdecool.fr/blog/2026/07/29/ce-n-est-pas-le-titre-qui-definit-le-poste-c-est-ce-qu-on-en-fait.html</guid>
            </item>
            
        
            
                
            <item>
                <title>Convaincre ne se délègue pas à l&apos;IA</title>
                <description>&lt;p&gt;Depuis quelques mois, je repère de plus en plus de documents et de présentations de leads et de directeurs rédigés à coups d’IA. Ce n’est pas forcément gênant, mais le problème, c’est quand ça se voit de trop.&lt;/p&gt;

&lt;!--more--&gt;

&lt;p&gt;Il y a un style d’écriture qui trahit l’outil. Une certaine structure et des types de tournures qui se remarquent. Le texte est cohérent, mais il est désincarné.&lt;/p&gt;

&lt;p&gt;Selon le type de document, cela ne me dérange pas. Documenter une procédure, résumer une architecture, formaliser un compte-rendu: l’IA fait ça très bien, plus rapidement et parfois mieux qu’un humain.&lt;/p&gt;

&lt;p&gt;Le problème, c’est quand le document a pour but de convaincre, de faire adhérer une équipe à une vision ou un choix structurant. Là, ce n’est pas uniquement le contenu qui fait la force du propos, c’est la conviction de celui ou celle qui le porte.&lt;/p&gt;

&lt;p&gt;Les convictions se nourrissent d’expériences vécues, des prises de position assumées, même si elles peuvent être imparfaites. Or, l’IA a tendance à lisser les textes et tout ça s’estompe. On reconnait le ton, le style et la forme de l’IA. C’est toute la personnalité de l’auteur du propos qui s’évapore.&lt;/p&gt;

&lt;p&gt;Quand on souhaite transmettre une idée, partager une conviction, il est important d’utiliser ses propres mots. C’est ce qui fait tout le charisme d’un leader et sa capacité à embarquer les autres avec lui.&lt;/p&gt;
</description>
                <pubDate>Wed, 22 Jul 2026 00:00:00 +0200</pubDate>
                <link>https://www.jdecool.fr/blog/2026/07/22/convaincre-ne-se-delegue-pas-a-l-ia.html</link>
                <guid isPermaLink="true">https://www.jdecool.fr/blog/2026/07/22/convaincre-ne-se-delegue-pas-a-l-ia.html</guid>
            </item>
            
        
            
                
            <item>
                <title>Attention au bruit documentaire généré par l&apos;IA</title>
                <description>&lt;p&gt;Avec l’IA, on parle beaucoup de la rapidité et de la vitesse de génération de code. Mais, tout comme le code, générer de la documentation n’a jamais été aussi simple et rapide. En quelques secondes, l’IA produit des pages entières décrivant un projet. Mais attention à cette abondance.&lt;/p&gt;

&lt;!--more--&gt;

&lt;p&gt;Comme beaucoup, je suis convaincu de l’importance de documenter: choix d’architecture, standard d’équipe, historique et choix des décisions. La documentation est primordiale pour maintenir la connaissance au fil du temps.&lt;/p&gt;

&lt;p&gt;Mais une documentation générée automatiquement décrit généralement le “quoi” et le “comment”. Elle dresse un état des lieux de ce qui existe, mais elle ne permet pas d’avoir le “pourquoi”.&lt;/p&gt;

&lt;p&gt;Pourquoi cette architecture plutôt qu’une autre ? Quel compromis a été accepté, dans quel contexte et avec quelles contraintes ? Quels ont été les autres choix étudiés.&lt;/p&gt;

&lt;p&gt;Toutes ces informations n’existent pas dans le code, elles existent dans la tête de ceux qui ont fait les choix ou qui étaient présents. Ce n’est pas pérenne.&lt;/p&gt;

&lt;p&gt;De plus, le risque de la génération automatique, c’est de passer d’un extrême à un autre. C’est passer d’une documentation pauvre ou inexistante à un bruit documentaire où tout est écrit, mais derrière l’abondance pas d’informations significatives.&lt;/p&gt;

&lt;p&gt;C’est aussi une quantité de documentation que personne n’a relue, que personne ne s’est appropriées et que personne ne souhaite réellement maintenir.&lt;/p&gt;

&lt;p&gt;Une documentation n’a de valeur que si elle porte une intention. L’IA peut aider à la rédaction, à la structuration et à sa maintenance. Mais la décision de ce qui mérite d’être documenté, et surtout de conserver l’historique de ce qui a mené aux différents choix restent de la responsabilité humaine.&lt;/p&gt;

&lt;p&gt;L’IA peut générer des pages en quelques secondes. Mais une réflexion, elle, ne se génère pas. Elle se transmet.&lt;/p&gt;
</description>
                <pubDate>Wed, 15 Jul 2026 00:00:00 +0200</pubDate>
                <link>https://www.jdecool.fr/blog/2026/07/15/attention-au-bruit-documentaire-genere-par-l-ia.html</link>
                <guid isPermaLink="true">https://www.jdecool.fr/blog/2026/07/15/attention-au-bruit-documentaire-genere-par-l-ia.html</guid>
            </item>
            
        
            
                
            <item>
                <title>Push once, publish everywhere: the multi-target Git remote</title>
                <description>&lt;p&gt;Github remains the go-to forge for hosting Git projects today. But as a French guy who lives in Europe, I don’t want to depend on only one foreign platform. So, to reduce that dependency, I decided to mirror all of my repositories (public and private) on &lt;a href=&quot;https://codeberg.org &quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Codeberg&lt;/a&gt;, a European, non-profit forge.&lt;/p&gt;

&lt;!--more--&gt;

&lt;p&gt;Usually, people think a Git remote is a simple association with a URL (one remote = one destination). In reality, a remote is two things: a URL for fetching data and another one for pushing data. Using the &lt;code&gt;git remote -v&lt;/code&gt; command, it’s possible to visualize a repository configuration:&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;$ git remote -v
origin  https://github.com/jdecool/repo.git (fetch)
origin  https://github.com/jdecool/repo.git (push)&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;Git allows to configure multiple push URLs to a remote. It’s what I do to push repository changes to Github and the Codeberg mirror:&lt;/p&gt;

&lt;p&gt;To declare the push URLs, use the &lt;code&gt;git remote set-url&lt;/code&gt; command with the &lt;code&gt;--add&lt;/code&gt; and &lt;code&gt;--push&lt;/code&gt; options:&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;$ git remote set-url --add --push origin git@github.com:jdecool/repo.git
$ git remote set-url --add --push origin ssh://git@codeberg.org/jdecool/repo.git&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;It produces the following result:&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;$ git remote -v
origin  https://github.com/jdecool/repo.git (fetch)
origin  https://github.com/jdecool/repo.git (push)
origin  ssh://git@codeberg.org/jdecool/repo.git (push)&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;Now the &lt;code&gt;origin&lt;/code&gt; remote still fetches data from Github, but it also pushes data on two destinations. The Git configuration is stored in the &lt;code&gt;.git/config&lt;/code&gt; file:&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-init&quot; data-lang=&quot;init&quot;&gt;[remote &amp;quot;origin&amp;quot;]
    url = git@github.com:jdecool/repo.git
    fetch = +refs/heads/*:refs/remotes/origin/*
    pushurl = git@github.com:jdecool/repo.git
    pushurl = ssh://git@codeberg.org/jdecool/repo.git&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;Now, when I push changes with &lt;code&gt;git push origin main&lt;/code&gt;, Git will send commits to both Github and Codeberg. Both repository instances stay up to date.&lt;/p&gt;

&lt;p&gt;But there are some important things to notice.&lt;/p&gt;

&lt;p&gt;Fist, by default, Git uses the &lt;code&gt;fetch&lt;/code&gt; URL for pushing as well. But after you add a first &lt;code&gt;pushurl&lt;/code&gt;, the implicit &lt;code&gt;fetch&lt;/code&gt; URL is no longer used, it will be replaced. So &lt;strong&gt;make sure to declare the original URL&lt;/strong&gt; alongside the new one.&lt;/p&gt;

&lt;p&gt;Secondly, this technique remains a &lt;strong&gt;one-way mirror&lt;/strong&gt;. The fetch URL still contains only one URL. If some code is directly pushed to a secondly instance, those changes won’t be pulled back automatically. In a team context, prefer using the Git mirror feature from the forge server-side.&lt;/p&gt;
</description>
                <pubDate>Tue, 14 Jul 2026 00:00:00 +0200</pubDate>
                <link>https://www.jdecool.fr/en/blog/2026/07/14/push-once-publish-everywhere-the-multi-target-git-remote.html</link>
                <guid isPermaLink="true">https://www.jdecool.fr/en/blog/2026/07/14/push-once-publish-everywhere-the-multi-target-git-remote.html</guid>
            </item>
            
        
            
                
            <item>
                <title>Pousser une fois, publier partout: le remote Git multi-cibles</title>
                <description>&lt;p&gt;Bien que cela commence à changer, Github reste aujourd’hui la forge de référence pour l’hébergement de projet autour de Git. Néanmoins, dans une démarche d’autonomie numérique, je ne souhaite pas dépendre uniquement de cette plateforme. Pour réduire cette dépendance, j’ai décidé de dupliquer et “mirrorer” l’ensemble de mes dépôts (publics et privés) sur &lt;a href=&quot;https://codeberg.org &quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Codeberg&lt;/a&gt;, une forge européenne et associative.&lt;/p&gt;

&lt;!--more--&gt;

&lt;p&gt;On a l’habitude de voir un &lt;em&gt;remote&lt;/em&gt; Git comme étant une simple association avec une URL (un &lt;em&gt;remote&lt;/em&gt; = une destination). Un &lt;em&gt;remote&lt;/em&gt; Git distingue en réalité deux choses: une URL pour récupérer les données (&lt;code&gt;fetch&lt;/code&gt;) et une autre pour envoyer les données (&lt;code&gt;push&lt;/code&gt;). Vous pouvez, par exemple, les visualiser avec la commande &lt;code&gt;git remote -v&lt;/code&gt; dans n’importe quel dépôt Git:&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;$ git remote -v
origin  https://github.com/jdecool/repo.git (fetch)
origin  https://github.com/jdecool/repo.git (push)&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;Et rien n’oblige un &lt;em&gt;remote&lt;/em&gt; à ne posséder qu’une seule URL de push, il est possible d’en déclarer plusieurs. C’est ce que je fais pour pouvoir pousser les modifications de mes différents dépôts à la fois sur Github et le miroir Codeberg.&lt;/p&gt;

&lt;p&gt;Pour déclarer les URLs de &lt;em&gt;push&lt;/em&gt;, il faut utiliser la commande &lt;code&gt;git remote set-url&lt;/code&gt; avec les options &lt;code&gt;--add&lt;/code&gt; et &lt;code&gt;--push&lt;/code&gt;:&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;$ git remote set-url --add --push origin git@github.com:jdecool/repo.git
$ git remote set-url --add --push origin ssh://git@codeberg.org/jdecool/repo.git&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;Le résultat sera le suivant:&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;$ git remote -v
origin  https://github.com/jdecool/repo.git (fetch)
origin  https://github.com/jdecool/repo.git (push)
origin  ssh://git@codeberg.org/jdecool/repo.git (push)&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;Le &lt;em&gt;remote&lt;/em&gt; origin continue de récupérer les données depuis Github, mais il dispose désormais de deux destinations de &lt;em&gt;push&lt;/em&gt;. Cela se traduit par la configuration ci-dessous dans le fichier &lt;code&gt;.git/config&lt;/code&gt;:&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-init&quot; data-lang=&quot;init&quot;&gt;[remote &amp;quot;origin&amp;quot;]
    url = git@github.com:jdecool/repo.git
    fetch = +refs/heads/*:refs/remotes/origin/*
    pushurl = git@github.com:jdecool/repo.git
    pushurl = ssh://git@codeberg.org/jdecool/repo.git&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;Désormais, lorsque je pousse mes modifications via &lt;code&gt;git push origin main&lt;/code&gt;, Git envoie mes commits à la fois vers Github et Codeberg. Les deux instances de mon dépôt restent synchronisées.&lt;/p&gt;

&lt;p&gt;Il faudra faire attention lors de la configuration initiale. Par défaut, Git utilise l’URL de &lt;code&gt;fetch&lt;/code&gt; pour l’envoi des données. Mais dès que l’on ajoute un premier &lt;code&gt;pushurl&lt;/code&gt;, l’URL de &lt;code&gt;fetch&lt;/code&gt; ne sera plus utilisée. Il faut donc &lt;strong&gt;bien penser à redéclarer l’URL d’origine&lt;/strong&gt; en plus de la nouvelle.&lt;/p&gt;

&lt;p&gt;Autre point important, cette technique reste un &lt;strong&gt;miroir unidirectionnel&lt;/strong&gt;. La récupération des modifications continue de se faire via une seule URL. Si du code est poussé directement sur Codeberg, les changements ne seront pas récupérés automatiquement. Dans le cas présent, je ne le fais que sur mes dépôts personnels dont je suis le principal contributeur. Dans un contexte d’équipe, la configuration n’existant que localement sur les machines, mieux vaut se tourner vers un miroir Git configuré côté forge.&lt;/p&gt;
</description>
                <pubDate>Tue, 14 Jul 2026 00:00:00 +0200</pubDate>
                <link>https://www.jdecool.fr/blog/2026/07/14/pousser-une-fois-publier-partout-le-remote-git-multi-cibles.html</link>
                <guid isPermaLink="true">https://www.jdecool.fr/blog/2026/07/14/pousser-une-fois-publier-partout-le-remote-git-multi-cibles.html</guid>
            </item>
            
        
            
                
            <item>
                <title>Courir après la fonctionnalité n&apos;est pas un objectif</title>
                <description>&lt;p&gt;L’IA permet à de nombreux éditeurs logiciels de livrer de nouvelles fonctionnalités toujours plus rapidement. Elle a augmenté la vitesse de production logicielle. La tentation de toujours aller plus vite est alors grande. Les nouvelles fonctionnalités d’un logiciel étant souvent perçu comme un avantage concurrentiel. Plus il en propose, plus il semble riche et plus il paraît compétitif.&lt;/p&gt;

&lt;!--more--&gt;

&lt;p&gt;Le problème, c’est que livrer des fonctionnalités rapidement et fréquemment est compliqué. Cela se fait régulièrement au détriment de la qualité et de la stabilité. On accumule du code, les fonctionnalités s’empilent et la dette (technique et fonctionnelle) s’installe, fragilisant les fondations de l’outil.&lt;/p&gt;

&lt;p&gt;Au milieu de tout ça, on retrouve l’utilisateur. Pour lui aussi, cela peut être difficile. Les nouveautés impliquent des changements de l’outil, et potentiellement de ses habitudes d’utilisation. Il doit alors assimiler les nouvelles fonctionnalités, les comprendre et les intégrer dans ses usages. Et à vouloir aller trop vite, on finit par le perdre en route.&lt;/p&gt;

&lt;p&gt;Aller plus vite et courir après la fonctionnalité n’est pas un objectif en soi. Le plus important est de trouver l’équilibre entre rythme, qualité et adoption utilisateur pour construire un produit pérenne.&lt;/p&gt;
</description>
                <pubDate>Wed, 08 Jul 2026 00:00:00 +0200</pubDate>
                <link>https://www.jdecool.fr/blog/2026/07/08/courir-apres-la-fonctionnalite-n-est-pas-un-objectif.html</link>
                <guid isPermaLink="true">https://www.jdecool.fr/blog/2026/07/08/courir-apres-la-fonctionnalite-n-est-pas-un-objectif.html</guid>
            </item>
            
        
            
                
            <item>
                <title>La Clean Architecture ne se résume pas à une arborescence de dossiers</title>
                <description>&lt;p&gt;Pour beaucoup, la Clean Architecture se résume à un découpage du code en 3 couches: Domain, Application et Infrastructure (avec éventuellement une couche de présentation). Pourtant, si l’on regarde le livre de référence sur le sujet, “Clean Architecture” de Robert C. Martin, ce découpage ne représente qu’une dizaine de pages sur les 400 que compte le livre.&lt;/p&gt;

&lt;!--more--&gt;

&lt;p&gt;L’organisation du projet est certainement la partie la plus visible de la Clean Architecture. C’est d’ailleurs ce qui en a fait son succès: une organisation claire, bien définie, où chacun sait où ranger son code. Mais la Clean Architecture ne se limite pas à une organisation de fichiers, c’est bien plus que cela.&lt;/p&gt;

&lt;p&gt;L’ouvrage de référence aborde de nombreux autres sujets: on y retrouve les principes SOLID, des notions de cohésion et de couplage du code, la définition des frontières entre modules, la gestion des règles métier, l’isolation de la base de données et la séparation des frameworks. Autant de concepts qui, mis bout à bout, représentent ce qu’est vraiment la Clean Architecture.&lt;/p&gt;

&lt;p&gt;Lorsque l’on se concentre sur les dossiers Domain, Application et Infrastructure, on reproduit le plus facile en oubliant le “pourquoi”. Comme toujours, il est essentiel de comprendre les principes fondamentaux, sans quoi impossible d’adapter et d’utiliser cette architecture à bon escient.&lt;/p&gt;
</description>
                <pubDate>Fri, 03 Jul 2026 00:00:00 +0200</pubDate>
                <link>https://www.jdecool.fr/blog/2026/07/03/la-clean-architecture-ne-se-resume-pas-a-une-arborescence-de-dossiers.html</link>
                <guid isPermaLink="true">https://www.jdecool.fr/blog/2026/07/03/la-clean-architecture-ne-se-resume-pas-a-une-arborescence-de-dossiers.html</guid>
            </item>
            
        
            
                
            <item>
                <title>Domain Driven Design: l&apos;essentiel est avant le code</title>
                <description>&lt;p&gt;Pour beaucoup de développeurs, voir un dossier “Domain” dans le code source d’un projet, visant à isoler la partie métier, et avoir des objets riches avec un nommage cohérent, c’est faire du DDD (Domain Driven Design). C’est certes un bon début, mais réduire le Domain Driven Design à une structure de dossier, c’est passer à côté de l’essentiel.&lt;/p&gt;

&lt;!--more--&gt;

&lt;p&gt;Le DDD, ce n’est pas qu’une affaire de découpage et d’organisation technique. C’est avant tout une approche stratégique. Identifier les différents sous-domaines, comprendre lesquels portent réellement la valeur de l’entreprise, construire un langage commun entre développeurs et experts métier. Tout cela se passe bien avant d’écrire la moindre ligne de code.&lt;/p&gt;

&lt;p&gt;Les patterns tactiques ne sont que la partie émergée de l’iceberg. La vraie force du DDD réside dans le travail en amont: aligner le modèle de code sur la réalité du métier et faire en sorte que tout le monde parle le même langage.&lt;/p&gt;

&lt;p&gt;Je n’ai que trop rarement vu des équipes embrasser les patterns stratégiques du DDD: définition et mise en place du langage commun (Ubiquitous Language), atelier de “context mapping” (cartographie des domaines et sous-domaines) ou d’“event storming” (modélisation d’un domaine métier en identifiant les événements clés). Au-delà de la technique, c’est pour moi ce qui fait la valeur de la conception pilotée par le domaine.&lt;/p&gt;

&lt;p&gt;Parce que ranger son code dans un dossier “Domain” sans faire un travail de fond sur le métier, c’est confondre la technique avec la méthode.&lt;/p&gt;
</description>
                <pubDate>Sat, 27 Jun 2026 00:00:00 +0200</pubDate>
                <link>https://www.jdecool.fr/blog/2026/06/27/domain-driven-design-l-essentiel-est-avant-le-code.html</link>
                <guid isPermaLink="true">https://www.jdecool.fr/blog/2026/06/27/domain-driven-design-l-essentiel-est-avant-le-code.html</guid>
            </item>
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
            
        
    </channel>
</rss>
