About two years ago I was introduced to the world of programming and Ruby. At the time I was helping friends at a startup with customer support for a product that they were building. Out of curiosity I started reading up on what they were doing. I was fascinated. I don’t have a formal education in technology. Most of everything I know today has come from community and (mostly free) online resources.
Pair up or find a mentor
For a year and a half I have been “learning” Ruby. Only the last nine weeks really count. What is the difference? I have paired with a friend and we are learning together. That weekly check-in on Tuesday makes all the difference in the world. When getting started, I recommend pairing with someone or having a mentor.
Join a Ruby group
One of the best parts of learning Ruby is the community. Seriously. The first Ruby group I attended was Newhaven.RB. I would show up and ask folks my questions. They would introduce me to concepts, practices, and worlds that I was completely unaware of. I cannot emphasize how important this is. You cannot learn what you don’t know about. Put yourself in situations where you have no idea what is going on. Take notes the best you can and then go research on your own.
These days I hang out with Arlington Ruby, NoVaRUG, and DC RUG.
One of the awesome things about programming is the plethora of great online resources. Many of these are given and maintained out of generosity (read awesome communities here). Since there is so much out there, I am going to be subjective here and talk about what I have done and personally recommend.
My go to publisher for books has been the Pragmatic Programmers. There are several different titles that I would recommend keeping on hand. On a complete side note, consider only buying the E-books. Pragmatic Programmers does a great job of updating the books making the print versions not as reliable quickly.
- Learn to Program by Chris Pine
This is a great great introduction to programming in general and teaches you Ruby at the same time. This is the first resource that I used when learning Ruby. There is also a free version.
- Programming Ruby 1.9 by Dave Thomas, with Chad Fowler and Andy Hunt
Just get this book. If you have a question about Ruby, this book probably has an answer. Reading through it is good, but be ready for a dense and long read. I have read most of the book straight through, but these days I primarily use it as a reference. It helps me understand what is really going on under the hood.
- Metaprogramming by Paolo Perrotta
This book comes with a caveat - it isn’t a beginner book. It assumes a lot of background knowledge and covers advance topics. So why am I including it here? This book gave me what I felt was the 10,000 feet view of Ruby while still remaining practical and hands on with examples. For example, understanding what happens when a method is called or what self is at all times is extremely helpful. My recommendation is to use other sources first and when you want to be inspired and challenged pick this book up and read the first chapter three times, then read the second chapter three times, and etc.
There are many more books such as Ruby Best Practices, Eloquent Ruby, and Well-Grounded Rubyist which I am looking forward to reading.
For people just starting out, I recommend starting with this guide. I think a good time frame depending on available time and how comfortable you are with programming is 6-8 weeks. I had planned on completing in four weeks and that turned out to be a little ambitious for myself.
Learn to write tests before your code and your life will be better. Ok, so I don’t know how to test code yet; however, it is next on the list. These lessons teach you to program in Ruby with Test Driven Development.
There is a lot more great material out there and hopefully this will help someone get started. Find a community, online or off, and pick a study guide. Within 30-60 days you’ll know all you need to become an intermediate Rubyist.
UPDATE (12/19): I came across this excellent post, The Ruby Reading List by Russ Olsen (who has been a great help to me). You should go check it out!