learn-ruby
learn-ruby copied to clipboard
Learning resources for Ruby, Rails, and related skills.
Learning Ruby: a resource list
Hi! As a second-career developer who didn't go through a bootcamp, I've found it helpful to keep notes on learning resources—building my own curriculum, in a way. If you have a favorite resource that's missing below, let me know by opening an issue!
Overview
- Preliminaries ✅
- Frontend basics ✅
- Ruby ✅
- Rails (~20% finished)
- Other essentials
- Ruby blogs, podcasts, screencasts
- Computer science (~30% finished)
- Other programming/CS resource lists
Preliminaries
- If you're wondering why I chose Ruby and not full-stack JS, I explain why on my blog. Or if you want a second opinion, read this or watch this.
- I list a lot of books and courses below, and hardly any hands-on projects. Let me be clear: you should be spending more time coding than reading about coding. But starting a project and getting into a coding routine is easy (if you can't think of any project ideas, just "build your own X"), whereas knowing what to read is not at all obvious at the beginning. Hence the focus on books and courses here.
- If you've never written a line of code in your life, you may want to start with the free tutorials at BigBinary Academy and/or Learn to Program (or buy the updated book version). I studied some computer science in high school, so I had a bit of a head start.
- If you are a working adult looking to transition into software development, make sure your day job is conducive to part-time studying. I used to be a teacher and spent hours grading in the evenings and on weekends, which would have made studying very difficult. So I switched to a remote tech support job, which freed up my schedule.
- Find a system for keeping organized notes, code snippets, and articles/videos saved for later. I use a simple text file, which is more effortless than any knowledge base app that I've tried.
- Last but not least, take care of yourself! Studying (especially while working) can easily be overdone. Exercise and get plenty of sleep. If you develop wrist pain from heavy computer use, act swiftly: get an ergonomic keyboard (the one I use is effective and affordable), do daily RSI stretches, and start using a break app such as Workrave.
So without further ado, here is my learning path. Resources that cost money are marked with 💲. If you need more free resources, see the links to other lists at the bottom. You may be able to find the books for free (from your local library, interlibrary loan, or more dubious sources) but be sure to buy them when you can, to support the authors. 🙂
Frontend basics
- Subscribe to programming newsletters for inspiration. My favorites:
- [x] Treehouse's 💲Frontend Web Development track, or The Odin Project's Foundations + HTML and CSS + JavaScript
- [x] Build a blog from scratch: I've rebuilt it by now, but here is the first iteration, and here's how I built it. Building a blog is not only a good exercise in itself, but it might also give you extra motivation to write about what you learn. There are other ways to do that too: I also post some of my learnings on Twitter, where—confession—I sometimes talk to myself.
Ruby
- Community:
- [x] Basics: There a few good options here.
- The Ruby Programming course on The Odin Project
- Ruby Is For Fun
- 💲The Well-Grounded Rubyist (worth re-reading later, as it covers some advanced Ruby)
- [x] Guided practice: Exercism, then CodeWars if you want more. Be sure to take notes each time you learn something new in an exercise, and write up a reflection at the end (here is mine).
- [x] OOP: 💲Practical Object-Oriented Design: An Agile Primer Using Ruby (a.k.a. POODR), then 💲99 Bottles of OOP. More than any other Ruby books, these are worth the price tag.
- [x] Build a Ruby app: Apply those OOP lessons. I made a CLI (command-line interface) app that gives statistics on a reading log. Along the way I also published a Ruby gem, though in the end I abandoned it because I realized it did more harm than good. All part of the learning process…
- [x] Build a site with Bridgetown: I remade my blog with Bridgetown (an updated Jekyll), and built a Ruby component for a reading list. Be sure to join their Discord server—the maintainers are very welcoming and helpful to newbies.
Rails
Only courses are listed below, but be sure to build stuff as you learn. Here's how I started building my first Rails app right from the beginning. Another invaluable form of practice is to start contributing to open source.
- Community:
- Slack
- StimulusReflex on Discord: you don't need to wait until you start using StimulusReflex to join, because these folks are very helpful to beginners struggling with Rails frontend issues in general.
- General:
- [x] GoRails - Rails for Beginners is great for getting started quickly. If you'd like a slightly longer follow-up, try Ruby on Rails: A Beginner's Guide.
- [x] 💲Ruby on Rails Tutorial will teach you Rails testing, good Git habits, and how to build an authentication (user login) system from scratch.
- [x] If you need a review, or if you skipped the Ruby on Rails Tutorial: Full Stack Ruby on Rails at The Odin Project or (if you prefer videos and/or you're interested in Rails + React) App Academy Open.
- [x] Style guides for Ruby, Rails, and RSpec
- [x] Rails Guides
- Testing: Minitest is familiar at this point. Now it's time to learn RSpec and Rails-specific testing techniques.
- SQL:
- [x] Interactive tutorials: SQL Teaching, SQLBolt, SQL Tutorial, Select Star SQL, SQLZoo
- [ ] Extra practice: Wikibooks, w3resource, HackerRank
- [ ] Use the Index, Luke!
- [ ] Advanced Topics in SQL course from Stanford
- [ ] Postgres Playground
- [ ] Blog posts on Rails + Postgres: lots on Paweł Urbanek's blog, this one at Honeybadger, this one at Thoughtbot.
- Active Record:
- Performance:
- Codebases to study: These are Rails projects that I've seen mentioned more than once as good examples to learn from. For lots more open-source Rails projects, see Real World Rails (and how to search through it) and Awesome Ruby and Rails Open Source Apps.
- Hotwire: If you ever get stuck, the StimulusReflex community on Discord is an amazing resource.
- [ ] Read the docs
- [ ] Sign up for newsletters: Hotwire dev newsletter and Hotwiring Rails
- [ ] Evil Martians talk and blog post
- [ ] Turbo Rails Tutorial
- [ ] Mix & Go screencasts on Hotwire
- [ ] SupeRails screencasts on Hotwire
- [ ] SupeRails blog which includes even more Hotwire tips.
- [ ] David Colby's blog, starting with the post Turbo Rails 101
- [ ] Hotwire Handbook, Part 1
- [ ] Hotwire examples from Thoughtbot
- [ ] Learn Hotwire by Building a Forum
- [ ] 💲Hotwired ATS: Modern, full-stack Rails development
- StimulusReflex:
- [ ] Read the docs
- [ ] Videos by the StimulusReflex creator
- [ ] StimulusReflex lifecycle chart
- [ ] Hotwire with StimulusReflex presentation, in case you're wondering how the two can fit together.
- [ ] Mix & Go screencasts on StimulusReflex
- [ ] 💲Interactive Rails with StimulusReflex
- [ ] 💲StimulusReflex Patterns
- Authentication:
- [ ] Rails Authentication from Scratch and the derived Rails MVP Authentication
- [ ] Study the similar Authentication Zero)
- Advanced Ruby:
- [ ] 💲Metaprogramming Ruby
- [ ] 💲Ruby Under a Microscope
- Rails internals:
- [ ] Demystifying Rails
- [ ] 💲Dissecting Ruby on Rails
- [ ] 💲Rebuilding Rails
- Deployment/DevOps:
- [ ] 💲Deployment from Scratch
- [ ] 💲Deploying Rails Applications
- [ ] 💲Efficient Rails DevOps
- [ ] Guides to deploying Rails on AWS: 1, 2, 3
JavaScript
Because try as you might, you can't avoid it. Note: there are so many JS books out there and I haven't surveyed the landscape yet. These are just books that have been personally recommended to me.
Other essentials
- Open source:
- [x] Contribute to open source projects. I've written a short guide on how to get started.
- [ ] 💲How to Open Source
- Git:
- [ ] Oh My Git!
- [ ] Oh Shit, Git!?!
- [ ] Introduction to Git and GitHub (and here's another good one by the same name)
- [ ] Goal-oriented Git
- [ ] Mastering Git
- [ ] Pro Git
- Lots more resources are listed here
- Linux:
- [ ] HTTP: MDN Web Doc on HTTP. See also "Networks" under the computer science section.
- [ ] Security: 💲Web Security for Developers: Real Threats, Practical Defense
- Design patterns: They didn't revolutionize my coding, but they're worth knowing for those times when people refer to them in design discussions.
- Learn other app frameworks: Jobs in Ruby are mostly in Rails, but it's still valuable to broaden my horizons and learn different approaches.
- [ ] Roda which will soon be easier than ever to get started with via Bridgetown
- [ ] Hanami
- [ ] Lucky, a web framework for Crystal… which is not Ruby but it's close 😉
- The arcane arts of getting hired:
- [x] How to find your first Rails job, notes from my own job search.
- [x] 💲Get Your First Developer Job
- [x] Attend some Ruby meetups, where you might find job leads.
- [ ] 💲The Tech Resume Inside Out
- I didn't read any of the popular books on interview prep because I wanted to avoid that type of algorithm/whiteboarding interview, which in any case is not very common in the Ruby world. But if you want to be ready for that: 💲Cracking the Coding Interview and/or 💲Elements of Programming Interviews
- Mentorship
- [ ] First Ruby Friend where aspiring and first-year developers are connected with a mentor.
Ruby blogs, podcasts, screencasts
Checking one of these off means "I've read/watched/listened to all the posts/episodes that interest me from the past few years, and I'm keeping an eye out for new posts/episodes that would help me, or old posts/episodes when they become relevant to me."
- Blogs:
- [x] Fullstack Ruby
- [x] Code with Jason
- [ ] Thoughtbot
- Screencasts:
- [ ] Naming Things
- [ ] DHH - On Writing Software Well
- [ ] Rails Code Along
- [ ] SupeRails
- [ ] Web-Crunch collections (1, 2, 3)
- [ ] Phil Smy - Ruby on Rails
- [ ] CJ Avilla
- [x] 💲GoRails
- [x] 💲Drifting Ruby
- [ ] 💲Destroy All Software
- Podcasts:
- [x] Ruby for All
- [x] Fullstack Ruby
- [ ] Remote Ruby
- [x] Ruby Rogues
- [ ] Ruby on Rails Podcast, especially starting at episode 372 went they went independent, brought on co-hosts, and hired an editor.
- [ ] Code with Jason
- [ ] Maintainable (not Ruby-specific)
- [ ] DevDiscuss (not Ruby-specific)
- [ ] The Bike Shed
- [ ] Running in Production – Rails
Meanwhile, computer science
- How computers work:
- [x] 💲Code: The Hidden Language of Computer Hardware and Software
- [ ] NandGame
- [x] From Nand to Tetris course (Part 1, Part 2) along with the textbook 💲The Elements of Computing Systems: Building a Modern Computer from First Principles
- [ ] 💲Computer Systems: A Programmer's Perspective
- Algorithms:
- [x] 💲Data Structures and Algorithms in Java
- [ ] for reinforcement: Algorithms course by Sedgewick & Wayne (Part 1, Part 2) along with the textbook 💲Algorithms
- [ ] going deeper: 💲The Algorithm Design Manual (Skiena)
- [ ] and deeper again: 💲Algorithm Design (Kleinberg & Tardos)
- [ ] for practice: Project Euler
- Usability and UI:
- [x] Operating systems: 💲Operating Systems: Three Easy Pieces
- Networks:
- [ ] Computer Networks from Scratch
- [x] 💲Computer Networking: A Top-Down Approach
- [ ] for a fun review: How DNS Works
- Software architecture: [ ] 💲Designing Data-Intensive Applications
- Program design: different from software architecture in ways that I don't yet fully understand.
- [ ] How to Design Programs and courses based on it (here's one + extra content, and here's another)
- [ ] Design of Computer Programs
- [ ] Structure and Interpretation of Computer Programs (and video lectures). So far I've had trouble figuring out exactly what this book is about. It is an often-recommended introductory text on "programming", funnily enough.
- [ ] Databases: Readings in Database Systems
- [ ] Compilers: Crafting Interpreters
- [ ] Math: 💲Concrete Mathematics: A Foundation for Computer Science. The math review that I'm doing leading up to this is proving to be a journey in itself, which I will outline separately in the future.