Which Programming Language Should I Learn?


This question is asked by many new aspiring programmers. There's been many different answers to this question. Some people explain that the language isn't as important as a basic understanding of algorithms and programming paradigms. I agree with this, but it's no the complete picture.

What are you going to be doing with your programming skill? Are you going to use it to obtain a full-time job? Are you going to use it to work on your own projects in your free time? Many people would answer that they have some great app idea that they want to implement. Others can't even tell you why they want to learn to program.

If you are planning to make money in some way from your new skill, you'll probably want to look into which languages are most in demand. For instance, I program in PHP and Javascript because that seems to be what I can find the most work doing. The slippery slope of this is that you eventually move into specializing in a specific language even more. If you are working with PHP as a full time job, you rarely have an opportunity to explore new languages. You're also unable to claim experience in other languages because you've spent years working with one in particular.

So, my advice is to explore other languages as often as possible. If you are starting out, pick a language that has a lot of online discussion. Something like Java or Python would do nicely. These are well supported, very commonly discussed, and are easy enough to learn. Use this first language to learn specific things about programming. You can learn the syntax of the language as you learn algorithms and paradigms. Explore the language enough to understand the concepts of programming. You don't have to become an expert in the language, but you should focus on understanding the abstract ideas used in modern programming.

I started out learning Perl and Bash scripting a long time ago. I soon changed over to VBScript and VB.NET because I was working for a Microsoft shop and needed to do some scripting and app development. I lacked a lot of the basic knowledge that I should have been working on, but I thought that I needed to learn languages.

A language is nothing more than a set of syntactical rules for structuring your thoughts. Think of learning French. You could teach someone all the words needed to speak French. You could teach them how to structure a sentence, but that isn't enough for the person to know how to communicate. Take this English sentence as an example:

You jumped over the computer.

It's a complete sentence. It has a subject, a verb, and is a complete thought. However it wouldn't make sense if you were to say that after being asked:

Are you coming over after work?

You have all the necessary skills to create a full working sentence, but you have no idea how to communicate with another human. That is similar to learning a programming language. You can write "Hello, World", but can you do something as simple as writing a recursive algorithm? Can you find more efficient ways to do things? There's a lot more to programming than the language. The language is only important later on when you need to choose a better tool for a specific task. You may need to write a website with a lot of real time interactions. NodeJS. You may want to write a game for iOS. Objective C or Swift. You may need to write an Android app. Java. You may need to write some mission critical optimized system code. C, C++, or Assembly. You may need to interface with some off the wall E-Ticket system and generate some Excel reports on a Windows-only domain. VBScript or .NET.

The point is unless you are in the same job for the rest of your life and the world doesn't change, you'll probably end up needing to know a dozen or so languages at least. An introduction to programming, should be in pure pseudocode, because I think beginning programmers get too caught up in the language and miss the more important details of programming that is being taught.

At the same time, I've had introductory to programming type classes that I look back on now and realize that the teachers had no idea what they were trying to teach. They didn't even understand the concepts themselves enough to explain them to someone else.

»crosslinked«

  1. No comments yet.
(will not be published)