Earlier this year, I decided it was time to become a better developer. I realized that I never really tried to learn how to design software. After looking for a few weeks for a good FP book on design, not much was around. So I turned to OOP for ideas.
I came across a talk by Sandi Metz. I forget which talk it was right now, but it was very good (as all of hers are). She mentioned her book Practical Object-Oriented Design in Ruby (POODR). I wasn’t really looking to learn ruby so I brushed it off.
I watched a few more of her talks, and they were so good that I decided to give POODR a whirl. I snagged a copy, and got to reading.
This book is beyond good. This book belongs in everyone’s collection, whether you’re just starting or 15-20 years deep, whether you’re interested in FP or OOP. There are plenty of insights to be gained from this book for everyone The fact that it uses ruby is very much an implementation detail, in the same way that SICP uses scheme as its vehicle.
The point of the book is to teach Object-Oriented design, it’s not to teach ruby. But it teaches much more than that. The ideas in this book have helped immensely with OO code I write, and almost as much with FP code I write. This isn’t just a book about Object-Oriented design, it’s a book about design. Whether it’s stated explicitly or not, this book will help you think about any programming design problem you have.
I’m not suggesting that this is THE BOOK. What I am saying is that this book deserves to be read.
I can’t recommend POODR enough, so I’ll just provide a link to purchase the book.