I failed, but even in failure, I learned a lot. The important thing is once you have learned the basics of a language, try and build stuff yourself. You won't learn much by copy/pasting or slightly modifying or retyping examples.
One thing to look out for is a project you can do to start. If you are doing a web language, code a basic blog once you've done the basics to put together what you've learnt.
Another common starter project nowadays is a Twitter client. This used to be a good idea, but it's gotten a bit harder now, and I wouldn't recommend trying to figure out OAuth for your first program.
Another important point is learning different languages. Don't go "I've learned Ruby" then stop. Despite it being my first language, I hardly ever use Java anymore. Different languages lend themselves to different problems, and knowing more languages helps you look at programming problems from a wider perspective. I strongly suggest that you try at least one static language, one dynamically typed language, and one functional language at some point.
A final point is that it can be quite helpful to read blogs o.n programming. I can't suggest any ATM, because the two I always read are more or less at an end.