Hi! This road map has helped me as a second-career developer who didn't do a bootcamp. I hope it helps you too.
Notice a broken link? Or want to suggest an addition? Open an issue!
The mostly-not-done sections ("Advanced Ruby and Rails" and following) are somewhat chaotic because I haven't yet seen what's worth keeping there.
- Preliminaries
- Basics
- Foundations
- Front end
- Advanced Ruby and Rails
- Beyond web development
- Ruby media
- Rails codebases to study
- If you want to keep it simple and use just one resource that can take you from zero to hireable, I suggest the free Odin Project. If you want more variety and more depth on certain topics, keep reading!
- Why did I chose Ruby? At first I went for full-stack JS, but the JS ecosystem was confusing to me as a solo learner. Ruby was a lot more straightforward to me, and generally more enjoyable too.
- Make sure your day job is conducive to part-time studying if you're a working adult looking to switch careers. I used to be a teacher and spent many of my evenings and weekends grading assignments, which would have made it difficult to learn programming. So I switched to a remote customer support job to free up my schedule.
- Take care of yourself! Exercise and get plenty of sleep, and you'll better retain what you learn. If you develop wrist pain from heavy computer use, get an ergonomic keyboard, do daily wrist stretches, and try a break app such as Stretchly.
Resources marked with a dollar sign (π²) cost money. You may be able to find books for free (from your local library, interlibrary loan, or more dubious sources) but buy them if/when you can, to support the authors.
- Learn some HTML, CSS, and JS: The Odin Project - Foundations path or MDN - Learn web development or web.dev - Learn web development.
- Build a blog from scratch. GitHub Pages is an accessible way to do this. (Choose the option "Project site", then "Start from scratch".)
- Basics:
- The Odin Project - Ruby
- GoRails - Ruby for Beginners if you prefer videos.
- Try Ruby and BigBinary Academy, if you like an interactive approach.
- Eloquent Ruby, 2nd ed. (WIP)
- Ruby Alchemy (WIP)
- Guided practice:
- Exercism - Ruby
- Advent of Code with other people's Ruby solutions to compare yours to. One way to do this is my Advent of Ruby gem.
- OOP (object-oriented programming):
- Build stuff with Ruby. Here are some ideas:
- A CLI (command-line interface) app. I made one that gives statistics on a reading log.
- A game. A text-based game is the most straightforward option, but there are Ruby game engines for graphical games.
- A static site. Bridgetown is great for (among other things) building static sites, which are simpler than SSR (server-side rendered) sites Γ la Rails. Maybe rebuild your blog? Be sure to join the Bridgetown Discord serverβthe maintainers are very welcoming and helpful to newbies.
- Reference:
- Ruby API. Since its search uses a query param, you can add a search keyword to your browser so that you can quickly search from the address bar, for example
rb partition
would take you to https://rubyapi.org/3.4/o/s?q=partition
- Ruby API. Since its search uses a query param, you can add a search keyword to your browser so that you can quickly search from the address bar, for example
Only books and courses are listed below, but be sure to build things as you learn. I myself started building a large-ish Rails app at first, but then I found it more helpful to build a series of small throwaway apps (1, 2, 3, 4).
- Basics:
- Getting started with Rails, an interactive quick start.
- typecraft - Rails New and/or GoRails - Build a Blog with Rails 7 if you like videos.
- The Odin Project - Rails
- Testing:
- thoughtbot - Testing Rails or the summary blog post. (In the book, ignore controller specs because they have been superseded by request specs.)
- π²Effective Testing with RSpec 3
- π²Everyday Rails Testing with RSpec
- π²Professional Rails Testing: Tools and Principles
- Miscellaneous:
- Beginners Guide to Ruby on Rails Performance
- Style guides for Ruby, Rails, and RSpec
- Explore Ruby communities (below)
- Get real-world experience to put on your resume:
- Contribute to open-source projects. I've written a short guide on how to get started.
- Ruby Central - Scholars and Guides Program
- Mentorship:
- First Ruby Friend where aspiring and first-year developers are connected with a mentor.
- r/rails. Examples: 1, 2.
- The job search:
It's also good to know the basic workings of the Internet and Web, but that section is in my "Learn Computer Science" list.
- SQL Teaching
- SQLBolt
- Select Star SQL
- SQL Practice
- PostgreSQL Exercises
- Next-Level Database Techniques for Developers
- Use the Index, Luke!
- Oh My Git! or Learn Git Branching
- Oh Shit, Git!?! or for more detail, Git Flight Rules
- Git Katas
- The Git Parable
- Magic of CSS
- π²Every Layout
- Under-Engineered Patterns
- Stephanie Eckles - SmolCSS
- Stephanie Eckles - Modern CSS Solutions
- Vercel - Web Interface Guidelines
- Laws of UX
- π²Don't Make Me Think
- π²The Design of Everyday Things
- Victor Ponamariov - 100 UI/UX Tips
- π²User Interface Design: A Software Engineering Perspective
- Accessibility Developer Guide
- MDN - Accessibility or web.dev - Learn Accessibility
- Responsible Web Applications
- π²Inclusive Components
- RailsConf talks on accessibility
- Examples of accessible components: Deque University Code Library, Scott O'Hara's Accessible Components
- Basics:
- Going deeper:
- Web components:
- "Hello Web Components"
- The Modern JavaScript Tutorial - Web Components
- MDN - Web Components
- Web Components: Working With Shadow DOM and web.dev - Declarative Shadow DOM
- Heartml Reciprocate
- Lit "Learn" resources and a few code labs (1, 2, 3, 4)
- Explore source code of QuietUI, Web Awesome
- Build your own front-end framework:
- General: Let's learn how modern JavaScript frameworks work by building one, Frontend framework, π²Build a Frontend Web Framework
- React: Implementing React From Scratch, Build your own React, Creating Our Own React From Scratch, Let's build a React from scratch
- Other frameworks: Building AlpineJS, Create Your Own Vue.js From Scratch, A Hands-on Introduction to Fine-Grained Reactivity and SolidJS: Reactivity to Rendering, Compile Svelte 5 in your head
- TypeScript:
- Total TypeScript VS Code extension
- Total TypeScript essentials
- The TypeScript Handbook
- The Concise TypeScript Book
- Execute Program - TypeScript courses
- Official docs
- Tackling TypeScript
- Type Challenges
- TypeHero
- Type | Treat 2020, 2021
- Codeless Code - posts on TypeScript e.g. Higher Kindred Types in TypeScript and Point-free Programming via HKTs
- TypeScript libraries: TS-Pattern, Zod, type-fest, Effect
- π²TypeScript Cookbook
- π²Effective TypeScript
- Google TypeScript Style Guide and TypeScript Style Guide
- New web APIs:
- News:
- Basics:
- Turbo 8:
- Turbo 8 in 8 minutes
- A happier happy path in Turbo with morphing
- Turbo Music Drive app demonstrating upcoming features of Turbo 8, along with accompanying blog posts (pt. 1 on morphing, pt. 2 on view transitions)
- Reference:
See also my GitHub star lists for handy Ruby gems.
- Reference:
- Victor Shepelev (zverok) - The Ruby Reference plus Ruby Changes (covering Ruby 3+). Ruby Evolution is also great.
- RuboCop performance rules
- RuboCop security rules
- Concurrency:
- Jesse Storimer - Working with Ruby Threads
- Jesse Storimer - Working with Unix Processes
- Jesse Storimer - articles: Threads, Not Just for Optimizations, Matz is not a threading guy, Nobody Understands the GIL (parts 1, 2, 3)
- Prateek Codes - series on concurrency and parallelism
- JP Camara - series on concurrency, parallelism and asynchronous programming in Ruby
- Ruby, Ractors, and Lock-Free Data Structures
- Articles on threads and processes in Ruby: 1, 2, 3, 4, 5
- parallel gem
- concurrent-ruby gem
- Ruby internals:
- Reference:
- Rails internals:
- Architecture:
- Background jobs:
- Performance:
- BigBinary - Scaling Rails series
- RorVsWild blog is largely about performance
- π²Nate Berkopec - The Complete Guide to Rails Performance
- π²Nate Berkopec - The Ruby on Rails Performance Apocrypha
- Mature Optimization Handbook (not Rails-specific)
- π²Rails Scales!
- PostgreSQL:
- Postgres Playground
- Yeah, Postgres can do that
- π²High Performance PostgreSQL for Rails
- Blog posts on Rails + Postgres: lots on PaweΕ Urbanek's blog, this one at Honeybadger, this one at thoughtbot.
- π²The Art of PostgreSQL
- π²PostgreSQL Query Optimization: The Ultimate Guide to Building Efficient Queries
- PostgreSQL docs
- SQLite:
- π²SQLite on Rails
- Deployment:
- Miscellaneous:
- Ruby that is not web development:
- π²DragonRuby Game Toolkit for game development. See their Discord and community site. Other Ruby game libraries: Gosu, Raylib Ruby, MiniGL, Ruby 2D, Taylor, TIC-80
- Gamefic for building text-based games and interactive fiction. See Getting Started and examples.
- SC2AI for StarCraft II botting
- Sonic Pi for live music coding
- Ronin for security development
- Scripting and text processing: Ruby One-Liners Guide, Ruby Regexp, π²Text Processing with Ruby
- Mentoring:
- Software systems:
- π²Release It!
- π²Foundations of Scalable Systems
- π²Designing Data-Intensive Applications
- Google SRE book and workbook. Related: π²Establishing SRE Foundations, π²Real-World SRE, π²Brendan Gregg's books
- Computer science:
- Learn Computer Science, my other list.
- Linux / command line:
- The Command Line Murders
- Linux Journey
- Sundeep Agarwal - Linux Command Line Computing
- The Linux Command Line
- The Art of Command Line
- Sundeep Agarwal - "Linux CLI and shell scripting" list
- Julia Evans - Your Linux Toolbox
- π²Efficient Linux at the Command Line
- π²How Linux Works
- π²Julia Evans - Bite Size zine pack
- π²Wicked Cool Shell Scripts
- r/ruby and r/rails
- Ruby (Discord)
- Ruby.social (Mastodon)
- Bluesky starter packs for Ruby developers
- Ruby on Rails Link (Slack)
- Lobsters is not Ruby-specific, but it's a way to widen your horizons and the discussions are of high quality. It's like Hacker News but smaller and more focused on programming.
- Bike Shed
- Code and the Coding Coders who Code it
- Code with Jason
- Fullstack Ruby
- IndieRails
- Maintainable
- On Rails
- Rails Changelog
- Remote Ruby
- Rooftop Ruby
- Ruby on Rails Podcast, especially starting at episode 372 went they went independent, brought on co-hosts, and hired an editor.
- Ruby Rogues
- The Ruby Gems Podcast
These are series using at least Rails 7.
- CJ Avilla - CreatorPlatform.xyz
- Conner Jensen - learning management system
- Conner Jensen - ecommerce app
- HigherTheoryDev - Klipshow (streamer dashboard)
- Ken Greeff - Luxury Stays (accommodation directory)
- TypeFast - Tinysale (Gumroad clone)
- TypeFast - Airbnb clone
- TypeFast - Trello clone
- TypeFast - Twitter clone
- TypeFast - Instagram clone
- Webcrunch - supplement sharing app
- Code with Jason Meetup
- Deanin
- π²Destroy All Software
- π²Drifting Ruby
- π²GoRails
- SupeRails
- TenderlovesCoolStuff
- Webcrunch
I've chosen the codebases below based on a these criteria:
- Is active, with recent commits.
- Does not use a JS framework on the front end, though I made exceptions.
- Is well-known or solves a problem that's interesting to me.
If you want to explore more widely, here are other places to find open-source Ruby projects:
- OpenSourceRails
- Ruby projects on CodeTriage, though not all of them are Rails apps
- Real World Rails (and how to search through it)
- Awesome Ruby and Rails Open Source Apps
Without further adoβ¦
- Small codebases: Less than 50k lines of Ruby code.
- github.com/nshki/naisho. <2k lines. Send personal data deletion request emails to hundreds of data brokers at once.
- github.com/carsoncole/workypad. 2k lines. App for managing job prospecting.
- once.com/writebook. 3k lines. App for publishing books to the web.
- github.com/garyharan/fresh plus github.com/garyharan/FreshAppIOS and github.com/garyharan/FreshAppAndroid. 4k lines. Dating app using Hotwire Native.
- github.com/ChaelCodes/MeetAnotherDay. 4k lines. Helps you find and meet up with your friends at conferences.
- github.com/SpinaCMS/Spina. 6k lines. CMS (Content Management System).
- github.com/eigenfocus/eigenfocus. 5k lines. Self-hosted project/time management app.
- github.com/basecamp/once-campfire. 6k lines. Self-hosted chat application similar to Slack.
- github.com/codetriage/codetriage. 6k lines. Issue tracker for open-source projects.
- github.com/demingfactor/calagator. 9k lines. Community calendar platform.
- github.com/rubyevents/rubyevents. 11k lines. Index of Ruby events and videos.
- github.com/lookbook-hq/lookbook. 11k lines. UI development environment for Rails apps.
- github.com/thoughtbot/upcase. 14k lines. Learning platform for developers.
- github.com/joemasilotti/railsdevs.com. 14k lines. The reverse job board for Ruby on Rails developers.
- github.com/galahq/gala. 15k lines. Collaborative learning platform.
- github.com/CircuitVerse/CircuitVerse. 15k lines. Digital logic circuit simulator. Has a Vue.js front end.
- github.com/docusealco/docuseal. 15k lines. Open source DocuSign alternative.
- github.com/rubyforgood/homeward-tails. 15k lines. Connects adopters/fosters with pets.
- github.com/TheOdinProject/theodinproject. 16k lines. Main website for The Odin Project web development learning platform.
- github.com/AllYourBot/hostedgpt. 16k lines. Self-hosted ChatGPT alternative.
- github.com/RailsEventStore/ecommerce. 17k lines. Example app showing DDD (Domain-Driven Design), CQRS, and Event Sourcing.
- github.com/lobsters/lobsters. 18k lines. Hacker News clone.
- github.com/maybe-finance/maybe. 19k lines. Personal finance app.
- github.com/rauversion/rauversion. 20k lines. Music platform.
- github.com/ifmeorg/ifme. 21k lines. Mental health communication web app to share experiences with loved ones.
- github.com/openSUSE/osem. 24k lines. Event management tool tailored to Free and Open Source Software conferences.
- github.com/chicago-tool-library/circulate. 26k lines. A lending library management system.
- github.com/feedbin/feedbin. 31k lines. RSS reader.
- github.com/AlchemyCMS/alchemy_cms. 37k lines. CMS (Content Management System).
- github.com/huginn/huginn. 37k lines. Web task automation.
- github.com/rubyforgood/casa. 44k lines. Volunteer management system for the nonprofit CASA.
- github.com/rubyforgood/human-essentials. 47k lines. An inventory management system for essentials supply banks.
- Larger codebases: More than 50k lines of Ruby code.
- github.com/rubygems/rubygems.org. 56k lines. Where Ruby gems are hosted.
- github.com/WikiEducationFoundation/WikiEduDashboard. 59k lines. Wikipedia course dashboard system. Has a React front end.
- github.com/chatwoot/chatwoot. 74k lines. Customer engagement suite. Has a Vue.js front end.
- github.com/solidusio/solidus. 98k lines. E-commerce platform.
- github.com/alphagov/whitehall. 110k lines. Publishes government content on gov.uk.
- github.com/mastodon/mastodon. 117k lines. Like Twitter but self-hosted and federated.
- github.com/redmine/redmine. 118k lines. Project management app.
- github.com/forem/forem. 126k lines. Powers the blogging site dev.to. Uses Preact on the front end.
- github.com/openfoodfoundation/openfoodnetwork. 129k lines. An online marketplace for local food.
- github.com/decidim/decidim. 294k lines. The participatory democracy framework.
- github.com/zammad/zammad. 299k lines. Helpdesk/customer support system.
- github.com/antiwork/gumroad. 323k lines. E-commerce platform.
- github.com/opf/openproject. 479k lines. Project management software.
- github.com/discourse/discourse. 514k lines. Discussion forum platform. Has an Ember.js front end.
- github.com/instructure/canvas-lms. 891k lines. A popular LMS (learning management system).
- gitlab.com/gitlab-org/gitlab. 3 million lines. Like GitHub but with CI/CD and DevOps features built in. Uses Vue.js on the front end. Has docs on architecture.