SOLID is not Solid
The second book recommendation I'll give you on this prestigious website (after why's poignant guide to Ruby) is SOLID is not Solid by David Bryant Copeland.
What does this satirical take on the SOLID principles have to do with Ruby?
Well, for one, the author of the book is a Rubyist and uses Ruby for the code examples.
However, I do believe there is something particular about the Ruby language which makes the SOLID principles appear even more nonsensical than they might appear in other languages (cough Java cough). In Ruby, we mostly don't have to worry about the kind of astronaut design patterns which SOLID and other principles encourage. The language itself is flexible and expressive enough to not get in our way. We can practice common sense design without bogging ourselves down with principles and ceremony.
This book will land differently for different people. If you're like me, you'll chuckle in wholehearted agreement with the entire premise. If you identify as a SOLID practitioner, you may feel a bit uncomfortable about it. If you're somewhere in between, you might end up liberated from ever-haunting questions like: what is this "single responsibility" supposed to mean anyway?
Either way, it's a short and fun read and a good reminder not to take software principles too seriously ❤️