If you're learning to program, you should be programming. - Alex Allain

Recently I’ve been learning Golang. It’s a cool little language, seems very powerful, but I haven’t used it in production yet. There’s something about learning a new technology that just seems to push you. Learning how to do things in other languages, or even in the same language but a different way, broadens your horizons and adds another tool to your toolbelt. (Besides your golden hammer, which is the best tool ever.)

That being said, if you’re learning to program, you should be programming. I remember when I first started learning to code, my biggest problem was figuring out what the hell to use all of this stuff for: what can I make? The answer: quite a lot, quite a lot.

For starters, you should probably make a hello world and just make sure the language is set up correctly. After that, it makes a lot of sense to start with small projects, like a FizzBuzz type of program. Then just make things progressively harder and larger. The key is to keep pushing yourself.

Exercise Yourself

One of the best tools I’ve found for this is exercism.io. It basically walks you through practice problems, which usually increase in difficulty. It also adds a whole social dynamic to learning to program. People can review your solutions and critique them. Woot! I’m a huge fan of constructive criticism, and you should be too. It’s not scary, it helps you get better. Sometimes it hurts your ego, but just realize that other people are trying to help you. (Whatever happens, the world will go on.)

Making It Real

These practice problems are awesome for beginning to learn a language, but you eventually need to go even further and build an application (assuming that’s what you’re learning the language for). Make something big. Here are some ideas:

  • A blog
  • A personal website (if it’s a web technology)
  • A wiki
  • An API that does something (mildly) useful
  • A multiple-person chat room (oooh, things are getting juicy)
  • Something that keeps track of books you have and haven’t read and emails you suggestions
  • A note taking app

In short, just think of something that sounds fun, sounds similar what your goal for learning the language is (i.e. easier versions of future programs you want to write), and doesn’t sound too hard. You’re a programmer and the technology playing field is constantly moving. You’ve got to push yourself to keep up. You don’t want to be the guy who goes into an interview and can’t write a program.