<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/"><channel><title>Elie Nehmé — Idées et publications</title><link>https://elienehme.fr/</link><description>Idées publiées sur elienehme.fr et publications sur Medium et Hashnode, par Elie Nehmé</description><language>fr</language><managingEditor>contact@elienehme.fr (Elie Nehmé)</managingEditor><atom:link href="https://elienehme.fr/rss.xml" rel="self" type="application/rss+xml"/><item><title>Plus le projet grossit, plus l’IA se trompe: le bounded context comme investissement</title><link>https://elie29.hashnode.dev/plus-le-projet-grossit-plus-l-ia-se-trompe</link><guid isPermaLink="true">https://elie29.hashnode.dev/plus-le-projet-grossit-plus-l-ia-se-trompe</guid><description>Sur un projet green field, l’IA générative fait merveille; à mesure que le projet grossit, ses réponses perdent en justesse. Le modèle n’a pas changé: c’est le contexte qu’elle doit tenir qui a grossi. Context Budget, la méthode que j’ai mise en place sur plusieurs projets, découpe le code en bounded contexts que l’IA peut tenir en entier: le découpage se paie une fois, puis chaque requête ne paie que son propre contexte.</description><pubDate>Fri, 02 Oct 2026 00:00:00 GMT</pubDate><dc:language>fr</dc:language></item><item><title>Quand tout le monde met un site web en ligne</title><link>https://elienehme.fr/ideas/when-everyone-ships-a-site/</link><guid isPermaLink="true">https://elienehme.fr/ideas/when-everyone-ships-a-site/</guid><description>Le vibe coding a mis la création d’un site web à portée de tous, cependant, il n’a pas réussi à rendre ce site web unique et sûr</description><pubDate>Mon, 28 Sep 2026 00:00:00 GMT</pubDate><dc:language>fr</dc:language></item><item><title>Corriger ou atténuer: le CRA ne prévoit que deux réponses</title><link>https://elie29.hashnode.dev/corriger-ou-attenuer-le-cra-ne-laisse-que-deux-reponses</link><guid isPermaLink="true">https://elie29.hashnode.dev/corriger-ou-attenuer-le-cra-ne-laisse-que-deux-reponses</guid><description>Depuis le 11 septembre 2026, le Cyber Resilience Act (CRA) impose une alerte sous 24h pour une vulnérabilité activement exploitée dans un produit, y compris sur le parc existant. Ce délai se prépare dans la chaîne de livraison, dans le nombre de versions maintenues et dans la capacité des produits à être atténués sans développeur.</description><pubDate>Fri, 25 Sep 2026 00:00:00 GMT</pubDate><dc:language>fr</dc:language></item><item><title>Une vision qui ne s’exécute pas n’en est pas une</title><link>https://elienehme.fr/ideas/a-vision-that-is-not-executed-is-not-one/</link><guid isPermaLink="true">https://elienehme.fr/ideas/a-vision-that-is-not-executed-is-not-one/</guid><description>Une vision ne vaut que si les équipes peuvent la suivre: une exécution fidèle et praticable, une trajectoire pragmatique plutôt que de jolies idées intenables</description><pubDate>Wed, 23 Sep 2026 00:00:00 GMT</pubDate><dc:language>fr</dc:language></item><item><title>From Legacy Artifacts to Served Context: My Six-Stage Method</title><link>https://elie29.medium.com/from-legacy-artifacts-to-served-context-my-six-stage-method-09f668052904</link><guid isPermaLink="true">https://elie29.medium.com/from-legacy-artifacts-to-served-context-my-six-stage-method-09f668052904</guid><description>Six étapes pour construire un graphe de connaissances à partir de C, de PL/SQL, de PHP et de vingt ans de documents, le garder vrai release après release et le servir à un LLM: des collecteurs déterministes, une barrière SHACL, des faits ajoutés et jamais réécrits, et un graphe qui sélectionne avant que le modèle ne lise.</description><pubDate>Fri, 18 Sep 2026 00:00:00 GMT</pubDate><dc:language>en</dc:language></item><item><title>Pourquoi réinventer ce qui existe déjà, ou ce qui deviendra natif demain</title><link>https://elienehme.fr/ideas/reinventing-what-already-exists/</link><guid isPermaLink="true">https://elienehme.fr/ideas/reinventing-what-already-exists/</guid><description>Reproduire des skills génériques que les plugins et intégrations fournissent déjà, et que les prochains modèles absorberont, est rarement le bon investissement</description><pubDate>Mon, 14 Sep 2026 00:00:00 GMT</pubDate><dc:language>fr</dc:language></item><item><title>Ontology-Based Context Engineering: When RAG Is Not Enough</title><link>https://elie29.medium.com/ontology-based-context-engineering-when-rag-is-not-enough-124e6b1de6bb</link><guid isPermaLink="true">https://elie29.medium.com/ontology-based-context-engineering-when-rag-is-not-enough-124e6b1de6bb</guid><description>Pourquoi le RAG vectoriel a échoué sur un legacy de deux millions de lignes, et comment une petite ontologie versionnée dans Git, avec RDF, SHACL et SPARQL, donne à un LLM un contexte filtré par release et un chemin traçable.</description><pubDate>Fri, 11 Sep 2026 00:00:00 GMT</pubDate><dc:language>en</dc:language></item><item><title>Si l’IA remplace les développeurs, qui décidera de ce qu’elle construit?</title><link>https://elienehme.fr/ideas/if-ai-replaces-developers-who-decides/</link><guid isPermaLink="true">https://elienehme.fr/ideas/if-ai-replaces-developers-who-decides/</guid><description>«L’IA va remplacer tout le monde», ou «les développeurs». Remplacer un métier parce qu’on peut générer son outil, c’est confondre les deux</description><pubDate>Sun, 30 Aug 2026 00:00:00 GMT</pubDate><dc:language>fr</dc:language></item><item><title>I Tried BMAD on a Real Feature</title><link>https://elie29.medium.com/i-tried-bmad-on-a-real-feature-69afd0ba53b3</link><guid isPermaLink="true">https://elie29.medium.com/i-tried-bmad-on-a-real-feature-69afd0ba53b3</guid><description>BMAD avec Superpowers sur une vraie fonctionnalité, entre un backend Java et un frontend Angular: ce qu’une méthode formelle ajoute à une spécification vivante, où les deux se heurtent, et quoi adopter, adapter ou écarter.</description><pubDate>Mon, 24 Aug 2026 00:00:00 GMT</pubDate><dc:language>en</dc:language></item><item><title>The Living Specification: How I Keep AI-Written Code Correct</title><link>https://elie29.medium.com/the-living-specification-how-i-keep-ai-written-code-correct-907be05c9eed</link><guid isPermaLink="true">https://elie29.medium.com/the-living-specification-how-i-keep-ai-written-code-correct-907be05c9eed</guid><description>Une spécification vivante, des invariants, des revues contradictoires par l’IA et une vérification réelle font que le code écrit par l’IA reste correct, et l’ingénierie passe de l’écriture du code à l’exercice du jugement. Seconde partie d’une série de deux articles.</description><pubDate>Wed, 19 Aug 2026 00:00:00 GMT</pubDate><dc:language>en</dc:language></item><item><title>Le code n’est qu’un moyen, pas une fin</title><link>https://elienehme.fr/ideas/code-is-a-means-not-an-end/</link><guid isPermaLink="true">https://elienehme.fr/ideas/code-is-a-means-not-an-end/</guid><description>Un développeur qui se limite à écrire du code aura moins de travail, voire plus du tout. La question n’est pas qui écrit le code, mais ce qu’il apporte au-delà</description><pubDate>Sun, 16 Aug 2026 00:00:00 GMT</pubDate><dc:language>fr</dc:language></item><item><title>AI Writes the Code. So What Is the Engineer’s Job Now?</title><link>https://elie29.medium.com/ai-writes-the-code-so-what-is-the-engineers-job-now-79fa3fdf1b88</link><guid isPermaLink="true">https://elie29.medium.com/ai-writes-the-code-so-what-is-the-engineers-job-now-79fa3fdf1b88</guid><description>Comment j’ai demandé à Claude Code d’attaquer une conception plutôt que de la construire, les trois bugs que la revue contradictoire a trouvés avant tout code, et pourquoi l’ingénierie passe de la production de code à la validation technique.</description><pubDate>Sat, 15 Aug 2026 00:00:00 GMT</pubDate><dc:language>en</dc:language></item><item><title>L’avantage concurrentiel durable, quand l’IA écrit le code</title><link>https://elienehme.fr/ideas/competitive-advantage-when-ai-writes-the-code/</link><guid isPermaLink="true">https://elienehme.fr/ideas/competitive-advantage-when-ai-writes-the-code/</guid><description>Alors que l’IA sait de mieux en mieux écrire du code, les entreprises doivent repenser ce qui fera leur avantage concurrentiel durable</description><pubDate>Mon, 10 Aug 2026 00:00:00 GMT</pubDate><dc:language>fr</dc:language></item><item><title>Les patterns avancés ne compensent jamais un socle fragile</title><link>https://elienehme.fr/ideas/patterns-never-make-up-for-a-fragile-foundation/</link><guid isPermaLink="true">https://elienehme.fr/ideas/patterns-never-make-up-for-a-fragile-foundation/</guid><description>Hexagonale, clean architecture, CQRS sont des patterns puissants, souvent brandis sans le socle qui les fait tenir: les bonnes pratiques de développement</description><pubDate>Tue, 02 Jun 2026 00:00:00 GMT</pubDate><dc:language>fr</dc:language></item><item><title>Ce que l’IA change, et ce qu’elle ne change pas, en ingénierie logicielle</title><link>https://elienehme.fr/ideas/what-ai-changes-and-what-it-doesnt/</link><guid isPermaLink="true">https://elienehme.fr/ideas/what-ai-changes-and-what-it-doesnt/</guid><description>Une courte liste de ce que l’IA a changé dans le métier, une plus courte de ce qu’elle n’a pas changé, et ce que cela fait au travail de l’ingénieur</description><pubDate>Mon, 02 Feb 2026 00:00:00 GMT</pubDate><dc:language>fr</dc:language></item><item><title>Quand false ne veut rien dire</title><link>https://elie29.hashnode.dev/quand-false-ne-veut-rien-dire</link><guid isPermaLink="true">https://elie29.hashnode.dev/quand-false-ne-veut-rien-dire</guid><description>Quand une méthode peut échouer pour plusieurs raisons, retourner true ou false perd la seule information dont l’appelant a besoin, la cause: pourquoi le retour booléen est un anti-pattern, d’où il vient, et quoi retourner à la place.</description><pubDate>Thu, 18 Dec 2025 00:00:00 GMT</pubDate><dc:language>fr</dc:language></item><item><title>Kill Feature Branching or Die Trying</title><link>https://elie29.medium.com/kill-feature-branching-or-die-trying-5da0fe41b806</link><guid isPermaLink="true">https://elie29.medium.com/kill-feature-branching-or-die-trying-5da0fe41b806</guid><description>Pourquoi les branches de fonctionnalité qui s’éternisent nuisent à la livraison continue, ce que les feature toggles offrent à la place, et un exemple .NET qui permet d’activer une fonctionnalité via un en-tête HTTP en cinq étapes.</description><pubDate>Mon, 12 May 2025 00:00:00 GMT</pubDate><dc:language>en</dc:language></item><item><title>La CI/CD n’est pas une priorité !</title><link>https://elie29.hashnode.dev/la-cicd-nest-pas-une-priorite</link><guid isPermaLink="true">https://elie29.hashnode.dev/la-cicd-nest-pas-une-priorite</guid><description>Mettre en place une CI/CD est souvent le premier réflexe DevOps d’une équipe, et souvent prématuré: ce qu’est une vraie chaîne, ce qu’il faut régler avant, et pourquoi la persistance et l’infrastructure méritent un soin à part.</description><pubDate>Wed, 07 May 2025 00:00:00 GMT</pubDate><dc:language>fr</dc:language></item><item><title>Justifier le Craftsmanship auprès des DSI: ROI, contexte et impact réel</title><link>https://elie29.hashnode.dev/justifier-le-craftsmanship-aupres-des-dsi-roi-contexte-et-impact-reel</link><guid isPermaLink="true">https://elie29.hashnode.dev/justifier-le-craftsmanship-aupres-des-dsi-roi-contexte-et-impact-reel</guid><description>Un CTO incapable de démontrer le ROI de Sonar et GitLab, un directeur qui ne peut pas chiffrer les bénéfices du pair programming: pourquoi le Craftsmanship se justifie par les problèmes métier qu’il résout, et se mesure à deux niveaux.</description><pubDate>Thu, 01 May 2025 00:00:00 GMT</pubDate><dc:language>fr</dc:language></item><item><title>Building a Resilient Site-Aware Synchronization</title><link>https://elie29.hashnode.dev/building-a-resilient-site-aware-synchronization</link><guid isPermaLink="true">https://elie29.hashnode.dev/building-a-resilient-site-aware-synchronization</guid><description>Plusieurs sites on-premise, chacun avec sa propre base de données, qui doivent continuer à fonctionner pendant plusieurs jours de coupure réseau, puis converger malgré tout: une table outbox, un cluster RabbitMQ, un échange de type fanout, des consommateurs idempotents et une source de référence pour rejouer les événements.</description><pubDate>Mon, 14 Apr 2025 00:00:00 GMT</pubDate><dc:language>en</dc:language></item><item><title>Migrer vers le cloud, ce n’est pas déménager les serveurs</title><link>https://elienehme.fr/ideas/moving-to-the-cloud-is-not-moving-the-servers/</link><guid isPermaLink="true">https://elienehme.fr/ideas/moving-to-the-cloud-is-not-moving-the-servers/</guid><description>Tout basculer en IaaS, ou tout conteneuriser tel quel avec des images de plusieurs gigaoctets, n’est pas une migration: c’est un déménagement plus coûteux</description><pubDate>Sat, 02 Mar 2024 00:00:00 GMT</pubDate><dc:language>fr</dc:language></item><item><title>Une user story n’est pas une liste de tâches techniques</title><link>https://elienehme.fr/ideas/a-user-story-is-not-a-technical-task-list/</link><guid isPermaLink="true">https://elienehme.fr/ideas/a-user-story-is-not-a-technical-task-list/</guid><description>Coder, tester, décrire l’implémentation: répétées à chaque user story, ces tâches n’apportent aucune valeur métier, et Jira n’est pas un outil de développement</description><pubDate>Tue, 10 Oct 2023 00:00:00 GMT</pubDate><dc:language>fr</dc:language></item><item><title>Stratégie de déploiement Blue/Green</title><link>https://elie29.hashnode.dev/strategie-de-deploiement-bluegreen</link><guid isPermaLink="true">https://elie29.hashnode.dev/strategie-de-deploiement-bluegreen</guid><description>Au-delà de la définition des manuels: les décisions qu’une équipe doit prendre, composant par composant, pour que le Blue/Green fonctionne vraiment, de la compatibilité de la persistance et des sessions au décommissionnement et au retour arrière.</description><pubDate>Sun, 27 Aug 2023 00:00:00 GMT</pubDate><dc:language>fr</dc:language></item><item><title>Pourquoi les revues d’architecture échouent si souvent</title><link>https://elienehme.fr/ideas/why-architecture-reviews-often-fail/</link><guid isPermaLink="true">https://elienehme.fr/ideas/why-architecture-reviews-often-fail/</guid><description>Les revues arrivent au mauvais moment, avec la mauvaise question. Ce qui les a rendues utiles, dans mon expérience</description><pubDate>Mon, 06 Feb 2023 00:00:00 GMT</pubDate><dc:language>fr</dc:language></item><item><title>Java functional programming to leverage polymorphism</title><link>https://elie29.hashnode.dev/java-functional-programming-to-leverage-polymorphism</link><guid isPermaLink="true">https://elie29.hashnode.dev/java-functional-programming-to-leverage-polymorphism</guid><description>Comment le switch d’une fabrique grossit à chaque nouveau cas, et comment une map d’interfaces fonctionnelles, puis une énumération, garde sa complexité constante quel que soit le nombre de types ajoutés.</description><pubDate>Wed, 13 Apr 2022 00:00:00 GMT</pubDate><dc:language>en</dc:language></item><item><title>Apache Kafka along with RxJS operators</title><link>https://elie29.medium.com/apache-kafka-along-with-rxjs-operators-31c00d46c35a</link><guid isPermaLink="true">https://elie29.medium.com/apache-kafka-along-with-rxjs-operators-31c00d46c35a</guid><description>Un processeur Kafka entre deux topics ne doit perdre aucun message pendant que son producteur est en pause: pourquoi takeUntil, switchMap et combineLatest perdent des données, et comment windowToggle et bufferToggle les conservent.</description><pubDate>Thu, 24 Mar 2022 00:00:00 GMT</pubDate><dc:language>en</dc:language></item><item><title>Le coût caché des décisions techniques</title><link>https://elienehme.fr/ideas/the-hidden-cost-of-technical-decisions/</link><guid isPermaLink="true">https://elienehme.fr/ideas/the-hidden-cost-of-technical-decisions/</guid><description>Le prix d’une décision technique, c’est ce qu’elle fait à toutes celles qui suivent. Trois questions à poser avant d’en prendre une</description><pubDate>Thu, 11 Nov 2021 00:00:00 GMT</pubDate><dc:language>fr</dc:language></item><item><title>Deploy Quarkus Application with GitLab-CI to Heroku PaaS</title><link>https://elie29.medium.com/deploy-quarkus-application-with-gitlab-ci-to-heroku-paas-72c0e9214669</link><guid isPermaLink="true">https://elie29.medium.com/deploy-quarkus-application-with-gitlab-ci-to-heroku-paas-72c0e9214669</guid><description>D’un projet Quarkus vide à trois environnements Heroku avec un seul pipeline GitLab-CI: règles de branches et de tags, variables protégées, cache des dépendances et analyses de sécurité gratuites.</description><pubDate>Sat, 03 Apr 2021 00:00:00 GMT</pubDate><dc:language>en</dc:language></item><item><title>Frontend JWT token storage</title><link>https://elie29.medium.com/frontend-jwt-token-storage-77cbe6dc680b</link><guid isPermaLink="true">https://elie29.medium.com/frontend-jwt-token-storage-77cbe6dc680b</guid><description>Local storage, session storage et cookies ordinaires exposent un JWT au vol: trois façons de conserver le jeton dans un navigateur, une closure, un cookie sécurisé et un service worker, et ce que chacune sacrifie.</description><pubDate>Sun, 14 Mar 2021 00:00:00 GMT</pubDate><dc:language>en</dc:language></item><item><title>Qu’est-ce qui rend une base de code capable d’évoluer?</title><link>https://elienehme.fr/ideas/what-makes-a-codebase-evolvable/</link><guid isPermaLink="true">https://elienehme.fr/ideas/what-makes-a-codebase-evolvable/</guid><description>L’évolutivité se mesure en pratique, pas sur un schéma. Cinq traits sans éclat des bases de code qui vieillissent bien</description><pubDate>Thu, 02 Apr 2020 00:00:00 GMT</pubDate><dc:language>fr</dc:language></item><item><title>Refactoring: from strategy to interpreter pattern with Jest testing tool</title><link>https://elie29.medium.com/refactoring-from-strategy-to-interpreter-pattern-with-jest-testing-tool-58ef7bf0f2fb</link><guid isPermaLink="true">https://elie29.medium.com/refactoring-from-strategy-to-interpreter-pattern-with-jest-testing-tool-58ef7bf0f2fb</guid><description>Évaluer des expressions arithmétiques avec priorité des opérateurs: d’un switch qui viole le principe ouvert/fermé au polymorphisme, puis un lexer, un parser et un interpréteur, chaque étape vérifiée par des tests Jest.</description><pubDate>Sun, 25 Nov 2018 00:00:00 GMT</pubDate><dc:language>en</dc:language></item><item><title>Refactoring: How to avoid nested or several conditionals within a function?</title><link>https://elie29.medium.com/refactoring-how-to-avoid-nested-or-several-conditionals-within-a-function-a25df6c27f62</link><guid isPermaLink="true">https://elie29.medium.com/refactoring-how-to-avoid-nested-or-several-conditionals-within-a-function-a25df6c27f62</guid><description>Deux sorties de la pyramide de la mort: une petite fonction d’assertion qui s’enchaîne au lieu de s’imbriquer, et des conditions transformées en accesseurs pour que Math.max remplace les branchements.</description><pubDate>Mon, 05 Nov 2018 00:00:00 GMT</pubDate><dc:language>en</dc:language></item><item><title>Object Calisthenics: One level ! But how can we manage to exit a loop ?</title><link>https://elie29.medium.com/object-calisthenics-one-level-but-how-can-we-manage-to-exit-a-loop-4485dbaf7f7d</link><guid isPermaLink="true">https://elie29.medium.com/object-calisthenics-one-level-but-how-can-we-manage-to-exit-a-loop-4485dbaf7f7d</guid><description>Un seul niveau d’indentation par méthode, et pourtant un moyen de sortir d’une boucle: array_reduce ou la récursion à la place d’un retour anticipé imbriqué, avec le coût de chacun mesuré sur cinquante mille éléments.</description><pubDate>Tue, 30 Oct 2018 00:00:00 GMT</pubDate><dc:language>en</dc:language></item></channel></rss>