Customers who viewed this item also viewed
Download the free Kindle app and start reading Kindle books instantly on your smartphone, tablet, or computer - no Kindle device required.
Read instantly on your browser with Kindle for Web.
Using your mobile phone camera - scan the code below and download the Kindle app.
Image Unavailable
Color:
-
-
-
- To view this video download Flash Player
-
-
VIDEO -
Follow the author
OK
Grokking Simplicity: Taming complex software with functional thinking
Purchase options and add-ons
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 it
- Practical debugging techniques - Isolate timing bugs in distributed systems using timeline diagrams
- Real refactoring strategies - Transform messy actions into clean, testable calculations
- Production-ready patterns - Copy-on-write, defensive copying, and stratified design for maintainable code
- Team 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 coordination
- E-commerce coupon systems that demonstrate data transformations
- Email marketing platforms that show action isolation techniques
- Banking 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.
- ISBN-101617296201
- ISBN-13978-1617296208
- PublisherManning
- Publication dateMay 18, 2021
- LanguageEnglish
- Dimensions7.38 x 1.1 x 9.25 inches
- Print length550 pages
Frequently bought together

Deals on related products
Customers also bought or read
- The Pragmatic Programmer: Your Journey To Mastery, 20th Anniversary Edition (2nd Edition)#1 Best SellerSoftware Testing
Hardcover$49.89$49.89FREE delivery Thu, Jan 29 - Head First Design Patterns: Building Extensible and Maintainable Object-Oriented Software 2nd Edition
Paperback$34.05$34.05Delivery Thu, Jan 29 - Structure and Interpretation of Computer Programs - 2nd Edition (MIT Electrical Engineering and Computer Science)
Paperback$57.90$57.90FREE delivery Jan 30 - Feb 3 - Mythical Man-Month, The: Essays on Software Engineering, Anniversary Edition
Paperback$24.24$24.24Delivery Feb 4 - 8 - AI Engineering: Building Applications with Foundation Models#1 Best SellerNatural Language Processing
Paperback$57.74$57.74FREE delivery Thu, Jan 29 - Coding Interview Patterns: Nail Your Next Coding Interview
Paperback$38.97$38.97FREE delivery Thu, Jan 29 - Grokking Streaming Systems: Real-time event processing
Paperback$50.64$50.64FREE delivery Thu, Jan 29 - Tidy First?: A Personal Exercise in Empirical Software Design
Paperback$28.23$28.23Delivery Thu, Jan 29 - Code: The Hidden Language of Computer Hardware and Software
Paperback$24.78$24.78Delivery Thu, Jan 29 - Domain Modeling Made Functional: Tackle Software Complexity with Domain-Driven Design and F#
Paperback$43.90$43.90FREE delivery Feb 9 - 17 - Build a Large Language Model (From Scratch)#1 Best SellerData Processing
Paperback$49.24$49.24FREE delivery Thu, Jan 29 - Rust for Rustaceans: Idiomatic Programming for Experienced Developers
Paperback$29.49$29.49Delivery Thu, Jan 29 - Clean Architecture: A Craftsman's Guide to Software Structure and Design (Robert C. Martin Series)
Paperback$26.46$26.46Delivery Thu, Jan 29 - Apprenticeship Patterns: Guidance for the Aspiring Software Craftsman
Paperback$22.97$22.97Delivery Thu, Jan 29 - System Design Interview – An insider's guide#1 Best SellerJob Interviewing
Paperback$39.99$39.99FREE delivery Thu, Jan 29 - Fluent Python: Clear, Concise, and Effective Programming
Paperback$43.99$43.99FREE delivery Thu, Jan 29 - An Introduction to Functional Programming Through Lambda Calculus (Dover Books on Mathematics)
Paperback$30.57$30.57Delivery Thu, Jan 29 - Design Patterns: Elements of Reusable Object-Oriented Software#1 Best SellerObject-Oriented Design
Hardcover$31.70$31.70Delivery Thu, Jan 29 - The Rust Programming Language, 2nd Edition#1 Best SellerObject-Oriented Software Design
Paperback$30.13$30.13Delivery Thu, Jan 29
Editorial Reviews
Review
"This book is a must-read for taming complex software. One of the most engaging titles in years."-- Michael Aydinbas, EXXETAAG
"A great resource for learning functional thinking and the practical programming techniques derived from it. I can recommend to my colleagues with confidence."-- Joel Luukka, Geniem
"An indispensable guide to identifying and conquering complexity."-- Bryan Miller, Petrolitix
"Fantastic book. I think it's the best book on functional programming for programmers of any level. It uses the concepts of Actions, Data, and Calculations to reframe programming. I think it's brilliant. I loved reading your early drafts of your book -- I would have called it a book on how to write valuable features that is liberated from the tar pits of astonishing amounts of complexity."
-- Gene Kim, author of The Unicorn Project
About the Author
Product details
- 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: #296,218 in Books (See Top 100 in Books)
- #7 in Functional Software Programming
- #47 in JavaScript Programming (Books)
- #289 in Software Development (Books)
- Customer Reviews:
Product Videos
About the author

Discover more of the author’s books, see similar authors, read book recommendations and more.
Products related to this item
Customer reviews
Customer Reviews, including Product Star Ratings help customers to learn more about the product and decide whether it is the right product for them.
To calculate the overall star rating and percentage breakdown by star, we don’t use a simple average. Instead, our system considers things like how recent a review is and if the reviewer bought the item on Amazon. It also analyzed reviews to verify trustworthiness.
Learn more how customers reviews work on AmazonCustomers say
Generated from the text of customer reviewsSelect to learn more
Reviews with images
Top reviews from the United States
There was a problem filtering reviews. Please reload the page.
- Reviewed in the United States on May 24, 2022Format: PaperbackVerified PurchaseEdit: 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.
- Reviewed in the United States on January 16, 2024Format: PaperbackVerified PurchaseI 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 concepts
2 - 5 years: I can all but guarantee you will learn something extremely valuable from this book
5+ years: this book can remind you of things you forgot you knew as you guide those more junior
I can't wait for the sequel!
-
Reviewed in the United States on October 8, 2025Format: PaperbackVerified PurchaseBuen libro para aprender de programacion funcional. Se agradeceria la inclusion de otros lenguajes de promgracion
- Reviewed in the United States on August 24, 2021Format: PaperbackVerified PurchaseI'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.
- Reviewed in the United States on March 31, 2022Format: PaperbackVerified PurchaseI'm early in my career as a software engineer working primarily with JavaScript. I had gotten some advice to work in the style of Functional Programming, but didn't know where to start.
The concept of breaking up your code into actions, calculations, and data has completely changed how I approach work. Reading through this book made me think of quite a few times I was facing bugs in my code and had no idea what to do about it.
There's some eye opening stuff in here about side-effects, mutability, deep vs. shallow copies, and asynchronous behavior.
For anyone who does not use JS as their primary language, all of the examples are presented without any use of JS-specific libraries, and there are plenty of references to other language-specific tools that may help anyone trying to adopt FP development.
And most of the examples are pertinent to client-side code, but I think there's something in here for everyone.
Top reviews from other countries
AntonyReviewed in Germany on February 7, 20255.0 out of 5 stars Excellent book on functional thinking, principles, patterns, and practices
Format: PaperbackVerified Purchase"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 VieiraReviewed in Brazil on December 4, 20243.0 out of 5 stars Produto Excelente! Envio descuidado.
Format: PaperbackVerified PurchaseRealizei 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 VasalesReviewed in Australia on March 25, 20225.0 out of 5 stars Well written high quality book!
Format: PaperbackVerified PurchaseFor 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
FatmonkyReviewed in Singapore on August 28, 20215.0 out of 5 stars A really clear primer to functional programming
Format: PaperbackVerified PurchaseReading 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.
JacobReviewed in Australia on January 23, 20254.0 out of 5 stars Actions, calculations and data
Format: KindleVerified PurchaseSome 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.




















