October is Ruby Month for me. September was kind of Ruby Month too, but the past is past. Read more for descriptions of Dave Thomas’s Programming Ruby: The Pragmatic Programmers’ Guide and Bruce Tate’s Ruby on Rails: Up and Running. I think they’re both fantastic books for intermediate programmers discovering ruby and rails.
Programming Ruby: The Pragmatic Programmers’ Guide, ISBN 0974514055, by Dave Thomas with Chad Fowler and Andy Hunt
Popularly known as the PickAxe, this book lives up to its sobriquet. Each section begins broadly, lucidly describing the general characteristics of a topic like Strings, Collections, or Ruby for the Web. Then, however, real gems start emerging — I’ve filled pages of my notebook with details and “wow” examples. Reading this book has been very rewarding for me. I never properly understood continuations and closures until Thomas et. al. described them, provided excellent quick examples, and then blew my mind with some of the implications of being able to send little bits of methods to other methods. Working with Java I’d often found myself duplicating lines of code because I couldn’t extract the functionality into some separate abstraction. In Ruby, that’s easy. Thanks, guys.
Ruby on Rails: Up and Running, ISBN 0596101325, by Bruce Tate and Curt Hibbs
I admire Bruce Tate. He’s a great technical writer, and he’s teaching by leading right now: he’s moving his own practice as a software developer from Java and especially heavyweight solutions that use Java, to lighter, smarter solutions like Ruby on Rails. I read his books Better Faster Lighter Java (with Justin Gehtland) and Beyond Java at the tail end of a frustrating experience building a Java-based app, and his insights and conclusions rang true the way few technical books have.
Ruby on Rails is ruby’s killer app right now, a complete web framework that includes obejct-relational mapping, metaprogramming, scaffolding, AJAX client-side script generation, and automatic unit test generation. It’s very powerful, but it’s very different from verbose frameworks like Java’s Struts, which makes it faster and easier to write but a lot harder to pick up from reading (nonexistent) course code. Tate’s book provides what agile programmers I’ve met call a spike, a quick charge of coding that fleshes out an entire feature, or even a small program, without nailing down all details and handling special cases. Coding along with Tate’s examples, I experienced a Rails spike that revealed the basics of Rails, intrgiuing details, and the overall promise. I didn’t learn enough to write a Rails app from scratch, but I do feel as though I know what Rails can do, and I’m confident I can pick up the details and master the framework.