If you've ever learned a programming language online you know there are a thousand resources to learn the basics. Sites like Codecademy, Kahn Academy, Treehouse, and Code.org all are great resources to get you started, but they only take you so far. For this blog post we are going to use Python as our language we want to learn.
You go through and complete the course. Now you've run out of guided learning material. Let's look back at what you have (hopefully) learned:
- Control Flow (if, else, etc)
- List, Dictionaries, Arrays
- Functions, Methods
- Libraries (maybe.)
This is by no means a complete list, you may have learned more, but you have finished the course. This is the most crucial time in learning a new language!
The Creative Gap
I call this time the "Creative Gap", when you have all of these new tools in your arsenal and you need to put them to good use. This is the time when you go out and build something on your own, not following a guide 100%. Your teachers are Google, StackOverflow, and the language's documentation. You're now in the meat & potatoes of the language! Go build something! Learn how to use libraries, learn how to interact with files, learn how your language can interface with the Internet.
Learn, learn, learn!
The best way to do this is with projects. Something you can start small with and run with as far as you want. But remember to stay agile, don't get tunnel vision and only learn a certain part of your language. This means you may have to stop one project, start another, and then come back with new ideas for the original project.
Here is a great list of projects you can do with any language!
(Thanks to hepuhudu for the list!)
A lot of introductory courses don't give Libraries enough of the spotlight. A Library (aka module) is code that has already been written and allows you to accomplish a certain task without having to explicitly write everything yourself. This is not cheating. Libraries are a HUGE part of modern programming. They are used in almost every program you write. They will save you tons of time and headaches, every language has popular libraries that are the best at what they do, find these and learn to use them.
Jumping the Gap
So you've done projects, you've learned libraries, all along the way you have learned more and more about your language of choice. Great! You aren't done. If you feel like you've mastered your language move onto another language, do something completely off-the-wall, or contribute to software.