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
- Games in Ruby
- 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 beginner. So I tried some others, and found Ruby to be the most enjoyable.
- 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 hours grading in the evenings and on weekends, which would have made studying very difficult. 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 (I use the Keyboardio Atreus, which has a learning curve, but I love it and it was affordable), 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. Be sure to take notes each time you learn something new in an exercise, and at the end you could write up your reflections (here are mine).
- 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 a great exerciseβyou could build a SpaceTraders client, for example. Or if you want to build a graphical game, see the Games in Ruby section.
- 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.2/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:
- Polishing up:
- 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
- The job search:
Here are some places where you can learn with others or ask questions when you get stuck.
- Communities:
- Newsletters:
- Mentorship:
- First Ruby Friend where aspiring and first-year developers are connected with a mentor.
- r/rails is worth trying too. Examples: 1, 2.
- 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:
- π²SQLite on Rails
- Basics:
- Advanced:
- π²Computer Networking: A Top-Down Approach
- π²Web Security for Developers: Real Threats, Practical Defense and the accompanying site Hacksplaining
- 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
- 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
- π²Julia Evans - How Containers Work
- π²Wicked Cool Shell Scripts
- Jesse Storimer - Working with Unix Processes
- 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:
- Text processing:
- Misc.:
- Reference:
- Architecture:
- Views:
- Phlex and tools based on it, such as Superform.
- Glimmer for Opal and for Web. See the RubyConf 2023 workshop and sample apps.
- 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:
- Exercism - JavaScript
- Build something in JS, or do JavaScript30
- DOM, forms, and other Web APIs:
- React:
- Going deeper:
- 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?
- Web components:
- "Hello Web Components"
- The Modern JavaScript Tutorial - Web Components
- MDN - Web Components
- Lit "Learn" resources and a few code labs (1, 2, 3, 4)
- SSR web components in Ruby with the upcoming Heartml (see this Spicy Web article for context)
- π²Don't Make Me Think
- π²The Design of Everyday Things
- Growth.Design
- Roast My Landing Page blog
- 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
- MDN - Accessibility
- Responsible Web Applications
- web.dev - Learn Accessibility (among their other courses)
- In Rails: Accessibility is a Requirement, Accessible by Default
- Community and news:
- Basics:
- What is the difference between Turbo and Stimulus, and what exactly is Hotwire?
- Hotwire.io (better than the official docs site)
- Write Software, Well - A Brief Introduction to Hotwire
- Write Software, Well - You Don't Need Rails to Start Using Hotwire
- Write Software, Well - Turbo Streams: How They Work and Differ From Turbo Frames
- Evil Martians talk and blog post
- Turbo Rails Tutorial
- David Colby - Turbo Rails 101
- Hotwire Handbook, Part 1, Part 2, Part 3
- 30 days of Hotwire tips
- Andrea Fomera - Learn Hotwire by Building a Forum
- David Colby - Hotwired ATS: Modern, full-stack Rails development
- Hotwire Cases
- Turbo Music Drive app demonstrating upcoming features of Turbo 8
- Turbo 8 in 8 minutes
- Screencasts and blogs:
- Mix & Go screencasts on Hotwire
- SupeRails screencasts on Hotwire
- Rapid Ruby screencasts on Hotwire
- SupeRails blog which includes even more Hotwire tips.
- David Colby's blog
- π²Andrea Fomera - Learn Hotwire by Building a Calendar
- Examples and snippets:
- Hotwire examples from Thoughtbot
- Better Stimulus
- Stimulus-Use
- Stimulus Components for inspiration
- Hotwire extensions:
- Multi-platform:
- Other similar libraries:
- htmx: read the book Hypermedia Systems and/or watch Carson Gross β Return To Hypermedia: Solving Javascript Fatigue Using Fundamental Web Architecture.
- htmz: like htmx but simpler.
- Phlex: view templates
- Glimmer DSL for Web: an entire front-end framework
- Heartml: SSR web components with Ruby
- Be a mentor:
- Career advancement:
- Computer science:
- π²Code: The Hidden Language of Computer Hardware and Software
- NandGame
- CircuitVerse
- From Nand to Tetris: Part 1, Part 2
- π²Data Structures and Algorithms in Java
- π²The Algorithm Design Manual plus lecture videos
- π²Operating Systems: Three Easy Pieces
- π²Computer Systems: A Programmer's Perspective
- Crafting Interpreters
- Coding challenges:
- Design patterns:
- Monitoring:
- Documentation:
- Divio Documentation System (a.k.a. Diataxis)
- Explore other Ruby implementations:
- Natalie (WIP, compiles to C++)
- Learn Crystal: Whenever you need to make an isolated bit of Ruby code run faster than Ruby can run, porting it to Crystal is easy because they're so similar.
- Crystal for Rubyists (doc page)
- Crystal for Rubyists (book)
- Exercism - Crystal
- Crystal Koans
- Learn how to offload CPU-intensive tasks from a Ruby app into Crystal. There are several approaches (1, 2, 3, 4).
- Make a performance-intensive game/toy in Crystal using Raylib or SFML, possibly with the Chipmunk physics library.
- Learn functional programming
- Ruby game libraries:
- π²DragonRuby Game Toolkit is my recommendation because it has the liveliest community, and all the resources below are for DragonRuby. You may qualify for a free license (see "Free Unrestricted License" on the homepage), and the creators regularly give it away for free during game jams and other special occasions.
- Gamefic is for building text-based adventure games and interactive fiction. See Getting Started and examples.
- Gosu
- MiniGL
- Ruby 2D
- Taylor
- DragonRuby tutorials:
- DragonRuby community, reference, tools:
- Discord server
- Docs
- Zif
- Dragon Riders Community
- DragonRuby Treasure, a collection of games made with DragonRuby.
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
- 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/pet-rescue. 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.