Learning your first programming language

July 28, 2013 Bryan Goldstein

You have probably heard that you can never fully master a programming language. While this is true it doesn’t mean you can’t learn the basic rules of a language fairly quickly (you can). Languages generally tend to be expressive, and as such, they are constantly evolving as the community pushes the limits of what the language was designed to do.

When you are learning a language, you don’t have to push these limits; you don’t even have to know where they are. You just have to know what tools are available to do the things you need to do. Google is a tremendous resource for that.

I would recommend picking something very simple that you want to do, for example, a friend of mine found a simple online coding challenge and tried it. It also helps to pick a language that is popular (no one is going to help you fix your fortran floating point errors).

Next thing you do is find a tutorial. There are plenty out there, I recommend doing as many as you can. When you don’t understand something, Google it, if you don’t find what you are looking for try changing up your google search a bit. When you are looking for answers don’t take anyone’s word for it, you have an interpreter (or compiler) try it out yourself. Even well up-voted stackoverflow.com answers can have mistakes.

When you have done enough tutorials to convince yourself that you can create the simple program you set out to create, then you should start trying. It doesn’t matter if your code is ugly, and it doesn’t matter if its really difficult to come back to after you’ve put it down for a while (you are still learning, give yourself a break). Your only job is to make it work. However, if you never get to the point where you think you can build what you set out to, then you probably picked something too difficult, try again with something easier.

When you have something working, try adding a feature. If you made something that adds numbers, make it subtract. It feels good when things work doesn’t it? Now try doing this regularly, lets say once a week. When you just can’t take it anymore continue to the next paragraph.

Congrats! you’ve learned your first programming language. You may not be very good at it yet, and you are probably still glued to Google when you are writing in it, but you now have a smell of some of the frustrations and problems that programmers work day in and day out to mitigate.

  1. You notice that when you change something everything breaks.
  2. You notice that when you leave and come back you usually stare for a long time before you remember what’s going on.
  3. You may notice that you are repeating yourself, typing the same sequences over and over.
  4. You notice that if someone else were to look at your code they wouldn’t have a clue what it was doing.

My friend Conrad, who has been working for a little while on getting started as a programmer helped me out by giving me some feedback on my draft. He suggested I leave you with a digest of what was covered and a list of resources to get started.

So to reiterate, we just covered the first step to becoming a programmer, and that was learning a language. What this article didn’t cover is how to become an expert in a programming language, which happens with time, not shortcuts. The important things to remember are 1) Start simple. 2) Find some good resources. 3) Start playing. 4) Lean on the community. 5) Iterate.

Some handy resources:

  • Stackoverflow – Great for answering any kind of programming question (chances are it has already been asked). I recommended using google to search this site, it has great SEO.
  • Github – This is where all the code lives, it is currently the most popular place to gather around open source and will be a great place to go and find libraries that do what you want and people who want to make those libraries successful.
  • Codeacademy, Treehouse – Programming tutorial/learning sites. These are very helpful for getting off the ground, follow them until you think you could do it on your own.

About the Author


Exploring RubyMine's "Quick" Commands
Exploring RubyMine's "Quick" Commands

RubyMine includes several commands to quickly perform common tasks, such as converting a Hash from Ruby 1....

Using resolvconf.conf to Tweak resolv.conf
Using resolvconf.conf to Tweak resolv.conf

Abstract FreeBSD 9.1, when a DHCP client, uses resolvconf to construct /etc/resolv.conf (which defines the ...