Book Review: Functional Design22 Jan 2024
A book about functional design by Uncle Bob?
When I read about a new book by Uncle Bob on X, I was immediately excited because so far I had read almost all of his books and I love functional programming since years. A perfect match!
So I pre-ordered the book already march 2023 and immediately started reading when it finally arrived in january 2024.
The book starts with basic concepts of functional programming like immutability, recursion and laziness.
It continues comparing object-oriented programming (OOP) solutions and functional programming (FP) solutions using multiple examples to explain the differences between both approaches and to emphasize certain benefits of FP over OOP.
Uncle Bob then explores software design in FP by discussing how SOLID principles apply to FP and how common design patterns are applied to FP.
He finishes the book with a comprehensive case study on how to design and implement an entire game in FP.
All in all, Functional Design: Principles, Patterns, and Practices is definitively a solid introduction into FP for OOP developers. It is full of practical code samples - which are all in Clojure. In fact, to me it felt like half the book is filled with Clojure code.
For the first half of the book I tried to follow the code samples and then concluded: I don’t want to learn Clojure - at least not now - as Clojure is a dynamic programming language and I am clearly a fan of the power of statically typed programming languages like F#.
I finally decided to skip most of the Clojure examples, focused on FP concepts and design aspects and finished the second half of the book in half a day.
If you already have solid practical experiences in FP like me, then this book will not offer much new insights to you.
If you are new to FP and you like the freedom of dynamically types programming languages, then this book is certainly a great starting point for your FP journey!
If you are new to FP and you prefer the safety of strongly typed programming languages, then I rather recommend this book Domain Modeling Made Functional: Tackle Software Complexity with Domain-Driven Design and F# to start your FP journey.