So you want to be a programmer?

July 21, 2013 Bryan Goldstein

I have been asked by at least a few people if I could tell them the best way to get started with programming and I have been slightly ashamed that I was unable to confidently answer that question.

I got started in a way that was certainly not the most efficient one, and it really bugs me when I read answers to this question that assert that the only way to become a good programmer is to do what I did and walk uphill both ways in the snow while fighting compilers until you reflexively cringe at a mismatched bracket.

Studying Computer Science is also a common answer to the question. I studied undergraduate CS after I was already pretty well versed at compiler-foo and while it is very interesting and I learned a lot, it really wasn’t necessary for practical programming. Don’t get me wrong, CS is great! If you are the one working to make sure no command is wasted then it is essential, but most of the things you write don’t need to be that optimized. Practical programming is really more of an art than a science.

After trying really hard to pull away the things you really don’t need to get started as a programmer I’ve come up with my instructions for anyone who wants to try and dive in. I will go into detail later about what I mean, but here is the outline.

  1. Learn a language
  2. Find a community that uses it
  3. Find an Open Source project in that community
  4. Contribute to that project

My approach is largely based on the way someone would tell you how to learn a foreign language. You go to the country, find places to hang out, make friends, speak the language with them. None of this is new stuff, but my goal is to try and help you see how this translates into the software world.

Since I don’t want this post to be out of control I will do it in installments stay tuned and I will walk you through the steps.

About the Author


How To Test PDFs with Capybara
How To Test PDFs with Capybara

Solution – GitHub Gist Validating that a web app’s content is rendered correctly is an integral part of tes...

ActiveRecord Refactoring: Move Association Behavior to Associated Class
ActiveRecord Refactoring: Move Association Behavior to Associated Class

In a typical Rails app, one ActiveRecord model tends to accumulate a lot of associations and related metho...

SpringOne 2021

Register Now