I Just Want to Build Rails Apps! Why Should I Know Ruby?
The question in the title of this article is something I desperately wanted the answer to when I first began learning Ruby and Rails, and at key points along my journey it’s something I’ve revisited. Despite what I may have been led to believe very early on, today — I think it’s imperative for a new developer to have a good understanding of the Ruby language before going full throttle into learning the Rails framework.
Now, before I shoe-horn everybody into this ideology I’ll offer this question, why are you interested in learning Ruby on Rails anyway? The answer to that question can largely determine how much my thinking above really applies to you.
If your goal is to make basic dynamic websites on your own, or to learn to build a rough prototype of a web application you’ve been imagining, then you probably could get by with a cursory understanding of Ruby and basic knowledge of the tools that Rails gives you. But if you’re looking to build production grade applications, or to be a Rails developer full-time, you will need to know much more about Ruby than the chapter provided in your favorite Rails tutorial.
Make no mistake, rushing straight to learning Rails will get you going faster, but depending on the complexity of your projects you could find your productivity stalled and in need of a brush up on the underlying stuff that’s powering the framework you’re leaning on (speaking from experience here).
Rails is built on the Ruby language. Period. I’ve heard it time and time again from more seasoned developers, and now I can say I agree that if you want to be a professional Rails Developer or build professional applications, It’s very necessary to have the ability to discern what is provided to you by the Ruby language and what is a part of the Rails framework. This level of knowledge allows you to bend the framework to your liking as opposed to the framework dictating what you do. To have this level of control is what drives me to continue learning the Ruby language itself.
Some of the resources that I have used to help learn the Ruby language are:
Learn to Program, by Chris Pine — A beginner focused book on learning programming that uses the Ruby language. This was part of the pre-reading for my boot camp course and helped lay a really good foundation for what I would learn going forward.
The Ruby course on codeacademy.com — This is an excellent free resource to get your feet wet with Ruby. I found it very helpful in that you actually have to type through the exercises. As the guys in Launch School liked to say this will get you “learning with your fingers”.
The Well Grounded Rubyist, by David A. Black — This is more of an intermediate level book, and builds on the foundation you’ve learned in the previous book and courses. This isn’t a reference as the author states, but its a very detailed walk through what most Rubyists should know, or at least know of.
Launch School (formerly Tealeaf Academy) — An online web development bootcamp run that has really helped me grow big time. The format has changed from when I first enrolled. However, their focus on self paced learning and building good fundamentals and habits surely hasn’t. They’ve even added some services to help with securing a job if that’s what you’re looking for. There is a cost for this, but if you’re looking for a good online bootcamp I’d give these guys a look.
Lastly, if I’ve learned anything it’s that you gotta continue sharpening the saw. Cyclical review of topics you’ve covered and things you may not fully understand can help greatly. I’d say every few months, review what you’ve learned in that span. Where are your weak areas? What structures or syntax confuses you the instant you see it in a program? Identifying these things and working on them can improve the quality of your code, and how quickly you can write programs.
When you start out learning to code you just don’t know all the stuff you don’t know. I’m finding that the quicker you can identify what you don’t know, the faster you can form a plan to start learning those things.
Anyhow, that’s my 2 cents. Hopefully this helps on the road ahead!