6.0 years ago by
Disclaimer: I do not consider myself to be a master of any programming language. That said, here's my advice:
1. As much as possible, use the language to solve recurring problems in your life even if they might already have solutions. You will be more motivated to solve problems that impact your life than arbitrary problems presented in a tutorial and you might invent some stuff that greatly simplifies your life. Also, if the problem already has a solution - you can easily check if your program works properly.
2. As your skills develop, explore different ways of achieving the same or similar goal. When you do this, name the new program something similar to the old one so you can track your progress and feel good about how much you've learned.
3. Draw flow charts and write pseudo-code on paper or any media other than a computer screen. This will cause your brain to make new associations to coding and the project in particular. Its also easier to think about code with a visual cue so you don't have to juggle as many bits inside your short term memory
4. Post questions about your coding issues on StackOverflow and similar sites. Your reputation will suffer if you ask dumb, poorly-researched questions so you'll inevitably learn to do that which will help you lear. Also, the answers you get will often teach you at least a little bit more than just how to do the thing you're trying to do.
5. Answer questions on sites like StackOverflow! Even if someone comes along and answers the question better than you have, you'll be strengthening neural connections by using your knowledge in a different way than simply applying it.
6. Experiment with coding in altered states of mind; you might not necessarily write "better" after having a few drinks or after going for a run but you'll probably find that you things a little bit differently and that can lead you to deeper understanding of certain concepts.
7. Read the books - or at least read whole chapters of the books. In my experience they're better at helping you develop a deep understanding of a given language than they are in helping you solve specific problems you may be facing.