A collection of books and resources that I have used over the years to become a better programmer and why they are important. I am only adding resources that leveled up my development skills and filtering out the ones that were below stellar.
Experience Level – 1 app, 100 hours of programming.
This book is geared towards the rails programmer who has at least tried to write an app or two. The concepts for rails 3 are applicable to rails 4. It helped me to grasp some of the interworkings of rails, MVC architectures and Active Record. Probably a half-dozen or so ‘Aha’ moments throughout.
Experience Level – 3-5 apps, 500-1000 hours of programming. Understands: duck typing, premature optimization, ruby vs rails.
Practical Object-Oriented Design in Ruby: An Agile Primer (Addison-Wesley Professional Ruby Series)
This book is geared towards the general programmer who has been programming for a couple years. Experience wise, i was not ready for this book until I had several apps under my belt. It helped me to understand a few great principles related to Object Oriented Design. Once again, several ‘Aha’ moments. I reference this book monthly and use the concepts when i’m tackling system design.
This book is useful to new programmers and old programmers alike. I have read this book twice about 3 years apart and appreciate the more advanced stuff related to policies and blocks now. However, on my first read, it gave me a good foundation for how to handle code.
Experience Level – 7-15 apps, 3000+ hours of programming. Need to have a thorough understanding of the basics and some of the intermediate areas of ruby. I picked this book up because i wanted to be an expert.
Metaprogramming Ruby 2: Program Like the Ruby Pros (Facets of Ruby)
The audience for this book is intermediate/advanced and is very deep. It is written as a diologue between a junior/senior developer across an entire week on a job. It has several real world examples, warnings about gotchas and goes from surface to the depths of what is possible when exploring the various areas of Ruby.
This books is labeled Metaprogramming and it does accomplish that. However it is more than a book about how to do fancy programming. It has given me a thorough understanding of how Ruby works under the hood.