Learning Ruby

A retrospective two years later

January 06, 2023 · Felipe Vogel ·

Happy New Year! I hadn’t planned on any New Year’s resolutions, but then I came across Bring Back Blogging, 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?

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, 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 of my roadmap was pretty simple. It had three sections of resources: frontend basics, Ruby, and computer science.

My roadmap today 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”.

Time lapse

A couple months passed. I finally gave in and split up the “Ruby” section as I geared up to learn Rails. Over the following year, the new “Rails” section would go on to expand 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 and the expanded list of today).

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. Its earliest entry, appropriately enough, is titled “You Don’t Know JS” 😂

In September I finally split up the giant “Rails” section 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:

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

👉 Next: Learning Git 👈 Previous: OOP vs. services for organizing business logic 🚀 Back to top