How to Choose Your First Programming Language

Learning to program can be challenging. Figuring out what language to even start with can be even more challenging. Have you found yourself scrolling through blog after forum, after forum, pulling at your hair ’till it’s gone, just to get an idea as to where you should start? Choosing the right first language is easier than most make it out to be. So lets look at the one most simple technique to get you there.

So, you just started learning how to program. You have an idea in your head of something you want to create, so you search the internet for some help. You quickly find many people saying that you shouldn’t use the language you chose for the application you want to make.

It’s got this wrong and that wrong, and you shouldn’t be using it for reasons x, y, and z. There is always tons of people who are telling you how completely wrong you are in your ways.

This may be disheartening, but you decide “OK, so what language should I use then?”. And you go on to look at a new language, quickly becoming confused and mislead all over again. Everyone is now saying the same things to you about your new chosen language. The cycle doesn’t seem to stop.

Stop listening to everyone!

It’s easy to fall for the trap of blindly listening to what other’s say in online forums about the quality of this language or that language. After all, most of them are far more experienced than you. However, everyone on the internet and their mother has their voice and it all gets said, sometimes by reputable individuals and other times not so much. So keep that in mind.

My journey as a self taught programmer lead me down the path of many different languages in the beginning too. I can still hear the voices of people echoing in the back of my head… “Don’t use Java, it’s garbage collection will hinder your game.. game… ame.. ame… <insert more “echo-y” whispering phrases here>”.

For the first 6-8 months I jumped from learning VB, to C#, to Java, back to VB, to C++ and then eventually back to Java. All because I was being persuaded by the information I read in forums. It ended up being Java for me that I finally stuck with the longest first. Then later on after mastering the fundamental principles moved back to C#; my most comfortable language today.

No language, trumps all.

The important thing to understand is that there is no best language, and there certainly is no best way to make your big app idea come true. Most popular languages today, can all do the same thing. The subtle difference in details or trade offs aren’t going to matter to you as a beginner anyway.

An example of one popular argument, although I think it’s changed a bit over the years, is that Java is bad for making video games. Another is that Python is bad for enterprise. Or there’s no jobs in C# development. The list of arguments against any language can go on and on.

The truth is, Java can be used to make great video games, and it has been. Python can, and has been used for enterprise applications, and tons of people are working great jobs as C# developers, and there are new job openings all the time.

Ok, cool. But how do I choose?

So all languages are by and large the same… great. So how do I choose one, you’re still asking? The real secret is to just pick one. Any one. It doesn’t matter how, as long as you pick one. And then don’t listen to what everyone else might say. Just stick to your decision. Now, there are some factors that can help you weight in on that decision.

First of all, if you are already learning a language, and are in the middle of a guide or tutorial series, choose that one. As long as you’ve looked ahead to see that the current guide is either complete, or is at least being actively added to, you should stick with it.

The only reason not to stick with the guide and language you are currently on is if the guide is not explaining things in a way that you can understand. We all learn in our own way, and sometimes a guide is just not for us no matter the quality. Understandable, but find a guide that seems to fit your learning style.

Once you choose a guide, a book, a video series – whatever, stick with it. The language that is used in the guide should be your first language, and you should learn it all the way to the end.

Really? That’s your advice…?

Yup. It’s hard to accept this cold fact, but it’s true. We could be here all day long exchanging facts about why this language is better for that, but that language is better for this and so on. No complex analysis of languages is ever going to give you the insight you think you need to just pick one.

If you’re going to take programming seriously you’re going to learn many more languages after your first one. In due time you’re also going to formulate your own opinions about what you like for certain applications and what you don’t.

Those opinions will be based on personal experience and not some guy on Stack Overflow who thinks he knows all there is to know about every language used in the world of programming ever. And those opinions won’t develop if you don’t gain the experience in at least one language first.

It doesn’t matter if is sucks either.

The beauty of it too, is that it doesn’t matter if the language turns out to be one that you hate in the end. You’ll be a better programmer because of it. Being a good programmer isn’t about making good code anyway. It’s really about being strongly opinionated and bitching about the short comings of the languages you hate the most… /sarcasm.

But on a serious note, making mistakes (and learning from them) is a big part of becoming an expert in any field. So what if your first language turns out to be the wrong choice? At least you chose one, and learned from it. That’s more than the other noobs twiddling their thumbs while they analyse the difference between using C++ or C# for their 2D pong clone can say.

Now, after you’ve chosen your first programming language let me know. What language did you pick and why? Any great resources or tutorials to share? Leave ’em in the comments below.

Happy coding :)

Dan

Leave a Reply