Domain Modeling Made Functional, Part 1 with Scott Wlaschin
We’re joined by Scott Wlaschin, author of “Domain Modeling Made Functional” and creator of the popular F# for Fun and Profit blog, to explore the powerful pairing of domain-driven design (DDD) and functional programming. In Part 1 we explore the fundamentals of DDD - not as a rigid methodology, but as a communication-first approach to building software that actually solves real problems.
Scott shares his journey from Smalltalk developer to functional programming advocate, and how he discovered that DDD and functional programming are natural companions. We dive deep into why most software projects fail not because of technical issues, but because developers don’t listen to what users actually want.
Topics include:
- Strategic vs. tactical DDD - and why most people focus on the wrong part
- What domains and subdomains really are (hint: they already exist in your business)
- Core, supporting, and generic subdomains - and where to focus your effort
- Bounded contexts and why boundaries matter for both code and project management
- Ubiquitous language - the ’everywhere’ language or common language
- The “garbage in, garbage out” principle and why good inputs matter more than perfect code
- Shared mental models
- Event storming and domain storytelling as discovery techniques
- Fighting the impulse toward database-driven or class-driven design
- Conway’s Law and the reverse Conway manoeuvre for team organisation
Scott also shares practical examples from his experience, including his work at a skincare company where he became a domain expert on cosmetic formulations and built one of his most successful products through constant communication with experts.
Whether you’re new to DDD or have been burned by overly complex implementations, this episode offers a refreshing perspective on what domain-driven design really means - and why it’s fundamentally about empathy, communication, and solving the right problems.
This is Part 1 of a 2-part series. In Part 2, we’ll explore functional programming concepts, how they complement DDD, and practical techniques for modeling domains functionally.
Show Links
- Scott Wlaschin’s Website
- Scott Wlaschin on X/Twitter
- Scott Wlaschin on Bluesky
- Scott Wlaschin on GitHub
- F# for Fun and Profit
- Domain Modeling Made Functional
- Three Devs and a Maybe - Domain Modeling Made Functional
- EventStorming
- Domain Storytelling
- Conway’s Law
- Dan North - Accelerating Agile
- Chesterton’s Fence