instead of just using frameworks and libraries (as most programmers do), you could add the additional challenge for yourself to look into the source code of such frameworks and libraries and try to understand why they are the way they are.
Excellent advice. When I first started learning Ruby on Rails I quickly became curious about some of the "magic" of that framework and spent months reading every line of code in certain gems.. especially Active Record.. and working myself through some self-devised coding challenges to make sure I knew how everything worked.
Of course, I also wasn't a beginner programmer at the time, just new to that language and framework. I had been programming BASIC for as long as I can remember (my uncle taught me when I was a kid on his old Apple II+) and started learning C and a little C++ before I even started high school because I had gotten involved in the BBS modding scene almost immediately after I got my first modem.
have a look into stackoverflow.com ! There is a huge number of beginner questions for each and every language there (including C). This might give you a feeling about the problems other people have to deal with. Plus, especially from the answers to beginner questions, you often get links to interesting blogs.
^ this. Stack Overflow has been a life saver for me more times than I care to admit. It's an almost indispensable tool for programmers these days, whether you're the one looking for answers or the one answering people's questions. Most beginner questions have already been asked and answered there, so it's always a good place to go if you're stuck on something that you think should be simple.