The Pragmatic Studio

Interview: Dave and Chad on Advanced Ruby

September 16, 2009

The Advanced Ruby Studio is coming up next month (early registration ends soon!), and folks often ask what to expect in our advanced classes. So I asked Dave Thomas and Chad Fowler (the instructors) to share a few of their thoughts on the Advanced Ruby class.

Mike: I have to admit, I’m always a bit intimidated by the prospect of attending advanced classes. I’m afraid everyone else will be leaps and bounds ahead of me, and I won’t be able to keep up. In general, how do folks know when they’re ready for the Advanced Ruby course?

Dave: I think you’re ready for the advanced course when you’re comfortable with Ruby. You’ll know the syntax, and know the more commonly used standard classes and libraries. You’ll be happy at the command line, and you’ll feel OK knocking out Ruby code.

Chad: With any class, the skill level of the participants is going to vary. Some students are way ahead and some are behind the rest when we do the Advanced Ruby course. What I’ve found is that no matter the skill level of the attendee, there’s a lot to learn in this course. We cover some deep fundamentals that I think will change the way a newer Ruby programmer conceptualizes the language. We also cover many of the lesser understood corners of the language so even the more experienced Rubyists have plenty to learn. Dave and I both tend to learn something new in each of these courses. It’s amazing how deep Ruby is.

Mike: We’ve noticed that alumni of the Rails course tend to come back for the Advanced Ruby class. It seems that folks gain a deeper appreciation for Ruby after they’ve started writing their first Rails app. How will Rails developers benefit from attending the Advanced Ruby course?

Dave: Rails is all about long-term productivity. And because you write Ruby to create Rails applications, then the better you know Ruby, the better you’ll write Rails applications. But there’s more than that. If you currently write Rails, you’ll know that it relies heavily on Ruby metaprogramming techniques. And by the end of this course, you’ll know how those techniques work, and you’ll be able to apply them to write new shortcuts for your own applications.

Chad: I remember the first time I saw Rails. I looked at how ActiveRecord and ActionController worked and said to myself, “Yea, that makes sense. I can see how he did that.” Obviously I hadn’t thought of doing it that way myself or maybe I’d have already written something like Rails. But because I was well grounded in Ruby’s more advanced techniques, Rails didn’t surprise me. I think that’s part of why I was able to pick it up so quickly early on when there weren’t any books or many tutorials to learn from.

As Rails evolves, that same rule applies. The more you know about Ruby, the more you know about Rails. So as I always say to new Rails programmers, Ruby is the path to Rails mastery.

Mike: It’s obvious in watching you teach this course that you’re having a lot of fun. Which topic do you most enjoy teaching in the Advanced Ruby course?

Dave: I really enjoy teaching the Ruby Object Model section (because it’s fun watching all the light bulbs go on). But the most fun overall is learning new things: Chad and I tend to rock and roll a bit, and every class I learn some new facet of Ruby as we explore.

Chad: It’s really hard to say. I like so many of the content sections, but they’re different with every class. Sometimes the Domain-Specific Languages section turns into a really fun group conversation. Sometimes that happens in the dynamic language design section. For me, it’s often about what the group brings to the class as much as it is about the specific content we prepare.

That being said, being the language nerd I am, I really like going through the internals of the Ruby interpreter and showing people how Ruby actually works.

Mike: You recently updated the Advanced Ruby course to include Ruby 1.9 topics. Which new syntax or language features are you most excited about in Ruby 1.9?

Dave: I think the adult side of me likes the much improved performance and the incredible multinationalization support (probably the best of any language out there). The kid in me loves the tricks you can do with the new regular expression engine, and the extra metaprogramming support.

Chad: I love all the new Proc stuff. I think that makes me an odd-ball, but I think the ->{} syntax will get natural to Rubyists over time, and we’ll all appreciate the brevity. I also like that #=== is an alias for #call, allowing Procs to participate in case statement matching more cleanly.

I agree with Dave’s picks as well. In fact, the more I touch Ruby 1.9 the more excited I get about it.

Mike: Thanks, guys! I remember the first time I sat in on the course. Although I was already comfortable with Ruby, learning some of the advanced techniques you guys use gave me a lot more confidence. I started looking at my Ruby code (and Rails apps) differently. I started digging deeper into Ruby libraries I was already using or considering using. The upshot is I’m writing better Ruby code these days and it’s taking me less time to get stuff done.

The next Advanced Ruby Studio is in Denver, CO on October 19-21. Sign up by Sept. 25th (that’s next Friday) and save $300 on early registration. It’s a great way to meet Dave and Chad, and learn from the Ruby masters!