Inspired by cory schires reading-list (which was in itself inspired by Apprenticeship Patterns).
The goals of this list are:
- Keep an active list of hte books that I have read, partially read, and plan to read
- Write a brief description of what I got out of and learned from each book, both as a way to solidify my understanding and as a book review excerpt
- Provide a central point for any blog posts I write that further expand upon my thoughts related to each book
- Provide a publicy-available datastore for my notes related to some of the books I read
I will include anything going forward that fits the desired subjects, but may add something I've read previously if it's particularly on-point or if I found it invaluable.
Books I've Read
I'm excited to use Flight.js in something more than a toy app, and look forward to making it my go-to for organizing jQuery-based client-side code. I think it's a great option for when a full-on single-page app is overkill. It results in easily testable, separate components that communicate via event triggering and listening - basically PubSub.
Sadly this book is the only one on the subject so far. As soon as there's anything else, I'd recommend you not waste your time here. There's simply way too many mistakes to make this anything but a frustrating read. The example app that the book has the reader build seems like it was written by at least two different authors. Components are referred to by different names, the directory structure is referred to differently, and there are numerous mistakes in the usage of multiple APIs, including Flight.js itself. Add to that a shockingly high number of syntax mistakes (and not just missing semicolons - ones that actually break the app), and it's all too clear that there was next to no editorial effort put into this book.
I wish I could recommend something better. In the mean time, if you have easy access to a copy of the book, it's probably worth a skim to get the basic idea of Flight, but you're likely much better off just reading the docs and looking at some online examples.
Agile Web Development with Rails 4 Sam Ruby
Despite having little to do with Agile development, and being primarily aimed at programmers who are still new to Rails, I was pleasantly surprised by this book. It does a wonderful job of introducing the Rails way of doing things. Given the importance of convention in Rails (and the immense pain that can result when fighting that convention), I found it very valuable to learn some conventions I did not previously know.
I'd recommend this book to anyone who works in Rails and has at any point read or written code that felt more difficult than it should be (so basically everyone who uses Rails). Most especially, every contractor and consultant who works with Rails should read this.
Eloquent Ruby Russ Olsen
A brillaint resource for anyone who is new to Ruby (though I think it's helpful to be somewhat familiar with programming, and ideally have played around with Ruby at least a bit). Eloquent Ruby is not an exercises or project-based book, but rather a wonderfully detailed explanation of all the unique, programmer-friendly features that are core to being a strong Rubyist.
Please see further thoughts (and my detailed notes) at dmragone.com
Sandi's a wonderfully person who is either brillaint or a snake-oil-salesperson. It may well simply depend on whether you agree with what she has to say. Coming from Smalltalk, she's a strong believer in the power of Object-Oriented-Design to simplify and strengthen code. She explains OOD as best applied in Ruby brillaintly, and is only outdone by her talks. Watch her at RailsConf 2013, where she describes in great detail how to test in Ruby. And then read this if you care to write good ruby code.
I greatly enjoyed reading this book. It felt all strangely familiar (I believe I'd read various excerpts, reviews, and perhaps even some coverage of the various stufies and anecdotes used by Duhigg), but great fun to read regardless. It's an easy read, though if you're crunched for time, the value decreases in the last two sections, with the last one being a bit off-point and out-of-place.
Apprenticeship Patterns: Guidance for the Aspiring Software Craftsman Dave Hoover & Adewale Oshineye
I found the design patterns format of context/problem/solution/action made my traditional note-taking habits difficult. I didn't want to include all the details, but felt I could not adequately describe the solutions without the details. I eventually succumbed to summarize (poorly) each of the apprenticeship patterns.
A lot of the book read like smart common sense, at least for me. Though I found myself agreeing wiht it completely, the situationality and somewhat obviousness of the advice did not blow me away. However, the specificity of the 'Action' sections were quite nice. Adequately described, they are each actionable (and helpful in addressing the problem).
Growing Object-Oriented Software, Guided by Tests Steve Freeman & Nat Price
This book is filled with wisdom about how to write good object-oriented, test-driven code. Heavy emphasis on readability and using tests as a design element, not just for code accuracy, results in (what are to me at least) very impactful thoughts on how to approach development.
The only down-side of the book is the extensive example in the middle that is written in Java. I had no interest in learning Java in order to better read the examples, so instead relied on their descriptions of the project and how it demonstrates their system of development.
Thankfully the first two sections are well-condensed yet detailed descriptions of the theory, so I was able to get quite a lot out of it.
I highly recommend this to anyone who is intereted in TDD. This feels like the right way to do things.
Programming Ruby 1.9: The Pragmatic Programmers' Guide Dave Thomas, Chad Fowler, Andy Hunt
This book is commonly referred to as 'Pickaxe', due to the cover art. As reference guide to all of Ruby's features, I don't think there's much better than this book. It covers most of (at least what I know) exists in Ruby, and provides enough information to get a sense as to what you can do.
Having already read Eloquent Ruby, however, I felt that this was more of a reference book than a helpful introduction to the language. I also preferred Russ Olsen's style to that of Pickaxe, and sometimes felt that the cursory-overview of some features wasn't worth the time it took to go into them at such a shallow level.
Design Patterns in Ruby Russ Olsen
I loved Russ Olsen's "Eloquent Ruby", so no surprise that I greatly enjoyed Design Patterns in Ruby.
As a reference for applying some common design patterns to Ruby, it's a wonderful thing to have at hand. As an intro to how to think about design in the context of Ruby, it's a great read.
jQuery in Action Bear Bibeault & Yehuda Katz
I've written a bit of jQuery, but this was the first time I used a reference that was not the online docs. The version I read is from 2008 (the linked version is from 2010), so there was some outdated information, but it is still a useful introduction to the wonder of jQuery.