You're not a programmer quite yet. I like to think of this book as giving you your "programming black belt." You know enough to start another book on programming and handle it just fine. This book should have given you the mental tools and attitude you need to go through most Ruby books and actually learn something. It might even make it easy.
I recommend you check out some of these projects and try to build something with them:
- The Well-Grounded Rubyist to continue your Ruby study and become better at it.
- Eloquent Ruby for even more Ruby skill.
- Learn Python The Hard Way You will learn even more about programming as you learn more programming languages, so try learning Python too.
- Rails Tutorial to learn Ruby on Rails.
- RubyMotion For building building native iOS applications.
- Thor to build command line tools.
- Mechanize for automatic web crawling and scraping.
- Chef Solo for automating system administration.
- Ruby-Processing for computer art.
- Padrino is like Sinatra but with a lot more features to work more like Ruby on Rails.
- Learn C The Hard Way after you're familiar with Ruby, try learning C and algorithms with my other book. Take it slow; C is different but a very good thing to learn.
Pick one of the above resources, and go through any tutorials and documentation they have. As you go through documentation with code in it, type in all of the code and make it work. That's how I do it. That's how every programmer does it. Reading programming documentation is not enough to learn it; you have to do it. After you get through the tutorial and any other documentation they have, make something. Anything will do, even something someone else has already written. Just make something.
Just understand anything you write will probably suck. That's alright though I suck at every programming language I first start using. Nobody writes pure perfect gold when they're a beginner, and anyone who tells you they did is a huge liar.
How to Learn Any Programming Language
I'm going to teach you how to learn most of the programming languages you may want to learn in the future. The organization of this book is based on how I and many other programmers learn new languages. The process that I usually follow is:
- Get a book or some introductory text about the language.
- Go through the book and type in all of the code making all of it run.
- Read the book as you work on the code, taking notes.
- Use the language to implement a small set of programs you are familiar with in another language.
- Read other people's code in the language, and try to copy their patterns.
In this book, I forced you to go through this process very slowly and in small chunks. Other books aren't organized the same way and this means you have to extrapolate how I've made you do this to how their content is organized. Best way to do this is to read the book lightly and make a list of all the major code sections. Turn this list into a set of exercises based on the chapters and then simply do them in order one at a time.
The above process also works for new technologies, assuming they have books you can read. For anything without books, you do the above process but use online documentation or source code as your initial introduction.
The final thing to remember about learning a new language is: Don't be a stupid tourist. A stupid tourist is someone who goes to another country and then complains that the food isn't like the food at home. "Why can't I get a good burger in this stupid country!?" When you're learning a new language, assume that what it does isn't stupid, it's just different, and embrace it so you can learn it.
After you learn a language though, don't be a slave to that language's way of doing things. Sometimes the people who use a language actually do some very idiotic things for no other reason than "that's how we've always done it." If you like your style better and you know how everyone else does it, then feel free to break their rules if it improves things.
I really enjoy learning new programming languages. I think of myself as a "programmer anthropologist" and think of them as little insights about the group of programmers who use them. I'm learning a language they all use to talk to each other through computers and I find this fascinating. Then again I'm kind of a weird guy so just learn programming languages because you want to.
Enjoy! This is really fun stuff.