thredUP, the company I'm working for, uses Ruby on Rails (also known as RoR or Rails) for their development language of choice...and it's awesome. I'm more of a Front-End developer than anything else, but I have a degree in Computer Science and Engineering that gave me a head start on things like Model View Controllers (MVC) and other Back-End architecture patterns. I can't say I actually enjoyed the back-end classes in my degree and therefore I was somewhat skeptical to what extent I would enjoy or not enjoy working with Rails. After reading the Rail's Wikipedia page, I was starting to become intimidated. Unfamiliar terms like 'agile/rapid development' and 'scaffolding' were being tossed around casually and my concerns started to grow. I knew there was only way to proceed - jump into the deep end and see if I can swim.
What I quickly learned is that Rails takes care of a lot of the ugly work behind the scenes. A lot of things 'just worked'. I didn't thoroughly understand how they were working, but I grasped enough to be able to continue on and I think that's important in the beginning. Take manageable, bite-sized assignments/tasks and just focus on what's right ahead of you. Those little goals can go a long way in terms of confidence and motivation to continue learning.
I think a lot of beginners (such as myself) wonder what will be challenging at first. Well if you're a Back-End layman like me with most of your experience lying within basic server-side scripting languages such as PHP or ASP, the first challenge you will encounter is the syntax barrier. When I went from C++ to PHP, the jump wasn't hard at all; however, unless you're familiar with Python, Ruby will be confusing at first. No semi-colons to end lines of code, everything is dictated by formatting, functions becomes methods and everything you create is an object. It was a completely refreshing experience to start from scratch. I relate it to moving from one city to another. A fresh start is good if you embrace the situation - you can kick bad habits and have a clean slate to work with. Once I got used to the syntax, I started to really enjoy the clean formatting and easy readability of the code. So after you get a handle on the syntax, what's next? Resources.
Surrounding yourself with the right resources is key. I happen to work for an amazing CTO who is very patient and able to help me whenever I come to a dead end. When he's not around or occupied, online resources become my best friend. Rails has great online documentation. For example, if you're looking to install Rails, look here. Ready for a couple of guides to get your feet wet? Try the official Rails guides. If you're ready to start building your own app from scratch, this Rails API is great for looking up Classes and supported methods. I happen to be a 'learn by doing' person as opposed to the 'study first, do second' person. If you're like me, then get your environment set-up and start going through guides - it's the quickest way to feel comfortable working in a Rails environment. If you're working on an app that's already built, try building off previously built models/views/controllers instead of building your own. Seeing working code in action and modifying it is a great way to understand the intricacies of Rails. If that's not your style and want to read up on Rails/Ruby first, it's not a bad idea. Rails has it's own way of approaching problems and it's probably best to have a basic knowledge of principles like DRY (Don't Repeat Yourself) before you develop any bad habits. Supplementing your hands-on learning with studying is probably the best idea, but to each their own.
That about wraps up my introduction to Rails. As I'll be purchasing a new computer in the next month, the next post will be about getting the environment up and running. What apps to use (TextMate, Coda, GitX, etc.) and other fun things like bundles, syntax highlighting themes, and command line tips/shortcuts. I plan on turning this into its own series of blog posts as I continue to develop my Rails learning so stay tuned for more posts that actually contain snippets of useful code, epic failures I'm bound to cross, and useful gems/technologies/implementations that I come across along my journey with Rails.