If a language can't change your way of thinking, it is not worth learning, c, perl, cplusplus, STL, Lisp walks along this road.
Do some interesting things to keep your interest, you have to make fun enough to make you spend ten years to persist;
Multi-practice, and more people exchange, read more people's code, understand the ideas of others;
Learn to program, the best way is to learn from things;
Be the best programmers in some projects, do the worst programmers in some projects. When you do the best programmers, you should train your leadership and encourage others through your vision. When you are the worst programmers in the project, you have to learn how your master is doing, and what they don't want to do (usually they will call you to do these things);
Do some maintenance work, try to understand and modify these codes when the original writer is not next to it. Thinking about how you should design to make the successor easier to maintain these code;
Learn at least half-programming language, including support class abstract (such as C or Java), support function abstract (such as LISP or ML), support syntax abstract (such as LISP), support specifications (such as ProLog or C template) Support collaborative work (such as icon or scheme), support parallel processing (such as sisal);
Remember the word in computer science, know how much time you need your computer to perform a command, how much time you need from memory, from the disk, how much time you need to find, and how much time you need to seek?