The Creative Gap

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 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:

  • Syntax
  • Variables
  • Arithmetic
  • Control Flow (if, else, etc)
  • List, Dictionaries, Arrays
  • Functions, Methods
  • Loops
  • 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.



Learn to Code: don't read this.

If we had a dollar for every blog post, tutorial, video, and book on how to code we could pay the US debt. If you want to learn to code, code.

Sure, these resources are valuable and will help you along the way but coding is a creative endeavor. Coding is like music, if all you do is read sheet music you'll suck at playing a real instrument. Thus, if all you do is read "The Idiots Guide to JavaGo+#" then you'll be a terrible programmer. Programming isn't about repeating what you've already seen, it's about taking lessons learned and stitching them together into something else. You are Doctor Frankenstien and your code is your monster.

So, without further ado, go code.

For a bigger challenge, code in a language you don't know very well!