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!
- Preliminaries β
- Frontend basics β
- Ruby β
- Rails (~20% finished)
- Other essentials
- Ruby blogs, podcasts, screencasts
- Computer science (~30% finished)
- Other programming/CS resource lists
- 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. π
- Subscribe to programming newsletters for inspiration. My favorites:
- Treehouse's π²Frontend Web Development track, or The Odin Project's Foundations + HTML and CSS + JavaScript
- Build a blog from scratch: I have rebuilt it by now, but here is that first iteration, and here's how I built it. I am also posting some of my learnings on Twitter, whereβconfessionβI sometimes talk to myself.
- Community:
- 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)
- 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).
- 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.
- 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β¦
- 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.
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:
- 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.
- π²Ruby on Rails Tutorial will teach you Rails testing, good Git habits, and how to build an authentication (user login) system from scratch.
- 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) App Academy Open.
- Style guides for Ruby, Rails, and RSpec
- Rails Guides
- Testing: Minitest is familiar at this point. Now it's time to learn RSpec, Rails-specific testing techniques, and more Minitest.
- SQL:
- Interactive tutorials: SQL Teaching, SQLBolt, Select Star SQL, SQLZoo
- Extra practice: Wikibooks, w3resource, HackerRank
- Use the Index, Luke!
- Advanced Topics in SQL course from Stanford
- Active Record:
- Performance:
- Code-alongs:
- Rails Code Along
- Web-Crunch - Let's Build
- CJ Avilla - clearbnb
- CJ Avilla - Stock App
- SupeRails Code Along
- π²Ruby on Rails 6: Learn 25+ gems and build a Startup MVP
- By the way, you can get any Udemy course for less than $20 if you use a discount code, which you can get either by signing up for their email updates, or by leaving a course in your cart for a few days.
- 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:
- Rails internals:
- Deployment/DevOps:
- π²Deployment from Scratch
- π²Deploying Rails Applications
- π²Efficient Rails DevOps
- Guides to deploying Rails on AWS: 1, 2, 3
- Open source:
- Contribute to open source projects. I've written a short guide on how to get started with this.
- π²How to Open Source
- Git:
- 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:
- How to find your first Rails job, notes from my own job search.
- π²Get Your First Developer Job
- 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
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:
- Screencasts:
- Podcasts:
- How computers work:
- π²Code: The Hidden Language of Computer Hardware and Software
- NandGame
- 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:
- π²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:
- Operating systems: π²Operating Systems: Three Easy Pieces
- Networks:
- Computer Networks from Scratch
- π²Computer Networking: A Top-Down Approach
- for a fun review: How DNS Works
- Software architecture: π²Designing Data-Intensive Applications
- 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.
- ??: Structure and Interpretation of Computer Programs (and video lectures). I'm still not sure what exactly this book is about (even after reading the first few pages) but it is an often-recommended introductory text on "programming". So, maybe someday I will learn this "programming", after I've learned the less intimidating stuff (all of the above).