If there is one thing I would recommend to all newbie or learning programmers, it's this: before you delve into learning the details of a language or API or whatever, read a quick tutorial or overview first. If I had realised this a long time ago, I would've saved myself a lot of time.
There are several reasons for this.
Firstly, you may not like the language that you've decided to learn. Reading a short tutorial about it will let you see quickly whether you want to go further into investigating the language or not.
Secondly, learning a language by reading something like a reference book is a really good way to make you hate the language. Or get bored too quickly to learn it properly, and give up.
Thirdly, it's not really *necessary* to know *everything* about a language before you start to program in it. I'm sure there are people out there who would disagree with me on that, but as long as you know the fundamentals of a language, I think it's better to start going and learn as you create your first few projects, than to read through a detailed book that will probably be a very dry read if you aren't doing much coding using the stuff you're reading about.
My personal experience has taught me this. Maybe it's just my way of learning, I don't know, but I have had a lot more success learning stuff through first reading short and concise tutorials such as 'Learning Perl' (Schwartz & Christiansen) and 'theForger's Win32 API tutorial' (theForger :-) ), and have more quickly picked up and become proficient in the languages (or whatever) I have used this technique with, than the ones where I have started out trying to learn *everything* about the subject before I used it; for example, I am unable to read through from start to finish and appreciate a book such as, say, 'The C Programming Language' (Kernighan & Ritchie) or 'Programming Windows' (Petzold), yet I have both books sitting on my windowsill. Why?
Well, partly because I accidentally bought several such books with the intention of reading through them non-stop, and then realised partway through that I was getting so bored I wasn't really learning anything. And partly because what I now use them for is *reference* books.
It may sound obvious, but it's quite easy to 'bite off more than you can chew' and try to learn too much before you start with a language or API or whatever. Get into the habit of starting with short and concise tutorials, and reading into certain aspects that you need to know in a more detailed way, when you need to know them. Had I had this advice available to me when I first started to learn programming, I would have saved myself a lot of time and boredom. :-)
I wish all new/learning programmers could be given this advice somehow when they start to learn something new. I'd like to stop others making the same mistakes that I did. I don't often say a lot of long-winded preachy stuff, but this is one of the few things that I've really learnt to be useful, and thought that sharing it would be beneficial to all programmers. So please, if you know any struggling new programmers, no matter what language (or whatever) they're learning, try giving them the gist of this advice! It may well help.
Plus, when recommending books, make two distinct categories of books. Tutorials, and reference books. It's pretty much impossible to have something that is both, and I've frequently had inappropriate reference books recommended to me that haven't done much other than waste my time/money, as they were FAR too detailed when I knew too little about the given subject - it's these kind of recommendations that make me think that this advice, though it may seem obvious, needs to be more widely accepted and adopted. Advanced programmers tend to recommend stuff that would now be appropriate for them to read; not necessarily what would be appropriate for someone new to the subject, or indeed them - when they were new to the subject - to read.
Comments are welcome.