Learning Ruby: a retrospective

Felipe Vogel - Jan 6 '23 - - Dev Community

Table of Contents

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:

  • 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 🚀

. . . . . . . . . . . . . .