Book Review: Programming Ruby
TLDR Version: This book is incredibly well researched and covers pretty much everything in the Ruby world. While it does have a very good introductory section I think the main benefit to this book is as a reference guide.
Programming Ruby is probably the most well-known book in the Ruby world. I guess I’m a little unsure as to the target audience for this book, but based on the amount of recognition it has received it seems to be aimed at pretty much anyone who codes in Ruby.
There are several points in the book where the author gives you the option of skipping past a particularly difficult section, which would be very helpful to newcomers to Ruby will still making it useful to more experienced developers.
The Good
I started reading this book to learn Ruby. I already knew a bit of Ruby at that point, but I wanted to really understand the different concepts and functions of the language. This book does work pretty well for that approach – new concepts are introduced in an order that makes it easy to understand and the explanations are straightforward and backed up by good examples. The first section of the book serves pretty much as a tutorial to the Ruby language.
After reading the first 100 pages or so I abandoned the book and started coding a few simple examples. I then moved on to Project Euler and solved a fair number of the problems with my new Ruby skills. This is probably the approach I would recommend – you can try to read the whole book cover to cover, but you’re probably better off writing more code as soon as you feel comfortable.
All the sections in this book are incredibly detailed and well-written. The amount of research that must have gone into this is very impressive. I only read the latest version (aimed at Ruby 1.9), but from what I read online almost 50% of the book was modified from the previous version.
The Bad
Similar to The Rails 3 Way, this book is long – more than 900 pages in all! I don’t think anyone will read this cover-to-cover, but even reading everything up to the reference section is more 400 pages. While this makes the book great from a reference point of view, I did find everything past the first (tutorial) section to be a bit long-winded. For example, I don’t really see the need to know all 8 aliases for the exit command in IRB (the Interactive Ruby Shell).
I also found some of the examples to be a bit confusing – especially some of the examples around testing could probably be improved. (I’ve found this to be the case for quite a few books, so maybe I’m just overly fussy)
Conclusion
This book is incredibly well researched and covers pretty much everything in the Ruby world. While it does have a very good introductory section I think the main benefit to this book is as a reference guide.
I’m a bit in two minds about using a book as a reference guide in today’s world where most reference material is simply a Google search away, but from what I’ve seen this book would work very well in complementing online reference material. It’s simply a matter of all the topics being very detailed and well researched.