Inspired in part by Apprenticeship Patterns, I've decided to maintain a public reading list. The goals are pretty simple:
Be honest about what books I've read, partially read, and plan to read.
Write a few sentences about each book – mostly for myself but also for anyone who might be interested.
Only include books related to development, user experience design, and entrepreneurship.
Include screencasts as well since that's how I do much of my learning.
Note that many of these entries were written long after having read the actual book. I apologize for any inaccuracies. Also, the completion dates are often rough approximations.
The Little Schemer Daniel P. Friedman & Matthias Felleisen
Really good so far. Making me think how much of our work is done recursively. It's easy to overlook using high level languages, like Ruby. Currently Reading.
The Cucumber Book: Behaviour-Driven Development for Testers and Developers Matt Wynne and Aslak Hellesøy
The most interesting chapters, like AJAX testing, are still in beta. Currently reading.
Only read the first few chapters but it's already paid off by giving you a deeper insight into whats really going on in Rails. Currently Reading.
The Pragmatic Programmer Andrew Hunt & Dave Thomas
Seminal book loaded with practical advice for writing good software. Packed with really smart analogies (e.g. tracer bullets) written in simple, clear language. I'm inclined to agree with the book's bold, opening paragraph: "This book will help you become a better programmer."
Apprenticeship Patterns: Guidance for the Aspiring Software Craftsman Dave Hoover & Adewale Oshineye
Inspirational read, especially if you've only been coding for a few years. Lots of good ideas for improving your skills organized into loosely overlapping patterns. Also, peppered with thought-provoking quotes. Completed in February 2011.
Agile Coaching Rachel Davies & Liz Sedley
Most useful if you plan to lead a team of agile developers. If you're simply looking to better familiarize yourself with Agile practices, this isn't your best choice. That's not to say you won't read about general practices. You will, but this book focuses more so on coaching. Partially read in late 2009.
The Agile Samurai: How Agile Masters Deliver Great Software Jonathan Rasmusson
This book makes for a good primer. It's very easy to understand and you're sure to come away with a decent understanding of what Agile is all about. A slight criticism, some of the methodologies (e.g. inception deck) seemed a little contrived. Overall, a good read for those looking to learn the basics of Agile. Partially read in mid 2010.
The Entrepreneur’s Guide to Customer Development Brant Cooper & Patrick Vlaskovits
Presents a strong case that most startups fail not because they couldn't to make a product but because no one wanted to use the product they made. The solution? We need to step away from our terminals and talk to potential customers. Find out what people really need. Make the product they want even if it's not entirely inline with your vision. This book will guide you through the process. Completed in December 2010.
Arduino: A Quick-Start Guide Mark Schmidt
This is an excellent primer to building robots with Arduino. One caveat. This book is written for programmers with very little knowledge of electronics. This means the book assumes a basic knowledge of programming and almost no knowledge of electronics. That's great for most web developers. But if you're an experienced hardware hacker, this probably isn't the book for you. Partially read in mid 2010.
Pragmatic Guide to Git Travis Swicegood
This makes a good reference. If you're like me you have an excellent understanding of Git – at least until you mess some- thing up. That's when things get tricky and you start to feel like you could wreck the entire code base. That's when this book comes in handy. Partially read in mid 2010.
O’Reilly Head First: HTML with CSS and XHTML Elisabeth Robson & Eric T. Freeman
Despite the hokey cover art, this book gets the job done. I started this read with absolutely no knowledge of HTML/CSS. Two weeks later I could build a (shitty) website. Note, however, that this book is probably a bit dated (e.g. I don't recall any mention of HTML5/CSS3). Complete in November 2008.
HTML5 & CSS3: Develop with Tomorrow’s Standards Today Brian P. Hogan
I've heard other books (e.g. jQuery in Action) put this one to shame but it got the job done for me. I was able to finish the entire book in about a week and immediately apply what I'd learned. I'd have a look at other books as well but you could certainly do worse than this. Completed in late 2009.
Head First PHP & MySQL Lynn Beighley & Michael Morrison
Every profession has it's cross to bear and ours is having to code in PHP. Truth be told, I have no intention of becoming an expert PHP developer but occasionally I need to hack a WordPress plugin, build a registration form, etc. This book gave me the basic competency needed to tackle simple tasks using PHP.
Excellent introduction to the Processing language. The book, however, aims also to teach the basics of programming. This means experienced programmers might find themselves skipping large sections which cover rudimentary programming concepts (assignment, data structures, etc). Still, you'll probably run across some things you didn't know about – especially if you haven't spent much time programming animations or games. Note that you can also use this book to learn Processing.js since the APIs are essentially interchangeable. Completed in mid 2010.
Agile Web Development with Ruby Sam Ruby, Dave Thomas, David Heinemeier Hansson
Relatively speaking, there weren't too many basic Rails book when I was first learning. So, like everyone else, I spent a good deal of time reading Agile Web. It was decent for the time; however, I suspect beginners would be better off having a look at newer, easier to understand resources – such as Michael Hartl's introduction. Partially read in late 2008.
Lots of tips for how to cut out the bullshit and focus on rapidly building a solid, successful web application. At its most basic, this book suggests you stop planing, start writing code, and let the details sort themselves out as you go. That's pretty good advice but only, I think, if you have a very strong team. Like all 37signals books, this has a kind of bad-boy contrarian philosophy that could lead to disastrous software if followed by less qualified development teams. Nevertheless, it's a good read. Completed early 2009.
Rails 3 Upgrade Handbook Jeremy Anally
Upgrading is not a fun process. This tiny book makes it a bit more tolerable. A must if you find yourself needing to bring an old application up to speed. Completed in late 2010.
The Rails 3 Way Obie Fernandez
I've only poked through this book a little bit and mostly as a reference tool. But given the author, it's likely to be a high quality read. Nevertheless, you might consider reading Peter Cooper's much-discussed review which details some pretty significant shortcomings. Partially completed in early 2011.
Simply Rails 2 Patrick Lenz
Along with Agile Web, this book helped me grasp the basics when I was still a total novice. Of course, I wouldn't recommend it for current learners since it's way out of date. If you're looking to learn the basics, check out Michael Hartl's introduction. Completed in early 2009.
The RSpec Book: Behavior-Driven Development with RSpec, Cucumber, and Friends David Chelimsky, et al.
I can't imagine anyone really understanding RSpec until they've read this book. It's long and at times complicated, but absolutely integral if you're looking to be a professional Ruby developer. Completed (after many false starts) in mid 2010.
I was initially annoyed by this book's use of Test Unit rather than RSpec. But I gradually warmed up to it. Most of the topics transcend this-or-that framework, so there's much to be gained regardless of your preferred framework. And in the end, there's lots of good information in here. This book is intended for readers with at least some existing knowledge of testing. Completed in early 2011.
Beginning Ruby: From Novice to Professional Peter Cooper
Best all around Ruby primer. Cooper begins teaching you programming basics, like flow control, using simple string methods. Later, he gives an excellent explanation of object orientation and various data structures. By the end of the book, Cooper touches on to fairly advanced topics, like metaprogramming. Thinking back, it's amazing how much this book covers in relatively few pages. Completed in early 2010.
Design Patterns in Ruby Russ Olsen
Olsen covers each of the classic design patterns discussing how they might be implemented with Ruby. His simple style and choice of examples makes this potentially daunting read relatively easy to follow. Especially enjoyed the "In The Wild" sections which show examples of each pattern being used in open source projects. Advanced developers will probably get more out of this read, but there's no reason less experience developers should be discouraged. Partially completed in mid 2010.
Learn to Program Chris Pine
Absolutely the best book to get started if you have never programmed in your life. Pine gently guides you through the very basics (What's a string? What's an array? What's an if statement?). Each chapter ends with a few problems which, in my experience, were difficult enough to get you thinking without leaving you stumped and discouraged. This is book that got me started and I try pushing it on everyone I met. Completed in late 2008.
Metaprogramming Ruby Paolo Perrotta
This book answers all kinds of mysteries. If you've ever wondered "How the hell is that even possible?" this book probably has the answer. Dynamic finders in Rails? How to build a DSL? How RSpec works under the hood? This book sheds light on the dark magic that makes Ruby so powerful. Most importantly, however, this book showed me that metaprogramming really isn't that complicated. Completed in mid 2010.
Why’s Poignant Guide to Ruby why the lucky stiff
Part comic, part novel, part technical manual. If Kurt Vonnegut were to write a programming book, it'd probably end up like this. It's an odd book but it definitely has flashes on brilliance. I'd recommend reading it in conjunction with Peter Cooper's "Beginning Ruby". They make a nice pair.
Beginning Unix Paul Love, Joe Merlino, Craig Zimmerman, Jeremy C. Reed, Paul Weinstein
I'm no Unix hacker. And for the most part, I'd like to keep it that way: focusing on programming rather than sysadmin. But we all need to know our way around the terminal at least a little bit. This book taught me everything I needed to know (and probably more). If ssh-ing on to a server makes you nervous, you should probably just bite the bullet and read this book. Completed in Early 2010.
Designing For The Social Web Joshua Porter
This book's about UX design not programming. One bit that stuck with me: Porter suggests modeling software interfaces after real world objects (e.g. users don't need to be told what a shopping cart is or how it works). Partially completed in early 2010.
If you only read one book on usability, make it this one. It's short, pragmatic, and has surprising breadth. Some of Krug's advice has proven indispensable. For example, Krug explains how to get people to actually read your website. Or in another chapter, Krug explains how to make your site simpler through tiny, incremental usability improvements. Completed in late 2010.
Digging into WordPress Chris Coyier & Jeff Starr
I don't really love WordPress but often it's the most practical choice for simple projects. Occasionally, I find myself looking to do something off the beaten path, and that's where this book comes in handy. In typical Chris Coyier style, the prose is a bit long-winded. But depending on your familiarly with the topic being discussed, that can definitely be a good thing. At any rate, it's my goto WordPress reference guide. Partially completed in early 2010.
20 Things I Learned About Browsers and the Web Folks at Google Chrome
Nice, non-technical explanation of how the web works and have evolved over time. Impressive design and HTML5 book effect.
Meet Postgresql Peepcode
Gives quite a bit of advanced information (e.g. generating reports). Perhaps more than you'll need if you're just looking to simply convert your Rails app to Postgres. Nevertheless, I highly recommend it if you're using Heroku and need to get your development environment using Postgres rather than MySQL. Watched March 6, 2011.
Node.js Roadmap Ryan Dahl
Dahl discusses various improvements planned for Node version 0.3 (faster buffer, streams, etc). Much of the talk is pretty low level, so it's not a good choice if you're unfamiliar with Node. Concludes with a cool demo of a simple chat server. Watched 14 February 2011.
Project Future Douglas Crockford
Crockford discusses a wide variety of topics – urban planning, war, politics, suburbanization, righteous hatred, and Walt Disney – all as part of a wonderfully discursive discussion of our future and past. If it's not obvious, this is not a technical talk. Quotes I liked: "I used to think that everyone should learn to program. I don't think that anymore. Programming is a talent." Watched 14 February 2011.
A good place to start if you have no experience using Sinatra. After watching this screencast, I felt confident about when and how to best use Sinatra. And a few months later, when making a simple registration page, I found myself reaching for Sinatra rather than PHP. That's when I knew it was a worthwhile watch. Watched in late 2010.
Meet Node.js Geoffery Grosenbach (Peepcode)
Another high quality screencast from the folks at Peepcode. I have to admit I didn't run out and build the next great node app, but I did come away with an understanding of what Node.js is all about and why it's so exciting. Watched in mid 2010.
Ruby 1.9: What You Need To Know David A. Black
A two part screencast to get you up to speed with Ruby 1.9. It doesn't cover every little detail but it does an excellent job hitting the main points. Watched in mid 2010.
Version Control Made Easy Jim Weirich
Weirich does much more than just explain how to use Git. He takes you on a tour of how version control ought to work, starting from the very basics. Gradually you'll see how Git conforms to the patterns he describes, and by the end, you'll have a fundamental understanding what makes Git a superior version control solution. Watched in mid 2010.
Haml & Sass Geoffery Grosenbach (Peepcode)
If you're not using HAML and SASS, you probably should be. It's pretty awesome and very simple to learn. In fact, this screencast will teach you everything you need to know. Watched in early 2010.
Advanced Active Record Envycast
Awesome little screen cast from the makers of New Relic. Chalked full of little tips. No matter your experience level, you'll probably learn something new here. Watched in mid 2009.
Everyday Active Record: Series Ryan Bates
Ryan Bates is too awesome. If you watched Railscasts, these are very similar but longer, more focused, and have better visualizations. Note these are intended for beginner to intermediate level developers. Watched in mid 2009.
Mastering Rails Forms: Series Ryan Bates
This is like a three hour Railscast episode which focuses on forms. Very high quality. Intended for beginner to intermediate level developers. Watched in mid 2009.
Phusion Passenger Geoffery Grosenbach (Peepcode)
I don't really use Passenger anymore since I deploy everything to Heroku. But if you're looking to use Passenger this is a good primer. Watched in mid 2009.
Productivity for Programmers Lars Pind
Not amazing but totally worth a watch. One bit of advice I took from this: Identify the most and least productive hours of your day. Be sure to program during your productive hours and use the less productive times for other activities (exercise, lunch, socializing, etc). Watched in mid 2009.
Scaling Ruby Envycast
Honestly, this screencast discusses a bunch of problems I've never had to encounter firsthand. Still, it was watching if only to broaden my horizons. Watched in mid 2009.
This is a set of three screencasts each discussing different aspects of the RSpec testing framework. Testing is very difficult especially at first. While these screencasts definitely help, I suggest attacking the topic with a variety of resources. Unless you're already familiar with similar testing frameworks, these screencasts probably won't teach you everything you need to know. Watched in mid 2009.
Things I plan to read.
Mythical Man Month Frederick P. Brooks
Clean Code: A Handbook of Agile Software Craftsmanship Robert C. Martin
Business Model Generation Alexander Osterwald & Yves Pigneur
jQuery Pocket Reference David Flanagan
Design Patterns: Elements of Reusable Object Oriented Software Erich Gamma, Richard Helm, Ralph Johnson, John M. Vlissides
Things I plan to watch.
Meet Rails 3: Series Peepcode
Play by Play: John Barnette Peepcode