Someone on Quora asked the question, What's the best way to way to learn Ruby on Rails as a beginner? and I wrote a long'ish answer that I'd like to share with our blog readers - vote my answer up on Quora if you like it. :)
There are a few reasons why learning a new programming language or framework can be challenging:
Most online learning tutorial or books try to teach you too much too soon. As a beginner, you will find that you are spread too thin and taking on too much all at once. It can be overwhelming and you could easily lose focus, going down rabbit roles.
You would not have a good sense on how to pace yourself. In the beginning, you are excited and cruising through the first 3 chapters, but after a couple weeks you start to feel a bit exhausted, only to realize that you are only 1/4 through and it's only getting harder.
You could fall into the trap of either try to grasp too many concepts, or messing around with code without clarity - and then either forget about stuff soon or feel just following steps without knowing why.
You will be studying alone. You will hit roadblocks and you will get stuck, and when you are learning it alone, there is nowhere to turn to get help. A simple bug could take you hours, making the whole experience a struggle and not fun.
This is especially true for learning Ruby on Rails, or web development in general. If you are an absolute beginner (never programmed before), you could very possibly find yourself facing all of the below:
- Basic programming concepts (e.g. what is an array?)
- Ruby the programming language
- Database basics
- Web basics - forms, HTTP request / response
- Rails, the web framework to develop web application with Ruby
- Unix command line and development environment
- Deployment and Server Management
- Source code version control systems (git)
- Libraries / Ruby Gems
- Test Driven Development (TDD) or Behavior Driven Development (BDD) methodologies
- Object Oriented Programming (OOP) concepts
It will be an absolute chaotic experience trying to tackle all those by yourself, and you will easily get stuck and give up.
For these reason, I would suggest that beginners, especially beginners with few prior programming experience take training classes or find personal tutors to help them when they start. Yes, that means you'll need to invest some money, and some may be quite expensive. But they will save you a ton of time and will give you a big boost starting up.
I personally know of some workshops that are taught by reputable members of the Ruby community:
Some other ones that started recently that I heard good things about:
- DevBootcamps - if you are in SF area
- Bloc.io - online based
- Starter League, formerly Code Academy - Chicago Area
Lastly, there is us, Rails Tutors. Chris and I try to solve exactly the problems that I outlined above. We aim to take you from zero to building a full blown app in a few weeks with an affordable price. Here is what we do:
We stripped down the material to focus just on Ruby and Rails - sure, version control, testing, deployment, and even object oriented programming paradigms are all very important to learn. But they can wait. You learn core Ruby and Rails first. We will introduce some topics towards the end of the course, not while you are just starting. If you are absolutely new to programming, we will also offer you a complementary "Introduction to Programming with Ruby" video cast series.
We give you the structure and set the pace for you. You reserve time for 4 weeks, and we take you from zero to building a social app from the ground up. You can relax, and just let us take you there.
Our teaching approach is "Tell -> Show -> Challenge -> Explain" - to teach you just "enough" concepts, then let you watch how we apply the concepts with actual code. Then we challenge you with homework assignments to let you code, putting pieces together yourself. Finally, we host office hours every few days to answer your questions and explain.
You will be learning in a cohort. Everyone starts at the same time and will help each other to move forward. We provide online forums / chat rooms for people to help each other. More importantly, you will have us on your back - we will be your personal mentors to give you support and help you unstuck. Passionate teachers go a long way in helping you learn.
We emphasize coding like a real developer, so the homework we give are real hands on coding assignments that walk you through building a real deployable Rails app. No in browser coding or games. If you follow along, you will be able to produce a deployable, functioning Rails application. We have had students done this before, so we know it's very doable.