Grokking Simplicity: Taming Complex Software with Functional Thinking
M**E
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.
J**S
Well written high quality book!
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
F**Y
A really clear primer to functional programming
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.
B**D
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!
D**N
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.
Trustpilot
5 days ago
2 weeks ago