What’s the best way for somebody to learn another programming language?

This episode explains the following nine suggestions for learning a new programming language. These are in no particular order.

  • Read a book on the language.
  • Join a community group.
  • Read magazines.
  • Get your development environment setup and running.
  • Focus on how the new language is different than the ones you already know.
  • Learn how things are done in the new language.
  • Find a mentor.
  • Enroll in a class.
  • Watch online videos and training.

Listen to the full QA episode or you can read the full transcript below.


Thank you for your review and comments. If you’d like me to read your review, well, the first step is you have to leave a review. The thing I liked about this review was the endorsement from another programmer. If you’re wondering if programming can really be this easy, then yes. And if you’re struggling with something, then ask.

Okay on to the question this week. I attended a conference last week called Code Camp and it was full of some quality presentations. There were so many that attendees had to choose which one of about 10 different presentations to attend at any given time. Well, I saw this topic and thought it fit very well with this podcast and decided to attend.

The speaker actually never showed up so when somebody in the audience said, “Hey, I’ve got a few thoughts about this topic,” well, we just turned the whole presentation into one big group discussion. It was great.

Just to be clear, the topic wasn’t how to learn your first language, but how to learn another language. There were some really good ideas that we all contributed and I’d like to share what we talked about now with you.

The first thing to understand is that we’re all different. There is no one right way to learn a new programming language that applies or works well for everybody. These are just ideas and you should make sure to pick and choose what works best for you. Here are nine suggestions that I hope will help you to learn your next programming language:

◦ #1 Read a book on the language. Hey, this actually works for some people, especially if you already know a similar language or just need to review material you used to know well. This is actually how I got my first job as a programmer. I already knew the basics of programming from studying electrical engineering a few years prior and even took a semester long course in the C language. Before I interviewed for my job, I bought a book on the C language and read the entire thing in one weekend. I got the job but probably not because of my programming skills. If you want the full story, just listen to episode zero.

◦ #2 Join a community group. This is actually a good idea no matter what stage you’re in. Keep your mind open and contribute. Even if you already know something, you’ll help both yourself and another person if you share what you know.

◦ #3 Read magazines. You may not find a magazine about your programming language at your local grocery store and if you do, then I want to know where because that’s gotta be a special place. I’m not being sarcastic here. Local businesses, if they’re smart, will cater to the needs of the local customers. I’ve noticed this even with large bookstores. When I worked at Microsoft, the local bookstore had a rather large section about computers and programming. While the same store in a nearby town barely filled a single stack of shelves. You’ll have better luck with magazines by subscribing online. The nice thing about magazines is they’re usually more current than books. You’ll find topics in magazines that haven’t yet caught on with most people. This is how I learned to program C++ in the early 1990’s by reading every episode of the C++ Report and the C++ User’s Journal. And I also couldn’t wait for the next episode of MSJ or the Microsoft Systems Journal. That magazine is now called MSDN and is still full of excellent articles about Microsoft technologies.

◦ #4 Get your development environment setup and running. Then start programming simple applications in the new language. If you listen to episode 1, I recommend this approach. There’s just something about taking action. It normally leads to more action. And before you know it, you’ll look back and be amazed at how far you’ve advanced. We sometimes can get intimidated by a large task. It’s scary. It’s unknown. It’s different. And it’s hard. Don’t worry about any of that. Just start moving even if it might seem slow. Because you know what? If you think you’re just standing still, you’re wrong. You’re declining. You either need to be advancing or accept the fact that you’re declining. All it takes to advance is a little action.

I’ll share the remaining 5 suggestions right after this message from our sponsor.

( Message from Sponsor )

◦ #5 Focus on how the new language is different than the ones you already know. This can be very interesting especially if the new language requires a shift in your thought process. What do I mean by that? Let’s say you already know C++ and are trying to learn Java. You’ll have a new runtime concepts and some new syntax and some new libraries and maybe even some new patterns. But Java is still fundamentally an object-oriented programming language just like C++. If instead, you’re trying to learn Haskell, then you’re in for some big changes. You need to think in an entirely new manner. Want to learn Prolog? Again, you’re in for a world of changes.

◦ #6 Learn how things are done in the new language. I’d say this applies most when the new language is similar to what you already know. Just because it’s similar though doesn’t mean that you should bring over your existing habits. Take C++ and Objective-C for example. Both languages add object-oriented capabilities onto the C language. And both languages have entire communities of developers who have evolved to do things in certain ways. You’ll make more friends if you try to fit in with normal standards and practices. It’s amazing, isn’t it? How closely software resembles real life. You’ll make more friends in real life too by adapting to local customs. Don’t lose who you are and what makes you unique. But recognize that each region just like each programming language has certain expectations.

◦ #7 Find a mentor. You don’t even have to know your mentor. Just find somebody that you can follow. If you get a true mentor and find somebody who has a genuine interest in your success, then you’ve got a real treasure there. This is huge. Do whatever you can here and it doesn’t matter even if your mentor is still alive. There’s people, great people, from the past who can serve as your mentor and guide.

◦ #8 Enroll in a class. This can really accelerate your learning. If you know me or have listened to some previous episodes, then you’ll know that I’m not a big fan of programming bootcamps for people first learning how to program. You might think you’re learning but there’s just too much information coming too fast for anybody to absorb it all. However, I will say that even an intense bootcamp can be very helpful if it’s targeted and specific. You can then take full advantage of a class if you’re ready to apply what you learned right away after the class is done. If you don’t keep working with what you learned or there was just too much that you become overwhelmed, then you’re likely to lose any momentary skills.

◦ #9 Watch online videos and training. I do this all the time and it’s great especially when I know exactly what questions to ask. An online course is also a good option but it’s sometimes hard to find one that matches exactly what you need. Even this podcast is in this category and that’s one of the reasons I keep the episodes short and focused and give each episode a descriptive name. This helps you listen to just the episodes that will help you the most. If there’s another episode that I think you should consider, then I’ll mention that.