For languages, some sample code like the infamous "Hello World" or "FizzBuzz" are also one source of information, just to get into the "mood" of the language, to understand it's basic flow and to just be able to read code written in that language, even if you don't understand it all.
Then, start with simple console or similar apps. Just as an example: If you want to learn Java, you should possibly not start learning how to deploy stuff on Tomcat as that is just a distraction from the actual goal of learning Java. Same with .net: Sure, ASP.net is nice, but "how to set up asp.net in IIS" should not be your first priority - Visual Studio comes with the Cassini server, which is fine to learn it. What I am saying: Don't "waste" your time learning about deployment before you learn the language. You will learn about deployment sooner than you want to anyway ☺
Apart from that, I think David made a nice list as well.
Edit: And it also depends what type of learner you are. Some people can learn best with a book or a document that explains all the abstract concepts and caveats. They read that 1000 page book and then start working. Other people - incl. me - find that approach boring and discouraging. I want to build my own Hello World as soon as possible, nevermind if it includes a Memory Leak and a SQL Injection Bug, but being able to look at my Hello World is the equivalent of coming out of a cave and shouting "Aha. Look what I've created. I have made FIRE." and just fuels the desire to do more and more in that language. I find building stuff a thousand times more encouraging than reading about building stuff.
But what I really wanted to say in my overly long paragraph: People are different and learn different, so if one way of learning does not work, it may just be a sign that another approach would possibly suit you better.