Grokking Simplicity: Taming complex software with functional thinking
Original price was: €50.€44Current price is: €44.
Price: $49.99 - $43.99
(as of Aug 03, 2025 10:00:42 UTC – Details)
Finally, functional programming that actually makes sense for working developers.
Master the game-changing “Actions, Calculations, and Data” framework that transforms how you think about code complexity. Stop wrestling with distributed systems bugs, testing nightmares, and unmaintainable code. This practical guide teaches you the professional functional programming skills that top developers use to build reliable, scalable systems.
What You’ll Learn:
The revolutionary three-category mental model – Instantly classify any piece of code and know exactly how to handle itPractical debugging techniques – Isolate timing bugs in distributed systems using timeline diagramsReal refactoring strategies – Transform messy actions into clean, testable calculationsProduction-ready patterns – Copy-on-write, defensive copying, and stratified design for maintainable codeTeam coordination skills – Higher-order functions and composable abstractions that scale
Perfect for Two Types of Developers:
Ready to Level Up? (2-5 years experience)
No scary math or academic theory. Start with concepts you already know and build practical skills you can use Monday morning. Every technique works in JavaScript, Python, Java, or whatever language you’re using now.
Looking for a Team Resource? (Senior developers)
Finally, the functional programming book you can confidently recommend to your entire team. Practical, business-focused examples that work with existing codebases – not greenfield rewrites.
What Makes This Different:
Unlike academic FP books that get lost in theory, this guide solves real problems:
Pizza restaurant distributed systems that teach timeline coordinationE-commerce coupon systems that demonstrate data transformationsEmail marketing platforms that show action isolation techniquesBanking workflows that illustrate immutable state management
500+ diagrams and step-by-step code evolution make complex concepts crystal clear. No prior functional programming experience required.
The Bottom Line:
Your code is getting more complex. Distributed systems, asynchronous operations, and multi-threaded environments are the new normal. Traditional object-oriented approaches aren’t enough anymore.
This book gives you the mental tools professional functional programmers use to tame complexity and build systems that actually work reliably at scale.
About the Author:
Eric Normand has been teaching functional programming to working developers since 2007. He’s consulted with companies from startups to Fortune 500s, helping them adopt FP practices that improve their bottom line. His practical, business-focused approach has helped thousands of developers level up their skills without the academic intimidation.
Purchase includes free PDF, Kindle, and ePub formats from Manning Publications.
Publisher : Manning
Publication date : May 18, 2021
Language : English
Print length : 550 pages
ISBN-10 : 1617296201
ISBN-13 : 978-1617296208
Item Weight : 2.17 pounds
Dimensions : 7.38 x 1.1 x 9.25 inches
Best Sellers Rank: #270,015 in Books (See Top 100 in Books) #4 in Functional Software Programming #45 in JavaScript Programming (Books) #250 in Software Development (Books)
Customer Reviews: 4.6 4.6 out of 5 stars 126 ratings var dpAcrHasRegisteredArcLinkClickAction; P.when(‘A’, ‘ready’).execute(function(A) { if (dpAcrHasRegisteredArcLinkClickAction !== true) { dpAcrHasRegisteredArcLinkClickAction = true; A.declarative( ‘acrLink-click-metrics’, ‘click’, { “allowLinkDefault”: true }, function (event) { if (window.ue) { ue.count(“acrLinkClickCount”, (ue.count(“acrLinkClickCount”) || 0) + 1); } } ); } }); P.when(‘A’, ‘cf’).execute(function(A) { A.declarative(‘acrStarsLink-click-metrics’, ‘click’, { “allowLinkDefault” : true }, function(event){ if(window.ue) { ue.count(“acrStarsLinkWithPopoverClickCount”, (ue.count(“acrStarsLinkWithPopoverClickCount”) || 0) + 1); } }); });
Customers say
Customers find the book’s pacing positive, with one review highlighting its systematic approach to explaining concepts. Moreover, the book receives praise for its knowledge level, particularly for beginners, with one customer noting it serves as an excellent guide for those just starting their programming journey.
9 reviews for Grokking Simplicity: Taming complex software with functional thinking
Add a review
Original price was: €50.€44Current price is: €44.
Michael S. Veronie –
An amazing book that explains concepts succinctly and will expand your knowledge
Edit: i made the classic mistake of judging the book before I finished it. I had given it 4 stars after reading 120 pages of it. Now that I have finished it, I realize my one criticism of using outdated syntax was misplaced.Normand uses older syntax at the beginning of the book for a purpose. He later mentions more modern and functional array methods, but only after he explains why they exist and how to create them yourself. Having said that, I think this is one of the greatest didactic books on programming (and functional programming in particular) ever written. I’ll leave my initial review untouched below:—Eric Normand has a gift for teaching, and explaining topics in simple terms. I came to this book already having an understanding of the basic concepts of functional programming, but wanted to fill in some gaps in my understanding. This book did that for me.The one thing that remains a mystery for me, was why a book on functional JavaScript published in 2021, written by someone with an otherwise superb understanding of JavaScript, seems to not be aware of some JavaScript syntax that at this point can’t really even be called “new”.For example, when talking about the “copy-on-write” principle, and how to copy objects, Normand tells us that we should use `var object_copy = Object.assign({}, object)`. That’s OK, and the old way of doing it, but for years now JavaScript has had the spread operator, which works very well with a functional style: `const objectCopy = { …object }`.Notice also how Normand uses the older `var` instead of a `let` or `const`. There are a handful of other examples of older syntax, and missing current (and often, preferred) syntax.This is really a small issue, even though I spent a lot of words on it. So don’t let this deter you from the book. It’s just that I love this book so much, that it pains me to see the lack of current syntax in places. Other than that, it will go down as one of my favorite programming books I’ve ever read, and it taught me a lot.
D. Gustafson –
Valuable wisdom.
I’ve been making a living developing software for over 40 years. In that time a lot of technologies have come and gone. There have also been new programming paradigms and evolving interest and increased understanding in established paradigms. One thing that has seemed quite consistent is that systems that are less complex and easier to reason about are more robust and endure longer. They are easier to test and to validate and also easier to maintain and evolve as user and business needs change.When Smalltalk and C++ were new, I recall the difficulties figuring out how to think in a new paradigm. It wasn’t enough to learn the syntax, what we needed to do was figure out how to build large systems using classes and objects. Over the years object oriented methodologies and patterns emerged. Though I’ve been tinkering with functional programming for quite a while, crossing the chasm to building large systems has been elusive.This book provides access to wisdom that I have been seeking for a long time. Personally I feel that it ranks with classics like “The Little Schemer” as one of the few books that has profoundly changed the way that I think about programming. It’s hard to count how many times I thought about how the ideas in this book would have improved systems I’ve worked on. I wish I had this wisdom decades ago.
Benjamin D Allred –
An easy-to-understand decomposition of software design and functional thinking
I thoroughly enjoyed this book. The author breaks down the ideas into such tiny pieces. At times I felt tricked into learning things. Each half of the book begins with deceptively simple ideas that crescendo into powerful and practical finales. He claims the book is for 2 – 5 years, but in my estimation the following is more accurate:0 – 2 years: most of this book is understandable; you may need someone more senior to help you with the larger concepts2 – 5 years: I can all but guarantee you will learn something extremely valuable from this book5+ years: this book can remind you of things you forgot you knew as you guide those more juniorI can’t wait for the sequel!
Ben Brinckerhoff –
Great content for beginners and experts alike
This book is advertised as an intro to functional programming and it certainly accomplishes that. However, I was pleasantly surprised to find that there is some great content for more experienced functional programmers, as well.To be sure, this book is written for beginners, so if you’re familiar with FP, you can skim some chapters. Here are the chapters that I would recommend to more experienced programers.Chapter 3: Distinguishing actions, calculations, and dataThis will be a review for more experienced programmers, but I found the terminology and examples extremely clear. I think the author’s terminology is much clearer than terms like “side effect”, “pure function”, etc, and I’ll be using this language when talking to other programmers.Chapters 8 & 9: Stratified designThese chapters are incredible and I learned a lot about how to organize functions into layers. The examples and diagrams are excellent. Highly recommended for all programmers.Chapters 15-17: TimelinesI’d never used timeline diagrams before, so this was a novel technique that I’ll use in future work.Chapter 18: Reactive and onion architecturesThe content here may be familiar to more experienced programmers, but I found the examples illuminating and I’m now better equipped to understand when these architectures might apply.All in all, I really enjoyed reading this book. If you’re looking for an intro to functional programming, it’s a great resource. If you’ve already had some experience, it’s a fantastic review and contains some chapters which will improve your architecture and code.
Antony –
“Grokking Simplicity: Taming Complex Software With Functional Thinking” is an excellent book that clearly explains functional programming principles, design patterns, and practices that could be applied to any project.1. Do not let the number of pages intimidate you. There are lot of diagrams in every chapter. Ample free space is left out for the exercises. The important concepts are repeated in order to avoid having to turn the pages back and forth. Moreover, the book is written in an easy-to-read style.2. At the time of my purchase, the book price was 44 Euros. Do not let the price turn you away. The book is definitely worth the price.3. Do not let the fact that the code examples are in JavaScript demotivate you. The author had taken extra care to make sure that the code examples are language-feature agnostic. For example, JavaScript language features such as Promises are not used at all.The author had recommended the book for programmers with at least 2 years of experience. However, I believe this book is suitable for the Computer Science University Curriculum.
Gabriel Vieira –
Realizei a compra para vir dos States para o Brazil. Certamente é uma longa viagem e problemas podem ocorrer devido a negligencia das transportadoras. Entretanto, seria ótimo enviarem os livros dentro de caixas, pois isso evita do pacote ser perfurado ou até mesmo amassado. Neste caso, o livro é de capa normal, então veio com alguns amassos e por algum motivo, ele estava com um rasgo na capa de trás. Enfim, tirando isso o livro está inteiro e é de ótima qualidade. Recomendo a todos.
Jamie Vasales –
For someone who doesnât know much about Functional Programming and is currently a software engineer this book is great! It is easy to read and has extremely high print/paper quality.Definitely recommending this book to my colleagues. Iâd put it up there with my personal favourites like Effective Java
Fatmonky –
Reading the usual description of functional programming from most open and free sources, you kinda know that it is about pure functions, and also that you can do functional programming in a no of multi paradigm programming languages. But how do you approach this?I thought this book was brilliant. There are other books that cover functional programming in JS, but this actually makes the underlying concepts super clear, in an easy to understand way.To note, this book does require that you at least understand some Javascript (or Java, or C… similar syntax). So it is NOT for complete beginners, but would probably be understandable for someone who has completed a Javascript basics or web development bootcamp.
Jacob –
Some good ideas here that have stuck with me long after setting it down. Some of the content was too basic, some stuff repeated too much, but I think it’s worth a read for most junior to mid level engineers, and some seniors seeking better patterns. I’ll go back and look over a few of the more interesting pieces again at some point.