How NOT to learn Ruby on Rails

Post by dkeefe on May 21, 2013

There are a lot tutorials and references on how to learn ruby and rails.  I want to share with you how NOT to do it, based on my recent experience.  When you first decide to learn ruby and rails, it can be a bit overwhelming.  More than likely, someone will have recommended one of the most common sites, such as Codeschool or Treehouse, which are both great.


Here is where I want to caution you, especially if you have no prior programming experience.  Spend plenty of time learning ruby before moving onto rails.  I was advised by my friend Beverly to get a good grasp on ruby first, but I didn’t exactly listen.  Not because I didn’t respect her opinion and guidance, but because I was swept way by the magic that rails offers.


I went through some of the ruby training provided by Treehouse and Codeschool, and was also watching some great videos from Railscasts which got me off course.  Don’t confuse what I am saying, I love Railscasts, Ryan Bates is a great teacher.  I am just saying that until you have a solid understanding of the fundamentals of ruby, you should be careful not to move forward too quickly.


If you are like me and crave the sense of accomplishment you get when you create an app and bring it to life by deploying it, then you are likely to get off track.  Another thing that drew me away from the fundamentals was scaffolding.  If you are not familiar, scaffolding creates a simple interface to put data in the database.  The downside to scaffolding is that it will likely create many files that you don’t need.  It is better to determine what you need in your app and add each piece as you go.


Before you jump into rails, I recommend you have a solid understanding of the following:

  • Strings
  • Variables
  • Methods
  • Blocks
  • Objects
  • Classes
  • Numbers
  • Arrays
  • Hashes
  • Loops
  • Modules



Moving forward like I did, before you are ready will only cause you a great deal of frustration and discouragement.  During the time, beginning the second week of Nov 2012 through March 1, 2013 I did absolutely no work learning ruby and rails, as you can see by my github activity.  I was very discouraged because I could not figure things out and was burning myself out trying to understand what I felt I should have already known.  I had made up my mind, I was throwing in the towel, maybe this stuff just wasn’t right for me.


One day in late February 2013, I received an encouraging call from my friend Beverly.  After our phone call, I decided to give it another try and get back to coding.  I found myself right back in the same routine of cloning open source projects and following tutorials, but still not understanding ruby the way I should. I began my ruby and rails journey with Treehouse on April 1, 2012 and at the present time, I still do not have a good understanding of some of the basics of ruby.  Even though I took a 3.5 month break, I still feel that I should be a lot further along than I am right now. I attribute much of the frustration I am experiencing right now from not building a good foundation in ruby at the beginning of my journey.


If you are new to programming in ruby, I hope that you will take something away from this post.  Moving to fast, although exciting, will only cause you major problems down the road.


If you found this useful, please share.

Go back to the original post on The Common Geek

  • Daphne Rouw

    Hey Dennis, great words of encouragement there for those who are new to ruby on rails. I threw the towel in after chapter 3 of Michael Hartl’s tutorials because I just wasn’t understanding the Rails framework, MVC and all the hooks that comes with it. Moved on to PHP Yii Framework, and came back to RoR again after some convincing from a rails engineer I met in a meetup and immediately understood what was going on in the framework. To date, I have managed to complete the tutorial (through much blood,sweat and tears) and I’ve enrolled myself in a code school to work with the pros. I’m blogging about my experience in code school and hope to share it and encourage others who are learning RoR.

    • Dennis Keefe

      Thanks Daphne! I just subscribed to your blog and look forward to reading about your journey. Keep up the great work!

  • Jordan Burke

    I’m with you 100% on this path. I started out doing Rails for Zombies from CodeSchool – which was great! – but jumping into Michael Hartl’s tutorial from there just confused the bejeezus out of me.

    Then I found and worked on the Ruby course. I’m proud to say that between that, CodeAcademy, and CodeSchool I not only understand Rails better, but I understand the theory behind the logic in Rails and I’m not afraid to work on non-Rails Ruby projects.

    Glad you got over that hump as well!

    • Dennis Keefe

      Thanks Jordan! I’m have recently went back to the CodeAcademy ruby course and I will checkout also. It’s exciting to make things work, but without proper understanding, I am only hurting myself.

  • Jacob Lichner

    I can certainly attest to this. Ruby on Rails is just Ruby, after all. Personally, for anyone getting started with Ruby, I would recommend they try to build their own static site generator using YAML for data. I learned a lot by struggling through this on my own in the very beginning. Then at some point there are other higher level concepts that will need to be covered such as object oriented programming, HTTP, database schemas, etc.

    • Dennis Keefe

      Thanks Jacob! You’re right, walking through a basic ruby project piece by piece will help you learn a lot.

  • Sebastian Hirsch

    Thanks for this blog post!

    I, too, thought I could go on with Ruby on Rails, but hit a wall now. Thanks to what you wrote and Jordan Burke’s reminding me of, I now got the affirmation to keep on with Ruby.

    I wish you all the best on your programming journey!

    • Dennis Keefe

      Hey Sebastian, thanks for the comment. I wish you the best too on your journey. Keep up the hard work!

  • Tanvir Hasan

    I totally agree with you. Codeschool and treehouse both of them are great. You can learn courses from different angle if you combine them. teamtreehouse and codeschool both offer first month trial: