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 "not done" sections (currently "Foundational tools" and below) are somewhat chaotic because I haven't yet seen what's worth keeping there.
- Preliminaries
- Basics
- Foundational tools
- Advanced Ruby and Rails
- Front end
- Expanding my horizons
- Programming games
- 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 resources under "Front end" below.
- 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.
- Guided practice:
- Exercism - Ruby
- Advent of Code with other people's Ruby solutions to compare yours to. One way to do this is my Ruby AoC CLI (command-line interface).
- 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.
- More ideas: Coding Challenges, Build your own X, Projectbook, Project-based learning
- Reference:
- Ruby API. Mentioning it up here because it's the best Ruby docs site but very little-known. Since its search uses a query param, you can add a search keyword to your browser to let you 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. Mentioning it up here because it's the best Ruby docs site but very little-known. Since its search uses a query param, you can add a search keyword to your browser to let you 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:
- GoRails - Build a Blog with Rails 7 and if you want more along the same lines, Rails 6 for Beginners
- 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
- Misc.:
- Explore Ruby communities (below)
- Style guides for Ruby, Rails, and RSpec
- 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 is worth trying too. Examples: 1, 2.
- The job search:
- Basics:
- Advanced:
- 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
- SQLite:
- Basics:
- Advanced:
- 💲Computer Networking: A Top-Down Approach
- HTTP From Scratch
- 💲Web Security for Developers: Real Threats, Practical Defense and the accompanying site Hacksplaining
- PortSwigger - web security exercises
- Jesse Storimer - Working with TCP Sockets
- Build a web server from scratch. Here are Ruby resources: Ruby HTTP server from the ground up, How to Build a Web App with and without Rails Libraries, and a Reddit discussion with helpful comments
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:
- Reference:
- Architecture:
- Performance:
- Background jobs:
- Deployment:
- Misc.:
- Community:
- HTML:
- CSS:
- 💲The Spicy Web - CSS Nouveau
- MDN - CSS
- cssreference.io
- CSS Selectors: A Visual Guide & Reference
- The Odin Project - Intermediate HTML and CSS
- The Odin Project - Advanced HTML and CSS
- CUBE CSS
- Every Layout
- Magic of CSS
- Under-Engineered Patterns
- Stephanie Eckles - Modern CSS Solutions
- Stephanie Eckles - SmolCSS
- CSS Naked Day
- 💲Julia Evans - Hell Yes! CSS!
- Modern Font Stacks
- Type Is Design: Fix Your UI with Better Typography and CSS
- CSS games
- Basics:
- Practice: See also programming games below.
- Exercism - JavaScript
- Advent of Code with CLI runner (1, 2) and solutions (1, 2, 3, 4, 5, 6 (TS), 7 (TS))
- Build something in JS. Or for a more structured approach: JavaScript30 and solutions, Advent of JavaScript and solutions, Frontend Mentor, Frontend Practice
- DOM, forms, and other Web APIs:
- Going deeper:
- Deno for its "batteries-includedness", e.g. its standard library
- Plain Vanilla
- You Don't Know JS Yet. Be sure to read the last three parts after they're finished. #TODO
- Deep JS
- What the f*ck JavaScript?
- HTML-first JS libraries: There are lots of these, e.g. see Hotwire, many others at UnsuckJS. But these are the ones I'm most interested in.
- i-html for HTML over the wire. Also, read Hypermedia Systems and/or watch Return To Hypermedia: Solving Javascript Fatigue Using Fundamental Web Architecture, by the creator of htmx (a similar library that is larger and better-known).
- Alpine.js. Add Alpine AJAX for functionality like i-html/htmx.
- Learning:
- 💲Don't Make Me Think
- 💲The Design of Everyday Things
- Growth.Design
- Roast My Landing Page blog
- Victor Ponamariov - UI/UX newsletter
- Victor Ponamariov - 50 Tips to Improve User Interface
- Victor Ponamariov - How to design almost any UI element
- 💲Victor Ponamariov - 100 UI/UX Tips & Tricks (or on the landing page)
- 💲Victor Ponamariov - Re:Form
- 💲Master UI Design
- 💲Refactoring UI
- 💲User Interface Design: A Software Engineering Perspective
- Libraries:
- Pico CSS
- Shoelace, soon to be superseded by Web Awesome.
- MDN - Accessibility
- Responsible Web Applications
- web.dev - Learn Accessibility (among their other courses)
- In Rails: Accessibility is a Requirement, Accessible by Default
- Be a mentor:
- Career advancement:
- Design patterns:
- Architecture (not Rails-specific):
- My other lists:
- Learn Computer Science and Low-Level Programming
- Learn Roc, a functional programming language.
- API games (any language):
- Ruby games:
- JavaScript/TypeScript games:
- CSS games:
- Other programming games:
- r/ruby and r/rails
- Ruby (Discord)
- Ruby.social (Mastodon)
- 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.
There are lots more out there; these are just my favorites.
- Code with Jason
- Fly.io - The Ruby Dispatch
- Fullstack Ruby
- Noel Rappin's Blog
- One Ruby Question
- Write Software, Well
- zverok on lucid code and open data
These are series using at least Rails 7.
- CJ Avilla - CreatorPlatform.xyz
- Conner Jensen - learning management system
- Conner Jensen - ecommerce app
- 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
- Ruby & Beyond
- SupeRails
- Webcrunch
- AmirRajan
- ChaelCodes
- CodingWithCaleb
- fractaledmind
- FullStackLive
- jhawthorn
- purplelf
- TenderlovesCoolStuff
- thoughtbot on YouTube
- thoughtbot on Twitch
- YakAndShears
- yesthatelise
- Bike Shed
- Code and the Coding Coders who Code it
- Code with Jason
- Friendly Show
- Fullstack Ruby
- IndieRails
- Maintainable
- Rails Changelog
- Remote Ruby
- Rooftop Ruby
- Rubber Duck Dev Show
- Ruby for All
- Ruby on Rails Podcast, especially starting at episode 372 went they went independent, brought on co-hosts, and hired an editor.
- Ruby Rogues
- Tightly Coupled Book Club
- YAGNI
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/onerinas/whatwentwelltoday. <2k lines. An app to share daily positivity.
- github.com/krschacht/37signals-rails-code. <2k lines. Extracts from the Basecamp and Hey codebases.
- 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/ChaelCodes/MeetAnotherDay. 4k lines. Helps you find and meet up with your friends at conferences.
- github.com/SpinaCMS/Spina. 5k lines. CMS (Content Management System).
- github.com/docusealco/docuseal. 6k lines. Open source DocuSign alternative.
- github.com/codetriage/codetriage. 6k lines. Issue tracker for open-source projects.
- github.com/maybe-finance/maybe. 8k lines. Personal finance app.
- github.com/demingfactor/calagator. 9k lines. Community calendar platform.
- github.com/joemasilotti/railsdevs.com. 12k lines. The reverse job board for Ruby on Rails developers.
- github.com/RailsEventStore/ecommerce. 12k lines. Example app showing DDD (Domain-Driven Design), CQRS, and Event Sourcing.
- github.com/AllYourBot/hostedgpt. 12k lines. Self-hosted ChatGPT alternative.
- github.com/TheOdinProject/theodinproject. 12k lines. Main website for The Odin Project web development learning platform.
- github.com/lobsters/lobsters. 13k lines. Hacker News clone.
- github.com/thoughtbot/upcase. 14k lines. Learning platform for developers.
- github.com/CircuitVerse/CircuitVerse. 15k lines. Digital logic circuit simulator. Has a Vue.js front end.
- github.com/houndci/hound. 14k lines. Automated code review for GitHub PRs.
- github.com/chicago-tool-library/circulate. 17k lines. A lending library management system.
- github.com/rubyforgood/homeward-tails. 19k lines. Connects adopters/fosters with pets.
- github.com/ifmeorg/ifme. 21k lines. Mental health communication web app to share experiences with loved ones.
- github.com/openSUSE/osem. 25k lines. Event management tool tailored to Free and Open Source Software conferences.
- github.com/feedbin/feedbin. 25k lines. RSS reader.
- github.com/rubygems/rubygems.org. 26k lines. Where Ruby gems are hosted.
- github.com/huginn/huginn. 36k lines. Web task automation.
- github.com/AlchemyCMS/alchemy_cms. 36k lines. CMS (Content Management System).
- github.com/rubyforgood/casa. 37k lines. Volunteer management system for the nonprofit CASA.
- github.com/rubyforgood/human-essentials. 39k lines. An inventory management system for essentials supply banks.
- github.com/SumOfUs/Champaign. 39k lines. Digital campaigning platform. A Rails app generator.
- Larger codebases: More than 50k lines of Ruby code.
- github.com/WikiEducationFoundation/WikiEduDashboard. 50k lines. Wikipedia course dashboard system. Has a React front end.
- github.com/chatwoot/chatwoot. 56k lines. Customer engagement suite. Has a Vue.js front end.
- github.com/solidusio/solidus. 72k lines. E-commerce platform.
- github.com/mastodon/mastodon. 75k lines. Like Twitter but self-hosted and federated.
- github.com/openfoodfoundation/openfoodnetwork. 102k lines. An online marketplace for local food.
- github.com/forem/forem. 103k lines. Powers the blogging site dev.to. Uses Preact on the front end.
- github.com/redmine/redmine. 117k lines. Project management app.
- github.com/alphagov/whitehall. 117k lines. Publishes government content on gov.uk.
- github.com/zammad/zammad. 250k lines. Helpdesk/customer support system.
- github.com/decidim/decidim. 288k lines. The participatory democracy framework.
- github.com/discourse/discourse. 322k lines. Discussion forum platform. Has an Ember.js front end.
- github.com/opf/openproject. 368k lines. Project management software.
- github.com/instructure/canvas-lms. 745k lines. A popular LMS (learning management system).
- gitlab.com/gitlab-org/gitlab. 1.8 million lines. Like GitHub but with CI/CD and DevOps features built in. Uses Vue.js on the front end. Has great docs on architecture.