Un moment entre passionnés
Ce premier épisode de la série, tourné dans les locaux de Yield Studio, s’ouvre sur une discussion entre passionnés du code et du craft. Antoine Coulon, Lead Software Engineer très actif dans la communauté open source, partage son parcours, ses convictions et ses pratiques de développement. Il est rejoint par James H, CTO de Yield Studio, pour un échange approfondi autour d’un sujet pointu : la librairie TypeScript Effect.js.
Faire de sa passion un métier
Antoine revient sur son quotidien de développeur : curieux, pragmatique et avide d’apprendre. Pour lui, l’open source est un terrain d’expérimentation infini, une « aire de jeu » où l’on peut monter en compétence en résolvant des problèmes réels, parfois absents du cadre rigide de l’entreprise.
"L’open source, c’est avant tout une manière d’apprendre en s’amusant, de contribuer à des projets qui dépassent les frontières et de monter en compétence sur des sujets qu’on ne touche pas toujours en entreprise."
Pourquoi Yield Studio soutient On Zone
James explique l’intérêt de Yield Studio pour des initiatives comme ce podcast : sortir du marketing, donner la parole aux techs, créer de la valeur entre pairs. Pour lui, c’est aussi un levier de recrutement : les profils qu’ils recherchent – très seniors, très craft – sont souvent impliqués dans l’open source. Et ça, ça compte.
"Les profils qui font de l’open source ont une longueur d’avance. Et quand on dit qu’on consacre du temps à ça chez Yield, ça fait tilt."
Effect.js : un changement de paradigme
Antoine introduit ensuite le cœur du sujet : Effect.js, une librairie TypeScript orientée vers la programmation fonctionnelle et l’ingénierie logicielle robuste. Elle propose un modèle unique d’exécution basé sur un runtime propre, une gestion typée des erreurs et des dépendances, et une approche déclarative qui change la manière même de concevoir une application.
Trois canaux typés
Effect.js repose sur trois types génériques :
- R : les dépendances nécessaires (le « contexte »)
- E : les erreurs possibles
- A : le résultat du programme
Ce triplé rend chaque bloc de code explicite, composable et sécurisé par le typage. Une promesse classique, elle, ne permet pas d’encoder les erreurs ou les dépendances de manière aussi fine.
"Avec Effect, tu décris ton programme. Il ne s’exécute que lorsque tu l’interprètes. C’est lazy, comme une promesse en attente. Mais typé de bout en bout."
Développer en confiance
Antoine partage ensuite les bénéfices de cette approche :
- Moins de code défensif
- Des erreurs typées, explicites, documentées
- Un programme qui ne compile pas s’il manque une dépendance ou une gestion d’erreur
Et surtout : un code plus maintenable, plus testable et plus prédictible.
"Si ça compile, ça fonctionne. C’est le pari d’Effect. Et après deux ans d’utilisation en production, je peux dire que ça tient la route."
Un exemple concret : injection de dépendance
Antoine illustre ensuite comment Effect.js facilite la mise en œuvre du Dependency Inversion Principle. Chaque service est défini comme une abstraction (interface) enregistrée dans un runtime context. Cela permet une injection de dépendance pure, type-safe, idéale pour le test, la composition, et la lisibilité.
"La dépendance devient un premier-class citizen du système de types. Et ça change ta manière de coder."
Pour aller plus loin
Antoine clôt l’épisode avec quelques conseils :
- Ne pas commencer par la librairie elle-même, mais par comprendre les problèmes qu’elle résout.
- Lire la doc officielle et ses propres articles sur GitHub.
- L’adopter de manière incrémentale, module par module.
- Et ne pas hésiter à expérimenter aussi côté front, où Effect trouve aussi sa place (ex. sérialisation, parsing, gestion d'état).
Une communauté, un état d’esprit
Cette discussion met en lumière un état d’esprit cher à Yield Studio : exigence technique, plaisir d’apprendre, transmission, et passion pour le code bien fait. Ce premier épisode n’est pas une démo. C’est une invitation à penser différemment, à écrire du logiciel plus clair, plus robuste, plus juste.