What is It
The Ruby Association offers two certifications to assert two levels of proficiency in Ruby. Silver (the lowest tier) asserts:
…the background, grammar, classes, objects, and standard libraries of Ruby.
While Gold aims a little higher and covers the following in addition to what is covered in Silver:
…standard Ruby libraries and knowledge related to classes and objects required for Ruby application design.
They sound similar, but Gold covers more object-oriented design, advanced syntax, and meta-programming.
Why The Exam
There are two polarized camps when it comes to certificates - those that are pro-certification and those that are vehemently against them. Like everything, there’s a spectrum in between. I tend to fall in the middle but closer to the latter. Getting certificates for the sake of getting certified is silly. For the truly absurd, see the U.S. Army’s certificate progression for entry Cyber Officers (I think it’s since been revamped, though). No, Lieutenant, you’re never going to use that Cisco Certified Network Associate or CISSP while in the Army.
That said, I wanted to learn Ruby. I come from a very strong Python and C background and never needed anything else. I’ve never had to use Ruby, and my current position doesn’t require me to use it. But I wanted to know what was up with this (what I thought was) silly-looking syntax:
class Foo < Bar
@baz = baz
@count = 0
f = Foo.new("Hello world")
@count += 1
p f.baz # => "Hello world"
p f.increment # => 1
- Why is
<) from an empty class (and can only inherit from that one class)?
@to signify instance variables?
- Not being able to read/write those variables without
- Creating singleton methods with
pto print out the values (and without using parenthesis)?
What I initially thought of as Python-like turned out to be anything but.
But why take the exam? I figured it would be a good check on learning. Was it a waste of $150? Maybe. Probably. Will any employer look at it and think, “wow, he must be a good Ruby dev?” No. Does it matter for any of the roles I’ll be interested in? Probably not. I’ve heard that certifications are bigger over in Japan, the birthplace of Ruby. Maybe this perspective is geographically insular in that regard. Regardless, the rest of this post is just about how I learned Ruby well enough in two weeks (with a day job) to pass the Ruby Association Silver Exam.
I started by reading Zed Shaw’s “Learn Ruby the Hard Way” book. It’s free without the video content. I greatly enjoy his writing style, and I think he does a great job getting someone without any programming experience up to a comfortable scripting level. It took me about eight hours to read through the material and do most of the exercises. However, it’s not the book for anyone who has any programming experience in any other language. If you understand variables (and their scope), methods, classes, etc., it’s pretty much a slow roll to show you how Ruby does things. You can get the same information much quicker with other materials like API docs.
Then I moved on to “The Well-Grounded Rubyist” by David Black. I only read chapters 1-8 before the exam. It’s a phenomenal book, organized well, toned appropriately, and it is really something I want in most of my technical literature. I also feel like the exam writers read through this book to come up with questions. Many of the passages were directly applicable to the exam. Or maybe they’re just common Ruby-isms that pop up frequently. This would be my #1 resource for learning Ruby, exam or no exam. Relatedly, the publisher, Manning Press, has a great ‘liveBook” feature to read the content in your browser. I usually use ePUB, but I found myself actually using their software.
The Ruby Association provides a practice exam (for version 2 and version 3 of the exam). If you’re taking the exam, I highly recommend studying both versions and reviewing the answers. There aren’t any gotchas, and it’s certainly helpful for taking the real exam.
Aside from these resources, I made an embarrassingly simple object-oriented flashcard deck in Ruby to get hands-on experience. I combined this with about a dozen easy LeetCode problems I solved in Ruby. From Reddit, I also found another author who wrote about the exam. Reading his article was helpful.
The Exam Itself
The cost is $150. It’s 50 questions long, and you have to get above 75% to pass. You have, I think, 90 minutes to take it. It took me maybe 20-25 minutes. You learn if you pass or fail immediately. I passed and am just waiting on the certificate to be passed along.
My Favorite Aspect of Ruby
I like that Ruby is all about message passing. As a developer, you don’t need to worry whether a given object’s symbols are class/instance variables or methods. You just ask, “Hey, Object X, do you respond to Y? Here is the message.” From the developer’s perspective, you worry less about how it was implemented and more about what the object can do. It’s a fresh perspective coming from Python.
Am I a Ruby developer now? No. But I understand that “silly” looking syntax from before. I feel confident I could jump on a software engineering team that predominately uses Ruby and contribute meaningful work. I didn’t need to spend $150 to prove that, but 🤷. I’m still going to use Python and C for my day job and hobbies.
I hope the resources described above help anyone considering the exam in the future.