Learn Programming, Not Programming Languages

2017/09/16

At a recent meetup for our local freeCodeCamp group, I heard a question asked that I’ve often seen before. It usually goes something like this:

“Should I learn a language that will keep me relevant in the next 5-10 years or should I learn one that will help me get a job now?”

Industry standards don't change often, so what works now likely will still work in 5-10 years time. But this question masks a much simpler question that many beginners tend to ask. “What language should I learn?”

So many choices

College freshmen enrolled in Computer Science usually don’t need to worry since they don’t get to choose. They use whatever the professor decides. But for self-taught developers, it can be easy to get lost. There seems to be so many languages and plenty of conflicting opinions all over the internet. There are quite a few languages that are appropriate as a starter language. Some have low initial learning curves such as Python and Ruby. Others are widely used in the industry, such as Java and C#. Many learners get caught up in deciding what language to learn that they lose sight of their purpose.

What should I choose?

It’s fine to take a moment and consider your choices based on what your goals are. For example, Python for data science or JavaScript for web development (and much more!). While experienced programmers like to argue on specific syntax and quirks of languages, don't pay too much attention to it. As long as it is a language used today, it doesn't matter which one you pick at the beginning. Once you pick a language, stay focused and stick with it. Learn the fundamentals of programming. Many concepts carry over between languages such as conditionals, loops, and functions. Thanks to these similarities between languages it will be very easy to transition to a new one if you need to.

A real life reminder

The question at the meetup inspired me to write this post, but I also got a reminder of this at the start of this semester. I will be taking the Introduction to Operating Systems course and C is the natural choice for this class. While I had used C++ before in my data structures course, I was not a CS major at the time and so I didn’t give much effort into learning the language (nor the material). I did pass but did fairly poorly on the implementation projects.

I used the first few lectures of the CS50 course online as my main learning resource for brushing up on C. David Malan is an excellent teacher and I definitely recommend the course. It felt much easier going into it after having used Java for over two years and then doing a lot of JavaScript recently for web development. Back then, I put too much emphasis on the fact that C++ is such a hard language to learn and ended up missing a lot of the main concepts we were supposed to learn from the projects.

So regardless whether you choose to start with a language that has grown popular as a starter language in recent years such as JavaScript or Python, or you choose to go with something more established like Java or C++, don’t lose sight of your objective. Don’t think of yourself as a Python developer or C++ programmer, but rather, just as a software engineer.