Learning Ruby: a retrospective
Tags: ruby, beginners, rails
Published: 2023-01-06 16:39:49

{% collapsible **Table of Contents** %}
- [But why Ruby?](#but-why-ruby)
- [My "Learning Ruby" roadmap](#my-learning-ruby-roadmap)
  - [In the beginning](#in-the-beginning)
  - [Time lapse](#time-lapse)
- [What next? Keeping it simple](#what-next-keeping-it-simple)
{% endcollapsible %}

Happy New Year! I hadn't planned on any New Year's resolutions, but then I came across [Bring Back Blogging](https://bringback.blog/), a challenge to publish three posts in January. I just couldn't resist. So my resolution is to write more blog posts… at least this month 😂

Today I'll reflect on my past two years of learning Ruby. It seems appropriate, this being my first new year as a professional Ruby developer.

## But why Ruby?

Why did I say I'm a *Ruby* developer just now? Why not a *software* or *web* developer? Am I one of those [strange Ruby people](https://www.reddit.com/r/ruby/comments/ym86p5/linus_torvalds_the_ruby_people_strange_people/)?

*Of course* I'm a software developer and a web developer. I've learned lots besides Ruby, and this year I aim to become better-versed in web standards like web components and the latest CSS features.

But **generally I have the most fun when I'm writing Ruby**, and Ruby is where I've spent the most time. When I started learning programming in 2020, I spent the first few months on web basics but then I switched my focus to Ruby, and that's where I've happily been ever since.

## My "Learning Ruby" roadmap

As a guide to my reflections today, I'll use [my "Learning Ruby" roadmap](https://github.com/fpsvogel/learn-ruby), which originally arose out of the chaos of my bookmark hell, where I was having trouble keeping track of the actually important learning resources. The roadmap worked well for me and eventually I put it up on GitHub because making it public gives me more motivation to keep making progress.

But another benefit to its being on GitHub (besides the warm fuzzies I get when a random stranger stars it) is that now, almost two years later, I can look back at earlier versions and see how my learning goals evolved.

What did my roadmap look like in the first Git commit? Let's go back in time to May 2021…

### In the beginning

[The earliest tracked version](https://github.com/fpsvogel/learn-ruby/tree/d7ac9571f039cdc633de2c46f905277aab788661) of my roadmap was pretty simple. It had three sections of resources: frontend basics, Ruby, and computer science.

[My roadmap today](https://github.com/fpsvogel/learn-ruby/tree/e07a73b6d651b5653e7813127dfc73f220799c04) *still* starts with frontend basics and ends with computer science. **It's the middle part that has exploded:** instead of one Ruby section, I now have *seven* Ruby-related sections, in addition to four other new sections.

But back to my early roadmap, the emphasis is clear: **I loved Ruby** and **I thought all the important stuff could fit under the Ruby heading**, except for my "healthy dose of computer science" (as I put it) and a smattering of frontend knowledge, which got their own sections.

At the same time, **I was conscious that Ruby was not the most popular choice for a beginner**, and thus "Objections" was the first preliminary section of my roadmap, and the first objection was *"Why Ruby??"* I eventually scrapped the "Objections" section because it made my roadmap *seem* more objectionable than it actually is, but later that year I expanded my answer to "Why Ruby?" into a blog post, ["Ruby for the self-taught developer"](https://fpsvogel.com/posts/2021/why-learn-ruby).

### Time lapse

A couple months passed. I finally gave in and [split up the "Ruby" section](https://github.com/fpsvogel/learn-ruby/tree/4c1a8af840dbd1d1355bf5eef1192eafe2e1e8a0) as I geared up to learn Rails. Over the following year, the new "Rails" section [would go on to expand](https://github.com/fpsvogel/learn-ruby/tree/ba820a63b0686974c0648e8bce3c4190293cd77b#rails) to massive size and extent, containing even a "PostgreSQL" subsection 🙈

It was in mid- to late-2021 that I first sighted frontiers in Rubyland which even now I'm pushing myself to start exploring, such as reading open-source Rails codebases ([the early version](https://github.com/fpsvogel/learn-ruby/commit/ecce26bdfc29a3fdf231a89fc37420bb8432c094#diff-b335630551682c19a781afebcf4d07bf978fb1f8ac04c6bf87428ed5106870f5R83-R93) and [the expanded list of today](https://github.com/fpsvogel/learn-ruby/tree/e07a73b6d651b5653e7813127dfc73f220799c04#rails-codebases-to-study)).

My studies slowed down a bit in 2022, for the happy reason that I'd gotten my first developer job and I was doing more of my growing *away* from my roadmap.

In July I took the momentous step of [adding a "JavaScript" section](https://github.com/fpsvogel/learn-ruby/commit/945e990095025e6e18e87b31654cb44b11511d2c). Its earliest entry, appropriately enough, is titled "You Don't Know JS" 😂

In September I finally [split up the giant "Rails" section](https://github.com/fpsvogel/learn-ruby/commit/9875e75e218598d5a0bd06989d782e86392d4581) into standalone sections which are more sensible, if a bit overwhelming in the table of contents.

## What next? Keeping it simple

As I looked through my commit history just now, I noticed a pattern: a section of my roadmap grows and grows until it fragments into a profusion of new sections, one or two of which grow again and repeat the process.

On the other hand, one of the stated purposes of my roadmap is **to help beginners who too often feel lost amid a sea of tutorials without clear direction.**

So I'll have to be disciplined this year to make sure my roadmap doesn't get out of hand:

- **Keep revising the "done" sections.** I'll need to keep putting on my me-two-years-ago mindset and tightening up the "done" part of my roadmap, because beginners tend to prefer being handed one or two excellent resources over having to choose from all twenty options.
- **Keep making progress.** The other scenario in which my roadmap gets shorter is when I actually put in the time to study, checking things off and deciding whether they're worth keeping on the roadmap (usually they're not).
- **Cut out the less important stuff.** For example, my progress in the computer science section has stalled as I've realized that knowing how to implement data structures and algorithms from scratch makes no discernible difference in how I code. So should I get rid of the computer science section, or keep it there for later? I'll have to think about it.

Thanks for going on this reflective blast to the past with me 🚀