This is an excerpt from my recent book "Crossing the Rubycon: How to Learn to Code and Build a Programming Career".
The order of these books is not random. This is more or less the order in which I worked through them back when I was learning to code in 2017-2018 (with one additional book that I read in 2019). Most of these books have had newer editions since then, but even the ones that haven’t been updated have aged fairly well.
A cool thing about this reading list is that I compiled almost all of it back in 2018 when my impressions of these books were very fresh. I planned to make a blog post out of this list, but never got to it. I am glad I wrote this down because now I would have found it difficult to review these books through the eyes of a beginner.
"Agile Web Development with Rails 6" by Sam Ruby
This is a brilliant book to read right after Hartl’s Ruby on Rails Tutorial. Here you will build a simple online shop while learning the principles of Agile web development and testing. The book goes through all the stages of building a web app: writing user stories, creating mock-ups of web pages, getting feedback from the customers, writing the code, writing tests, getting more feedback, improving your code, and shipping it. You will get a taste of the processes professional programmers go through and appreciate how the flexibility of Rails makes it a perfect tool for Agile web development.
"Programming Ruby" by Dave Thomas
Where would we be without Dave Thomas? Ruby was created in Japan in the mid-1990s and remained largely unknown outside of Japan for nearly a decade. The West learned about Ruby from Programming Ruby and the book’s popularity led to a much wider adoption of this obscure language around the world. Ruby became a mainstream programming language after Ruby on Rails framework was created in 2004.
I recommend this book for everyone learning Rails. Yes, you can write simple Rails apps with little Ruby knowledge, but you’ll never understand what you’re doing and this lack of understanding will hold you back. It is an enjoyable read that will make you a much better coder.
"Eloquent Ruby" by Russ Olsen
Russ Olsen writes the most entertaining books about coding, which don’t even read like textbooks. They read like novels. I wish I read this book earlier, but when reading it last year I saw its potential benefits for someone just learning to code. Some ideas in it might seem advanced, so I recommend you only go through Part I when first learning to code, look at Part II later when you begin to feel more comfortable with the language, and leave Part III for later in your professional journey.
"Rails 4 in Action" by Ryan Bigg
This is a book that taught me a lot about test-driven development (TDD). Tests are pieces of code that make sure that your program’s code works as intended, and TDD is a seemingly counterintuitive coding technique of writing tests for the code that doesn’t exist, watching the tests fail, writing the code, seeing the tests pass, and only later improving the code. This book helped me understand how writing tests before writing code made me analyze, plan, and think ahead. It also showed how TDD makes programming less stressful and error-prone.
"Rails 5 Test Prescriptions" by Noel Rappin
This is a much more detailed book on writing tests for your code, and it’s the perfect one for a deep dive into the topic. You will learn about various kinds of tests and different testing frameworks while building a real app. The book can be a bit advanced so take it slow. Alternatively, you can try Effective Testing with RSpec 3 by Myron Marston or Testing Rails by Josh Steiner. Those are both wonderful resources for learning more about writing tests for Rails. I read these two books recently but found them fairly accessible for beginners.
"Commonsense Guide to Data Structures and Algorithms" by Jay Wengrow
This is a must-read book for all web developers without a Computer Science degree. People with a degree who have forgotten what they learned in college might also benefit. The author makes a point of explaining complex concepts from the world of algorithms and data structures without using any math terms. You won’t be able to pass a technical interview at Google after reading this book, but it’s a great introduction to the topic.
Have you read any of these books? What are your favorite Ruby or Ruby on Rails book? Please share in the comment section below.
If you are new to coding, check out my book for more tips on how to learn to code and build a career in programming.