About a year ago I decided I should broaden my software horizons and learn something completely different from my normal fare of FPGAs and hardware. As such, I started learning Ruby on Rails. Long story short - it's been an awesome year, I have learned a lot about Rails development, but even more about efficient (and inefficient) ways to learn. This post is an attempt to catalog the latter to help others traveling this path.
Five tips for learning Ruby on Rails (or anything really)
1 - Work towards a specific project or goal
This advice applies to learning any new skill - learning Rails just for the sake of learning Rails is great, and possible, but not nearly as fun or satisfying. Fun/satisfying things take less motivation to work on and as one of my mentors put it "Developer motivation is a scarce resource, use it wisely".
Decide on a specific web app that you would like to build with your acquired Rails skills. This could be your personal blog, a web community for your hobby, or your startup idea. This project continuity not only provides focus and motivation, but also serves a source of real development challenges and results. In my case, I built a fishing app for iPhone, FishingScout.com
2 - Get involved in the community
Austin is fortunate to have a vibrant Rails developer community, anchored by Austin on Rails (thanks Damon!). I started my Rails journey by attending a few meetings to get a feel for the people and projects.
This was invaluable both for meeting other Rails developers (of all experience levels) and keeping up with new tools, gems, etc. Many times a 10 min conversation at an AoR meeting has saved me hours of development trial-and-error. Best of all, its a lot of fun!
3 - Consider paying for a class or tutoring
You'll hear this advice from many successful people - if you are serious about a worthy goal, and you can afford it, then you can significantly accelerate your trip up the learning curve by hiring help. For example, if you read Noah Kagan's writing, he is serious about physical fitness and he often references advice from his health coach.
Through an AoR conversation, I heard about an upcoming 'Rails for Beginners' course lead by Mattt Thompson (then of Gowalla, now of Heroku). The class consisted of 2 full weekends in the classroom plus projects & homework. It wasn't cheap, but there were only 10 students, so we had a lot of time for questions and exploration. Mattt was a great teacher and I finished the course feeling like I had taken a massive leap forward in my capability.
4 - Find a mentor or three
Similar to hiring a tutor, a mentor can make a massive difference in the speed of your progress. A good mentor helps you focus on what is important, avoid common pitfalls, and holds you accountable for making progress.
Following the Rails course, Mattt Thompson was (and still is) very responsive in answering questions and providing advice. Further, the Rails community seems universally committed to helping eachother out. Case in point, there are apps that exist purely to provide assistance to new Rails developers:
- RailsMentors.com - mentor matchmaking service
- Rails Hotline - a call-in service staffed by Rails Experts
I have taken advantage of both of these services - Rails Mentor Tim Tyrrell has helped me become more proficient with testing, tools, and ActiveRecord. Similarly, I've called the hotline 10+ times, always coming away with a solution or at least a direction. Hotline founder Chap Ambrose, as well as all of the developers taking the calls, go out of there way to help you out (sharing code, emailing ideas days later, following up to make sure you're not stuck). Take advantage of these resources.
5 - Use online resources deliberately
I left this tip for last because it is the default approach. Thanks to _why and others like him, there are great online resources for learning Ruby and Rails. The key point here is to be deliberate, pick one or two tutorials and complete them in a regular, disciplined manner. A scattered/haphazard approach here will kill your efficiency & retention.
Here are a few online Ruby & Rails resources I have used:
- TryRuby.org and RubyMonk.com - interactive Ruby tutorials
- Michael Hartl's RoR Tutorial book/site - I found this to be a great supplement to other coursework
- Schneems.com - Austinite Richard Schneeman shares his UT Rails coursework here
- JumpstartLab Tutorials - I haven't gone through these, but have heard they are well done
- Rails for Zombies - The free course is fast with fun exercises
In the end, it's pretty straightforward:
- Work towards a specific project or goal
- Get involved in the community
- Consider paying for a class or tutoring
- Find a mentor or three
- Use online resources deliberately
I hope these 5 tips can help you on your path to learning Rails (or any challenge you find worthy). No matter the project, the effort and learning required to build something new is very rewarding in itself.
H/T to SHL's post for reminding me that I needed to publish this!