For instance, I recently wanted to learn Clojure, so I chose a project that involved a lot of multi-threading related to a topic I'm very interested in. It's been about a week, and I feel very comfortable in the language.
In the past I've tried learning from books, etc... but when I need to apply the knowledge, I find myself referring back to what I read entirely too much. By having a specific project I'm trying to accomplish, my learning is directed. I'm learning solutions to problems that I already understand and appreciate. This way, you understand a lot more about the reasoning behind the language, and the way it should be applied. By just reading cold, you miss that entire aspect.
Usually, you get your start by picking a project in a domain you're intimately familiar, read an introduction/tutorial, and start implementing.
A lot of this depends on how well you understand a language's or framework's reason for existence. If you know Ruby (or something similar) and have done a lot of web development in the past, you should be able to start 'getting' Rails fairly quickly.
As for what you produce in that first month, you'll throw it all away before the year is out. If you can avoid it, don't try to learn a new language and develop a new product with it.
Checkout the book "Outliers" by Malcolm Gladwell. Gladwell asserts (not originally) that it takes 10,000 hours to master a subject.
See: http://robertoyudice.com/thoughts/10000-hours-to-master-prog...
Here's how I did it the last time I tried something similar: 1) Grab a decent book with plenty of sample code that builds towards a working product. This way, you get to see the moving parts and the theory. For Rails, Hartl's railstutorial.org is excellent - you build a twitter clone. Their much older book RailsSpace is pretty good too. While you're at it, checkout tryruby.org.
2) After doing 1 above, now pick a project and get building quick. Use the sample code from above and tear it apart.
3) 1 and 2 works really well if you do it with someone who is already either proficient or interested enough in going through the exercise with you.
0) Well, 1-3 would go a lot smoother if you already know another language or two, some decent background with data structures. Of course, that's not necessary, but useful nonetheless.
4) Regardless of what happens, keep plowing ahead. You will hit random errors or whatever. Keep with your schedule - "Finish chapter 4-6 today or whatever" and soon enough you can definitely finish the book in a week or two. Then the following two weeks is where you will learn the most with your own project!
42) You definitely will know enough to do something non-trivial, but again mastery depends on your case. As a friend of mine says, "anyone can learn to spit out a few words together, but writing an elegant sentence (or solution) is not that easy always... same with programming"
Good luck!
Once I learned to program my first language, though, I could pretty reliably reach that point not long after it, unless I'm moving into a language of a completely unfamiliar paradigm (e.g. Java to Scheme).