Online Guide to How I Taught Myself Ruby on Rails

Published: February 24, 2014

Written: February 24, 2014

As most of you know, I quit my full-time job job at PaySimple back in November 2013. I went on a 6 week vacation to NYC, Peru and Argentina, and came back mentally prepared to dive into a career change.

In all honestly, I'm not entirely sure if I want to be a software developer, but I AM sure that I am sick of having great web app ideas that I can't develop on my own.

I'm a self-starter. I want to prototype my ideas before I show it off to someone. Maybe I won't be the best developer in the States, but I'll have the power to take an idea from inception to creation on my own. and that's frickin' amazing!

Here's how I see the next 9 months unfolding:

1. Best Case Outcome I fall in love with developing and it turns into a fruitful career that allows me to challenge myself, travel the world on contract work, and pay my bills with room to spare.

2. An Also OKAY Outcome I DON'T fall in love with developing. Well hey, at least I had the balls to quit my full-time job to pursue a goal. I'll have learned a new skill and I'm sure I'll meet some cool people along the way.

March 20, 2014 Update: So far, I think I'll like developing. I wasn't aware of how much fun solving logic puzzles could be. The sense of accomplishment from getting a program to work is like none other. You sit there mulling over different ways of solving the problem, and when it finally clicks and you quickly code out the answer...sweet!

With so many online resources to learn Ruby and Ruby on Rails, I decided to list all the ones I'm using here, as well as a brief review of what I learned and what I thought of the program. This will be an ever-growing list of online tutorials that I've completed, in the process of completing, or looking to complete within the foreseeable future.

Hope you enjoy it. I'm stoked to post a link to my Heroku-deployed app at the very bottom. At the writing of this post (February 23, 2014), I don't really even know what Heroku is or even have a CLUE how it works, but I'm confident that within a few months I'll know what it is, how it works AND have an app deployed on it.

Best, Patrick Jones (The Future Ruby on Rails Developer)

UPDATE: Starting April 5th 2014, I'm going to be doing the Tealeaf Academy online bootcamp. They have three courses. The first is Intro to Ruby and Web Development, then Rapid Prototyping in Rails, and finally Production Quality Apps in Rails. I'm cranking out as much prework as possible so I can stay ahead of the game once I start Tealeaf's structured coursework.

TeaLeaf Academy Section

Here's a link to my Start to Finish Review of the TeaLeaf Academy.

After I finish TeaLeaf in late July 2014, I'll probably get back into the self-taught world to keep my skills sharp. So many amazing tutorials out there. After Ruby and Rails there's Node, Sinatra, Go, Meteor, etc! Who knows, maybe I'll publish a simple "Make a _______ in Sinatra" tutorial. It's a great way to reinforce learning.

So, I'm a little behind schedule. With 2 5-day vacations in May, I wasn't able to complete my first course in time. It took 6 weeks instead of 4 weeks. I decided to learn more Ruby before starting the second TeaLeaf course. Scroll to the bottom for my thoughts on Pragmatic Studio Ruby. I should be starting Course 2 on June 16, which puts my completion for everything sometime into late August or early September. I was pretty pissed off at myself for falling off the horse a bit, but I'm back in my rhythm. Kind of wish it was winter right now. It'd be MUCH easier to focus on coding all day instead of daydreaming about day-hikes. Oh well...

Guide to Learning the Front-End Stuff

Flash back to January 1, 2014. I had just quit my cushy office job a few months prior, gotten the travel bug out of my system for awhile, and decided it was time to jump in headfirst to learning software development.

In all honesty, I had no idea where to start. Some people said to learn Python, others said to learn Ruby, and other said PHP was the way to go. I finally decided on Ruby and Ruby on Rails because it was the language of all the new developer bootcamps. If they were teaching this language, it must be the one to learn.

I knew I wanted to be a full-stack developer, taking my ideas from inception to implementation, with minimal help along the way. I'm not saying I wasn't accepting of help, I'm saying that I wanted to have the ability to design an app, as well as program the back-end. I didn't want to have to lean on a designer to do all my designer work while I did the backend stuff. As I see it, I want to be able to get a decent prototype of a web app up and running, and then I'll bring in a a UI/UX guy to clean it up. I do not, however, intend to wait on a designer before I start building my ideas; hence, full-stack developer.

With the knowledge of wanting to "do it all", I set out on figuring out how someone becomes a full-stack developer.

That's where the Treehouse track comes in. They lay EVERYTHING out for you. You start with some basic HTML, move into CSS, Javascript, JQuery, and eventually into Ruby and then Rails.

Here is where Team Treehouse comes in. I've learned SO MUCH from their online video series. The videos are easy to watch and you learn a ton. I take meticulous hand written notes from each lesson, and then I transcribe them and post them in the Study Guide & Notes section of this blog.

If I were to give any advice, I would say to start on their Rails Development track. I think one of the most confusing things about self-teaching myself Ruby/RoR was that I didn't know where to start. Was I supposed to learn HTML and CSS first, or would that even be necessary once I knew Ruby and understood Rails.

I also planned on doing CodeSchool's HTML and CSS courses, but I think they're more aligned with Ruby and Rails, whereas Team Treehouse's strong suit, I theorize, is design. (See Ruby Foundations review below to confirm this theory)

So, learn HTML and CSS from the Team Treehouse guys, and then maybe go to CodeSchool for their Ruby and RoR courses.

Helpful Tip: Learn Ruby First, Rails Second

When I first started to think about getting into Ruby on Rails, I wasn't sure if Ruby and Ruby on Rails were the same thing. I'm slowly starting to comprehend that Rails is basically a bunch of pre-written Ruby that you can put together. I explained it to people that Ruby is the wood and Rails is a modular-home. EVERYTHING in the house is built from wood, but when you can have a pre-built kitchen module, why build it yourself.

That said, it's VERY IMPORTANT to know how to build your own house. What happens if your closet breaks? Do you understand how it was built? That's how I see having Ruby knowledge when it comes to using Rails. Using my wood analogy, maybe you don't need to be an expert wood carpenter, but you better know how things are build with wood. What the processes are, etc.

I've read about Rails developer who don't understand Ruby and are worried someone will find out. I'm looking to have a command over Rails and fully understand how the underlying Ruby is making everything work. That said, here are my Ruby and Ruby on Rails tutorials. After I complete each one I'll publish a small review below it.

Becoming a Full-Stack Developer: Start to Finish

The CSS Foundations coursework (~5 weeks | Finished February 14, 2014)

Not even sure where to start. This course was phenomenal! I went into it knowing absolutely nothing about CSS, not even sure what it really did. Guil did such a great job explaining everything. They covered every necessary concept that a front-end designer could need to know. After finishing this course, I was confident in my ability to put together a mock-up of sorts.

Of course, I'm no Chris Coulier, but I know enough to create my own CSS, or look at someone else's CSS and tweak it to my needs. And, in all honesty, I've come to realize that I'm not a good designer. I don't have an eye for color or aesthetics. I'm much more suited to the backend world. That said, I'll happily use something like WebFlow or Foundation to build my front-end projects quickly, and then dedicate myself to some kick-ass API integration in the backend.

Either way, if you're looking to learn CSS, you NEED to do this lesson from Team Treehouse. They knock it out of the park. Their passion is definitely in design.

Team Treehouse Ruby Foundations (~2 Weeks | Finished March 3, 2014)

I'll be the first to say it, Team Treehouse is amazing. They've got some great teachers and a really fluid platform that encourages you to learn and developer. However...

They're not the best Ruby teachers. I think these Ruby Foundations videos solidify my opinion that Treehouse is much better suited for front-end development. The CSS Foundations coursework videos were absolutely amazing. I learned an unbelievable amount from Guil's lessons. They walked you through every lesson and then had reasonably difficult coding challenges.

The same can't be said about the Ruby Foundations video. Jason was a great teacher, but the teaching method just wasn't that successful. I really enjoyed the coding challenges of the CSS Foundations lessons; but they were non-existent with Ruby Foundations. I'm not sure if they decided to focus on front-end stuff more than back-end stuff, but a console would have been great. Just something like "write a method that takes the current bank account balance and subtracts a given amount." would have been great.

However, I won't lie, I did learn quite a bit. I didn't get to practice it as much as I would have liked, but I did learn about hashes, lambdas, procs, blocks, classes, methods, and more. It's worth going through this LONG foundations lessons solely to learn the terminology and see a great coder (Jason Seifer) in action.

LearnStreet Ruby Lessons (~3 Days | Finished March 6, 2014)

I have to say, I was pleasantly shocked by how much I learned from this program. I had just finished about 8 hours of Ruby videos from Team Treehouse and I was sick of taking notes and watching them write code, but not be able to do it myself. That said, LearnStreet was a breath of fresh air.

LearnStreet is a series of 12 interactive lessons that work you through the very basics of Ruby. I wasn't expecting to learn that much from the lessons, but it would be nice to start typing code instead of watching the Treehouse guys type code and try to explain in. Like I said, I learned way more than I was expecting. I started to understand Classes and Methods a little bit more, and ever wrote some code I was rather proud of. I still have no idea how you go from Ruby code to making it work in a browser interface, but I'l sure I'll get there.

Either way, definitely give these tutorials a try. They took me about 2 days to complete and it was rather enjoyable. Things are starting to stick in my brain now and I'm getting excited for the life of a developer.

RubyMonk Primer (~8 Days | Finished March 14...17, 2014)

So far, RubyMonk's Ruby Primer has been my favorite learning experience so far. The layout of teaching is nice. You learn a little, do a few examples, and then they have a more difficult example at the bottom of each lesson that you need to pass before moving on. I really enjoyed how they asked you a rhetorical question and then answered it a few paragraphs below.

One of my favorite aspects of RubyMonk was the "quizzes" at the end of each lesson. Some of them were quite difficult and I had to use Stack Overflow and plenty of Googling to find the right answer. However, I think that's the best way to learn. I don't want to watch videos of someone else churning out code that I barely understand (cough Treehouse), I'd rather struggle through writing the code myself so that I learn as I go. Yes, some of my code was WAAAAAAYYYY longer than necessary, but I still got the correct return values.

I'm just starting the 16 problems section of Primer, and will move onto Primer: Ascent after I do Zed Shaw's Ruby the Hard Way. I'm trying to bounce back and forth between a variety of learning tools so that my brain doesn't get tired of learning the same way (like it did with Treehouse's Ruby lessons).

(3 days later - hence the 3 day finishing timeframe) Just finished the 16 problems from the end of the RubyMonk Primer course. Wow! Super difficult but very enjoyable. I was stack overflowing like it was my job. The guys at RubyMonk sure give your brain a good workout. Of the 16 problems, I only needed to click "See Solution" for 3 of the problems. Damn that Inject method. It always gets me. Also need to remember that I have UNLESS in my toolbox now. I keep thinking I need to use IF/THEN statements.

All in all, very enjoyable learning experience. I was talking with a friend who is also learning to code, and we were remarking on how interesting it is that we can actually read and understand Ruby code now. Given, I have SO MUCH MORE to learn, but I'm finally started to grasp some of the language. Some of the concepts are slowly starting to sink in and it's a very rewarding experience. It can also be SUPER depressing when you can't seem to wrap your head around a certain concept (*cough* inject method *cough*), but when it finally starts to make sense (how I came to understand the Inject method), you feel very empowered. On to Zed Shaw's book now.

Learn Ruby the Hard Way Lessons 1 - 37 (~5 days | Finished March 23, 2014)

I finished the first half of the book and then, while searching for some help, found a student developer who was pushing all her lessons to GitHub, and I decided that I should probably be doing the same thing. So, I did the Treehouse Git Basics lesson below. If you want to learn about Git, read my review below.

Back the Learn Ruby the Hard Way. I have to say, I'm impressed with the book so far. It's a LOT OF TYPING. Which is exactly what Zed says it is going to be. You type full programs, then go back and comment them, and then run them, debug them, and run them again. Zed teaches you some things, but he also makes you go find the answers on your own. Having done a decent amount of Ruby practice before this book, I'm pretty confident in my work so far.

However, one area I REALLY need to work on is my typing. I'm typing too many mistakes and it's really slowing down my programming. If I could type at the same speed as my brain thinks, I'd be rocking through these programs like no one's business. That said, I'm starting to dedicate 15 minutes of pure typing practice on Super great site and you can practice typing Ruby code, which is great since it's nowhere near what it's like typing regular sentences.

GIT Basics by Treehouse (1 Day | Finished March 24, 2014) After 6 days of working on Zed's Ruby the Hard Way book, I decided that I should really learn GIT and GitHub, so that I can start pushing all my practice files to Git. This will start building my GitHub profile and increase my activity days.

The Team Treehouse GIT Basics video series consists of about 10 5-minute long videos that describe what a Version Control System is, how it works, and then show you how to manage merges, branches, and things like that. It should only take me a day or two to complete. After finishing, I'll write a review for it below and then start pushing commits for my Learn Ruby Hard Way coursework, as well as my Tealeaf Academy coursework.

Review BOOM! 1 Day! Start to finish. Team Treehouse put together a GREAT introduction to Git. I honestly had no idea that git was a program on your computer. I thought it was something that GitHub gave you when you signed up for their service.

Thanks to their easy-to-follow instructions, I learned all about Git, committing, merging, creating branches, and working with remote repositories. I even started pushing my Learn Ruby the Hard Way stuff to my GitHub profile. So, now that I'm confident with Git, I'm going to go finish Zed's book, and make sure I commit everything along the way. I want a solid 30+ day streak, if not more.

Learn Ruby the Hard Way by Zed Shaw Lessons 38 - 52 (Completed through L47)

Unfortunately, I needed to stop at lesson 47 in order to start the prework for my TeaLeaf Academy course. I really enjoyed Zed's book, and I'll probably come back to it once I'm done with the first month of TeaLeaf in order to finish the book. All in all, definitely worth going through, if not for just the typing practice alone.

Learn to Program by Chris Pine(Started March 30, 2014. | In Progress)

Chapters 1 through 10 of this book are the TeaLeaf Academy prework for their Web Development Course. The first 7 chapters were a breeze, and I'm just diving into 8 right now. There are 14 chapters so I'm going to try to finish them all before we start the course this Saturday, April 5, 2014.

TeaLeaf AcademyApril 2014 - Aug 2014 I'm currently working my way through the TeaLeaf Academy's online Ruby on Rails bootcamp. Follow my progress here.

Pragmatic Studio: Ruby 3 Weeks (June 2014) After completing the first TeaLeaf course, I didn't feel like I knew Ruby well enough. It's not that they didn't teach enough Ruby in the TeaLeaf course, it's just that they only taught what was necessary for the lessons. That's probably the proper way to do it(since you don't need to know EVERYTHING) before you can move on, but I wanted to know more. So, I signed up for Pragmatic Studio's Ruby course. It's $197 and includes hours of video lessons and a nice online interface to track your progress.

So far, I'm quite happy with what I've learned. You REALLY dive into true object-oriented programming, much more so than with TeaLeaf. I'm having objects call objects call objects. The goal of the class is to create a command-line game(boring), but I've come to realize that Ruby is a scripting/command line language. You need a framework to get it to the internet.

I'm about 2 days from finishing the Pragmatic Ruby course and then I'll be moving back to TeaLeaf Course 2, Rapid Prototyping with Rails. I think having the additional knowledge that I got from Pragmatic will help me a bunch when we start doing more intense object-oriented Rails stuff.

After the second TL Rails course, I might do the Pragmatic Intro to Rails course as well. I feel like it's always a good idea to really pound some concepts into your head before moving on. I've got no time-line for completing my coursework, so as long as I put in a few hours a day, I'll be happy. Luckily, my business, Boost Fitness Marketing, is generating a pretty decent revenue stream, so it pays for all of my online coursework.

Beginning Ruby from Novice to Professional by Peter Cooper

RubyMonk Primer: Ascent

CodeLearn Ruby on Rails

Lynda Ruby Tutorials

RubyLearning Tutorial

Armando Fox's Lectures on Ruby

Ruby on Rails Guide

UC Berkeley Ruby on Rails Overview Videos (~8 hours in length total)

Ruby on Rails Part 1: Hello World

Ruby on Rails Part 2: Just Enough Ruby

Ruby on Rails Part 3: Basic Rails

Ruby on Rails Part 4: Advanced Active Record

Ruby on Rails Part 5: AJAX and Testing

Ruby on Rails Part 6: Configuration and Deploy