<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Thibault on Simple Enough Blog</title><link>https://blog-dev.simpleenough.net/fr/tags/thibault/</link><description>Recent content in Thibault on Simple Enough Blog</description><generator>Hugo</generator><language>fr</language><lastBuildDate>Thu, 26 Feb 2026 17:30:00 +0100</lastBuildDate><atom:link href="https://blog-dev.simpleenough.net/fr/tags/thibault/index.xml" rel="self" type="application/rss+xml"/><item><title>Penser top-down dans un monde complexe</title><link>https://blog-dev.simpleenough.net/fr/blog/top_down/</link><pubDate>Thu, 26 Feb 2026 17:30:00 +0100</pubDate><guid>https://blog-dev.simpleenough.net/fr/blog/top_down/</guid><description>&lt;h2 id="i-deux-manières-fondamentales-de-raisonner" class="heading">I. Deux manières fondamentales de raisonner&lt;a href="#i-deux-mani%c3%a8res-fondamentales-de-raisonner" aria-labelledby="i-deux-manières-fondamentales-de-raisonner">
&lt;!-- &lt;i class="fas fa-link anchor">&lt;/i> -->
 &lt;svg class="svg-inline--fa fas fa-link anchor" fill="currentColor" aria-hidden="true" role="img" viewBox="0 0 640 512">&lt;use href="#fas-link">&lt;/use>&lt;/svg>&amp;nbsp;
 &lt;/a>
&lt;/h2>
&lt;p>Lorsqu’on observe la façon dont on conçoit aujourd’hui des &lt;strong>systèmes complexes&lt;/strong> — infrastructures DevOps, plateformes distribuées, logiciels modernes ou même parcours éducatifs — on retrouve presque toujours la même tension intellectuelle. D’un côté, une approche &lt;strong>progressive et incrémentale&lt;/strong>, qui part des bases pour aller vers quelque chose de plus élaboré. De l’autre, une approche &lt;strong>orientée par le résultat attendu&lt;/strong>, qui commence par définir un &lt;strong>objectif&lt;/strong>, puis remonte ce qui est nécessaire pour l’atteindre.&lt;/p></description></item><item><title>Test-Driven Infrastructure : appliquer le TDD à l’Infrastructure as Code</title><link>https://blog-dev.simpleenough.net/fr/blog/infratdd/</link><pubDate>Wed, 14 Jan 2026 13:45:30 +0200</pubDate><guid>https://blog-dev.simpleenough.net/fr/blog/infratdd/</guid><description>&lt;h1 id="test-driven-infrastructure" class="heading">Test-Driven Infrastructure&lt;a href="#test-driven-infrastructure" aria-labelledby="test-driven-infrastructure">
&lt;!-- &lt;i class="fas fa-link anchor">&lt;/i> -->
 &lt;svg class="svg-inline--fa fas fa-link anchor" fill="currentColor" aria-hidden="true" role="img" viewBox="0 0 640 512">&lt;use href="#fas-link">&lt;/use>&lt;/svg>&amp;nbsp;
 &lt;/a>
&lt;/h1>




&lt;h2 id="appliquer-le-tdd-à-linfrastructure-as-code" class="heading">Appliquer le TDD à l’Infrastructure as Code&lt;a href="#appliquer-le-tdd-%c3%a0-linfrastructure-as-code" aria-labelledby="appliquer-le-tdd-à-linfrastructure-as-code">
&lt;!-- &lt;i class="fas fa-link anchor">&lt;/i> -->
 &lt;svg class="svg-inline--fa fas fa-link anchor" fill="currentColor" aria-hidden="true" role="img" viewBox="0 0 640 512">&lt;use href="#fas-link">&lt;/use>&lt;/svg>&amp;nbsp;
 &lt;/a>
&lt;/h2>
&lt;p>Le &lt;strong>Test-Driven Development (TDD)&lt;/strong> est aujourd’hui bien installé côté applicatif.&lt;br>
En revanche, lorsqu’il s’agit d’&lt;strong>infrastructure&lt;/strong>, beaucoup considèrent encore que le TDD est inutile, trop complexe ou inadapté.&lt;/p>
&lt;p>C’est une erreur.&lt;/p>
&lt;p>Le &lt;strong>TDD appliqué à l’infrastructure&lt;/strong> existe déjà, souvent sans être nommé. Lorsqu’il est bien compris, il devient un levier majeur pour &lt;strong>sécuriser, structurer et faire évoluer une plateforme cloud&lt;/strong>.&lt;/p></description></item><item><title>Utiliser les constantes en TDD avec Go</title><link>https://blog-dev.simpleenough.net/fr/blog/consttdd/</link><pubDate>Tue, 23 Dec 2025 10:08:49 +0200</pubDate><guid>https://blog-dev.simpleenough.net/fr/blog/consttdd/</guid><description>&lt;h2 id="bonnes-pratiques-pièges-et-signaux-de-design" class="heading">Bonnes pratiques, pièges et signaux de design&lt;a href="#bonnes-pratiques-pi%c3%a8ges-et-signaux-de-design" aria-labelledby="bonnes-pratiques-pièges-et-signaux-de-design">
&lt;!-- &lt;i class="fas fa-link anchor">&lt;/i> -->
 &lt;svg class="svg-inline--fa fas fa-link anchor" fill="currentColor" aria-hidden="true" role="img" viewBox="0 0 640 512">&lt;use href="#fas-link">&lt;/use>&lt;/svg>&amp;nbsp;
 &lt;/a>
&lt;/h2>
&lt;p>Le &lt;strong>Test-Driven Development (TDD)&lt;/strong> ne sert pas uniquement à écrire des tests.&lt;br>
Il sert avant tout à &lt;strong>concevoir du logiciel&lt;/strong>.&lt;/p>
&lt;p>En Go, l’usage des &lt;strong>constantes&lt;/strong> est souvent mal compris en TDD :&lt;/p>
&lt;ul>
&lt;li>faut-il les exposer ?&lt;/li>
&lt;li>les tester ?&lt;/li>
&lt;li>les injecter ?&lt;/li>
&lt;li>les éviter ?&lt;/li>
&lt;/ul>
&lt;p>Cet article propose une approche &lt;strong>pragmatique et idiomatique Go&lt;/strong>, issue de l’expérience terrain, pour comprendre &lt;strong>quand une constante est un bon design&lt;/strong>… et &lt;strong>quand elle cache un problème&lt;/strong>.&lt;/p></description></item><item><title>Interfaces, Fonctions et Modules en Go : Structurer son code pour le TDD sans le complexifier</title><link>https://blog-dev.simpleenough.net/fr/blog/go-tdd-interfaces-functions/</link><pubDate>Mon, 15 Dec 2025 10:08:49 +0200</pubDate><guid>https://blog-dev.simpleenough.net/fr/blog/go-tdd-interfaces-functions/</guid><description>&lt;h2 id="i-introduction" class="heading">I. Introduction&lt;a href="#i-introduction" aria-labelledby="i-introduction">
&lt;!-- &lt;i class="fas fa-link anchor">&lt;/i> -->
 &lt;svg class="svg-inline--fa fas fa-link anchor" fill="currentColor" aria-hidden="true" role="img" viewBox="0 0 640 512">&lt;use href="#fas-link">&lt;/use>&lt;/svg>&amp;nbsp;
 &lt;/a>
&lt;/h2>
&lt;p>Go est un langage minimaliste, mais cette simplicité peut donner l’impression qu’il “manque quelque chose” lorsqu’on aborde des architectures plus poussées, du Test-Driven Development ou la nécessité de mocker certaines dépendances. Très vite, les développeurs venant de Java, C# ou Python se posent les mêmes questions :&lt;/p>
&lt;ul>
&lt;li>&lt;em>Dois-je transformer toutes mes fonctions en structs + interfaces pour tester ?&lt;/em>&lt;/li>
&lt;li>&lt;em>Comment organiser mes packages pour qu’ils soient modulaires et testables ?&lt;/em>&lt;/li>
&lt;li>&lt;em>Où placer les interfaces ? Chez le fournisseur ou chez le consommateur ?&lt;/em>&lt;/li>
&lt;li>&lt;em>Comment isoler un package qui expose uniquement des fonctions ?&lt;/em>&lt;/li>
&lt;li>&lt;em>Comment détecter automatiquement un changement de signature ?&lt;/em>&lt;/li>
&lt;/ul>
&lt;hr>




&lt;h2 id="ii-le-modèle-go--simple-modulaire-mais-différent" class="heading">II. Le modèle Go : simple, modulaire, mais différent&lt;a href="#ii-le-mod%c3%a8le-go--simple-modulaire-mais-diff%c3%a9rent" aria-labelledby="ii-le-modèle-go--simple-modulaire-mais-différent">
&lt;!-- &lt;i class="fas fa-link anchor">&lt;/i> -->
 &lt;svg class="svg-inline--fa fas fa-link anchor" fill="currentColor" aria-hidden="true" role="img" viewBox="0 0 640 512">&lt;use href="#fas-link">&lt;/use>&lt;/svg>&amp;nbsp;
 &lt;/a>
&lt;/h2>
&lt;p>Contrairement à Java ou C#, Go ne repose pas sur l’héritage, les classes ou les gros frameworks d’injection de dépendances.&lt;/p></description></item><item><title>Consumer-Reported Dependency Health</title><link>https://blog-dev.simpleenough.net/fr/blog/dependencyhealth/</link><pubDate>Mon, 08 Dec 2025 11:18:06 +0200</pubDate><guid>https://blog-dev.simpleenough.net/fr/blog/dependencyhealth/</guid><description>&lt;h2 id="i-réinventer-la-manière-dévaluer-la-santé-des-systèmes-distribués" class="heading">I. Réinventer la manière d’évaluer la santé des systèmes distribués&lt;a href="#i-r%c3%a9inventer-la-mani%c3%a8re-d%c3%a9valuer-la-sant%c3%a9-des-syst%c3%a8mes-distribu%c3%a9s" aria-labelledby="i-réinventer-la-manière-dévaluer-la-santé-des-systèmes-distribués">
&lt;!-- &lt;i class="fas fa-link anchor">&lt;/i> -->
 &lt;svg class="svg-inline--fa fas fa-link anchor" fill="currentColor" aria-hidden="true" role="img" viewBox="0 0 640 512">&lt;use href="#fas-link">&lt;/use>&lt;/svg>&amp;nbsp;
 &lt;/a>
&lt;/h2>
&lt;p>Dans les architectures distribuées modernes, la santé d’un système dépend autant — voire davantage — de l’état de ses &lt;strong>dépendances&lt;/strong> que de son état interne. Pourtant, la plupart des stratégies de monitoring reposent encore sur des healthchecks synthétiques ou dédiés : endpoints &lt;code>/health&lt;/code>, sondes liveness/readiness, scripts externes, etc.&lt;/p></description></item><item><title>Comment gérer les paramètres optionnels en Go.</title><link>https://blog-dev.simpleenough.net/fr/blog/optiongo/</link><pubDate>Sat, 15 Nov 2025 10:00:00 +0200</pubDate><guid>https://blog-dev.simpleenough.net/fr/blog/optiongo/</guid><description>&lt;h1 id="i-comment-gérer-les-paramètres-optionnels-en-go" class="heading">I. Comment gérer les paramètres optionnels en Go&lt;a href="#i-comment-g%c3%a9rer-les-param%c3%a8tres-optionnels-en-go" aria-labelledby="i-comment-gérer-les-paramètres-optionnels-en-go">
&lt;!-- &lt;i class="fas fa-link anchor">&lt;/i> -->
 &lt;svg class="svg-inline--fa fas fa-link anchor" fill="currentColor" aria-hidden="true" role="img" viewBox="0 0 640 512">&lt;use href="#fas-link">&lt;/use>&lt;/svg>&amp;nbsp;
 &lt;/a>
&lt;/h1>
&lt;p>Dans la plupart des langages modernes, il est possible de définir des valeurs par défaut dans les fonctions ou de les surcharger pour couvrir plusieurs cas d’usage.&lt;br>
Go, lui, ne propose &lt;strong>ni paramètres optionnels&lt;/strong>, ni &lt;strong>surcharge&lt;/strong>, ni &lt;strong>valeurs par défaut&lt;/strong> dans les signatures de fonction.&lt;br>
Pourtant, les besoins restent les mêmes : créer des APIs lisibles, stables et capables d’évoluer sans casser les utilisateurs.&lt;/p></description></item><item><title>Pourquoi et comment utiliser les sous-modules Git</title><link>https://blog-dev.simpleenough.net/fr/blog/gitsubmodules/</link><pubDate>Wed, 02 Jul 2025 18:30:00 +0200</pubDate><guid>https://blog-dev.simpleenough.net/fr/blog/gitsubmodules/</guid><description>&lt;h2 id="i-introduction-aux-sous-modules-git" class="heading">I. Introduction aux sous-modules Git&lt;a href="#i-introduction-aux-sous-modules-git" aria-labelledby="i-introduction-aux-sous-modules-git">
&lt;!-- &lt;i class="fas fa-link anchor">&lt;/i> -->
 &lt;svg class="svg-inline--fa fas fa-link anchor" fill="currentColor" aria-hidden="true" role="img" viewBox="0 0 640 512">&lt;use href="#fas-link">&lt;/use>&lt;/svg>&amp;nbsp;
 &lt;/a>
&lt;/h2>
&lt;p>Les &lt;strong>sous-modules Git&lt;/strong> sont une fonctionnalité native qui permet d’inclure un dépôt Git à l’intérieur d’un autre. Cette approche est utile lorsqu’il faut gérer des &lt;strong>dépendances&lt;/strong> entre différents codebases, tout en conservant leur autonomie.&lt;/p>
&lt;p>Les sous-modules pointent vers une &lt;strong>révision précise&lt;/strong> d’un dépôt externe. Cela garantit que chaque version du projet principal utilise exactement la même version de ses sous-modules, assurant ainsi &lt;strong>cohérence et reproductibilité&lt;/strong>.&lt;/p></description></item></channel></rss>