Origin Stories

Matthew Christy

The short answer (perhaps disappointingly) is that it depends on you. Everyone, of course, learns new things in their own way. I’m sure that by now you know what method works best for you. Just because you’re dealing with a potentially new field doesn’t mean you should ignore what you already know.

There are a variety of resources out there to help anyone learn just about any programming language. There are “… for Dummies” books, reference books, cook books, online tutorials, Youtube videos, MOOCs, Q&A forums, online reference pages, wikipedia, continuing ed classes at the local community college, and a whole lot more. Which of these routes, or combinations of routes you choose depends a lot on availability, how you prefer to learn, whether you’re willing to spend some money, and whether you’re a beginner learning a programming language for the first time or an “expert” learning a new language.

I like to start by learning a little bit of general information about a language I’m interested in.

  • What is the language good for (statistical analysis, web applications, etc.)?
  • What kind of language is it (procedure, functional, object-oriented)?
  • Is it a scripting language or require a compiler?
  • What environments and platforms is it supported in (Windows, Mac, Unix)? Do I need to just download a compiler or do I need to install a whole suite?
  • Are there any good editors or IDEs (Integrated Design Environments) that support it?
  • How old /popular is the language?
  • Are there any distinguishing characteristics of the languages syntax or use.

Usually, I can find most, if not all of this information about a language on wikipedia. But a web search will also reveal websites dedicated to this language including downloads, links to other resources, FAQs, Q&A forums, code samples, and more. And perusing the results list gives me an idea of how well used and supported a language is.

Next, I might try a few hours of an online web tutorial at this point. Beginners might want to spend longer with these resources, and don’t be afraid to try tutorials from different providers, you may find one that works better for you. There are many for-fee and for-free options available, and can be found with a simple web search.

If the language is similar to one I already know, then all I really need to know are details about the syntax. So I’ll also look for websites (or books) that contain “quick guides” or “cheat sheets” for the syntax. Another good resource are cookbooks or code collections/repositories. Chances are (especially if you’re a beginner) that others have already written code that does something you’re interested in doing, or at least is very similar. Don’t reinvent the wheel—reuse, recycle, repurpose. Code like this is also a great way to see the language in action and it’s syntax in use.

All of the above is just preliminary work for me though. Some might call it a form of procrastination. I learn best by doing. If I don’t have some specific project in mind that I can start working on, then I’ll look for websites (or books) that have “activities” or code projects that can get me started with real coding in the language. Projects of a variety of lengths and difficulty levels are the best.

Finally, there’s the question of where to get help. Whatever language you’re learning will have a variety of websites that will include FAQs and Q&A forums. There are also great Q&A Forums about programming in general which will have sections dedicated to specific languages. Stackoverlfow.com is a great example. Start by Googling any error messages you’re getting. You’re likely to find that other people have already posted a question to a forum with the same error message. If a web search doesn’t yield results, then please don’t be afraid to use one of the Q&A forums you’ve come across. Be sure to be clear about the problem you’re having:

  • When and where does it occur?
  • What platform, editor, IDE are you using?
  • Cut and paste, or screen-print the error you’re seeing.
  • If you read in some documentation that what you’re doing should work, cite that.
  • Include code and data if possible.
  • Where have you already looked?

Stackoverflow has a good intro to asking questions that can be used on any forum: http://stackoverflow.com/questions/ask/advice?

And please don’t let jerks discourage you from seeking advice from your peers and predecessors. Most are happy to help if they can. If someone’s a jerk to you about your question, it’s because they’re a jerk, not because you asked a stupid question.