preparing for ruby

06 Mar 2014

I've been getting some emails from students asking how they can prepare for my Ruby class starting in three weeks (three weeks?!), and it's definitely time to start talking about pre-work. It's an interesting topic because yes, it'd be ideal if every student came into the class with a strong foundation, but on the other hand, what pre-work will provide a solid preparation without being way over newbies' heads and without giving them the wrong ideas about the “right” ways to do things?

What I hear from beginners (and what I know from experience) is that after going through the Ruby track at Codecademy or dabbling in paid online courses like Treehouse, they still don't know how to pull it all together or take that knowledge and apply it confidently or competently to their own real-life projects. Sure, you can sum arrays of integers and extract! from hashes, but do you really internalize what a class is and can you explain how it interfaces with other classes? You can play copycat with the videos and type tests and see the green stars line up in the terminal, but do you really understand what you're doing or why you're doing it? I know I didn't. (And really, those little green stars don't give you that satisfaction until you understand how they were transformed from the red F's – and can transform them yourself without a screencast.)

But that doesn't mean those online courses aren't good prep for my class. The whole point of The Iron Yard course is to teach you the things you can't learn yourself online and to help you pull all of those bits of code knowledge together into a deep, thorough understanding. So dig into some of these resources, and enter my classroom on March 31st with as many tools in your toolbox as you can – and I'll teach you how to use them and how to think about them.

Note: Do NOT install anything on the computer you'll be using in class yet. Only read and research.

Ruby/Rails:

  • Ruby Track on Codecademy: Get the basics so you're not always looking up terms and methods.
  • Hartl's Rails Tutorial: Probably the best online guide to Rails, and something good to start reading, but don't try to memorize it all by heart or worry about understanding absolutely everything.
  • The Docs & Guides (Rails / Ruby): I don't expect you to understand everything (or even most of what) you read here, but it's important that you start getting used to looking at code documentation. I'm also a firm believer in learning anything the same way you'd learn a new language – by immersion. Even if you don't understand most of the words, just being exposed to them and starting to place them in contexts will help you become fluent faster. PS – start with the Rails guides.

Programmers' Tools:

  • Command Line: Mastery of command line basics is essential for any developer (and extremely useful for non-devs) and will make your life much easier.
  • Git: Git and version control are central to how we will be working on projects. This may be a bit much to fully wrap your head around before class, but it's worth a read to start getting familiar with the terms and concepts.

Keep in mind that even if every student goes through all of these resources, everyone will still enter the class at different levels. If you feel like you “know everything” about a certain topic we're covering in class on a given day, rest assured that you don't. Even with the most “basic” coding principles or techniques, you'll never know everything, and there will be so much about that topic – possibilities, limitations, applications, testing techniques – that you can explore while others are still working out the fundamentals. My goal is that no one gets left behind and at the same time that no one gets bored.

My biggest tip: Immerse yourself in coding language (exercises, articles/sites about code, podcasts) to just start picking up the lingo and broadening your awareness of concepts.

But that leads me to my biggest warning: Don't get attached to any "right" way of doing or thinking about code. Just because you listen to a podcast where some well-known Rubyist argues for separating code out into mix-ins, for example, doesn't mean that's the best way to do things for every project. The biggest thing I need all my students to have is a sponge for a mind: soak as much as possible in, but be able to let it all out.

Slán go fóill,
Shelby at 17:30