What Programming Language Should I Learn First?

Now there are a ton of computer programming languages for you to choose from. You have Python you have C, you have C++, SQL, you have C#, you have Java, Swift, and the list goes on for ever. However, my point is not to sit here and overwhelm you with the number of languages that exist, but it’s important for you to understand, first of all, why the languages might exist, and second of all which language should you start off with first. Which is actually the most important question for you. I will give you a few tips that should help guide you in the right direction.

Don’t Pick a Complicated Programming Language

nSos6f4.png

Okay, so if today a human being walked up to me, who did not know the concept of language, let’s say he walked up to me and he knew no languages whatsoever. What language would I like to get him started off with? I’d be like, “Definitely not Japanese”. That’s one language I probably wouldn’t want to start him off with, simply because it’s a little complicated. A little bit more complicated than say Spanish or English, which are on the language difficulty spectrum, they’re on level one. At the same time if you think about this, human language, like English and Spanish, you can’t say that just because they’re simpler it means that they aren’t very powerful. They’re spoken worldwide and a lot of people understand them. Even though they’re simple, they’re still pretty powerful. Now let’s transition that over to computer programming, “What language should I start off with?” Well, to answer that question I would say, start off with the simplest language. Definitely do not get started off with a really complicated language.

If you do not know the concept of language at all, and I’m not saying you’re a baby where your neuroplasticity levels are so high that you can just pick up anything. Let’s say you’re an adult and you just don’t know the concept of languages, you want to definitely start off with the easiest language. Because once you learn the concept of language, as a human being, it’s a way to express your emotions and ideas to other people, once you learn that at its very core, you can transfer over to another language, like say Japanese and go, “How do you say banana in Japanese?” At least you can look it up, you have the tools to actually look that up and learn it. In terms of computer programming, if you know the simplest language, then when you go over to another complicated language, you can just go, “How do I do this thing, that I do in this other language that I know, in this language that I’m trying to learn?”

Emotions Are Same, Language is Different

Your research process becomes a lot simpler, and the ideas are all the same. Like for example, the emotions that American people or Italian people or Spanish people express, people in Japan or China express the same emotions, right? The tool that they use, that’s a language syntax, the specificity of each language might differ, but at its very core, we’re still trying to express emotions of sadness, happiness, cherish, hopefulness, etc. Computer programming languages, you’re trying to express ideas to a computer so it can translate it for you. It’s a really smart friend that is right there, who’s listening to you, you just need to speak to him. Okay, now I want to talk about what languages maybe you should not start off with.

Languages You Should NOT Start With

I would recommend that you not start off with C or C++, or C#, pretty much any of the C languages. The reason is because their syntactical difficulty level is much, much higher. You have to worry about each little tiny detail or what you’re saying to a computer will make no sense whatsoever. Not only are you bogged down by the conceptual difficulty when you’re first learning computer programming, you’re also bogged down by the syntactical difficulty. Which is literally how you’re typing something, it needs a curly brace, a semi-colon, or a squigly bracket. Almost like, if you’re writing English and you’re first learning it, if you don’t write comma or a period, you’re just not going to get understood at all by another person. That would be very frustrating to you if English was your first language, because you’d be thinking to yourself,

I don’t know whether my problem lies in the fact that my ideas are wrong, the way I’m expressing it, or am I having some kind of grammatical error.

Focus On Semantics, Reduce Syntactical Difficulty

Start with something that has a syntactical difficulty that’s lower, understand the concepts. In computer programming you have a concept of looping over things. If it’s one task that you want to do over and over again, that’s called a loop. Well, if you learn what a loop is in one language, you can very easily go to another language and apply the same loop. If you learn what a if condition is,

If this, then that.
If Johnny worked over 40 hours, Johnny gets paid overtime.

That idea, if you can learn to express it in one language, you can very easily express it in another computer programming language.

Start with Python

My recommendation to you guys, there are a lot of languages to learn, but my recommendation to you guys would be to start off with the language Python. There’s a reason why it’s one of the top growing languages in the world. If you look at most of the top universities, they’re actually making that their introduction language, and the reason why they’re doing that is because of how elegant and simple it is. Now, don’t get its simplicity confused with the myth that it is not very powerful. Remember, Google, Dropbox, Pinterest, Reddit, Instagram, and I can go on, but those were all built off of Python. Even BitTorrent. All of these things were actually built off of Python. YouTube was built off of Python.

“Python where we can, C where we must.” - Sergey Grin

Which means we want to use the C programming language where we have to, and Python programming language wherever we can because of its flexibility. Currently, Python is one of the top most growing languages.

Understanding When to Use Different Programming Languages

In terms of the languages and where they work, so let’s say you learn the language Python, and you start off with that language. Now, you can always branch out and go to other languages, once you understand the conceptual difficulty and the conceptual stuff, you can translate that over to any other language. Now Python is a powerful language that allows you to do pretty much anything that you want from web development to software development. It is also important to understand some of the differences between why you should pick another language. Now let’s talk about maybe once you’re at a level of certain proficiency and you want to transition over to another language, why would you want to choose between different languages and work with one rather than the other? In reality you’re working with a lot of languages at the same time. Now, the reason why you want to pick one language over another is because of its benefits. For example, if you want to do a lot of stuff related to web development like front end, where nice graphics show up and you click on something and things respond really fast, that is called JavaScript.

That’s the beauty and magic of JavaScript, where you click on things and the drag down and drop down menus show up, and all this really fancy stuff that you see on the web, that’s done by JavaScript, so for that you want to learn JavaScript. Should you start off with JavaScript? Maybe, I would still say you start off with Python, then transition over to JavaScript. Just to give you an example, I worked on a project that was 30 hours long, and put the whole thing together over one weekend. It is called Agile Directions, check it out.

Made with Javascript in One Weekend: Agile Directions

This example illustrates a very strong point. It proves that you can transition over to another language extremely easily once you have a solid foundation of software development in one language. I did not know a single letter of JavaScript, but since I knew Python so well, I just went on, I would go online and just look up how to do things that I would do in Python, how to do them in JavaScript, and I was able to bust out that entire giant project in two days.

Some Benefits of C Family Languages

Why you might want to learn C or C++ maybe based on the speed that you need, C is really known for its efficiency. You might want to learn those languages if you’re working in say, you’re doing an algorithmic trading, where you have to make each trade within in a nanosecond, or you’re making thousands of trades in nanoseconds, right. You need something that’s really freaking fast. C might actually be a really good idea, or C++. Linus Torvalds hates C++, he loves C, so that’s why I keep saying C first.

Some Benefits of Java

Java probably one of the same reasons, video game design, a very popular powerful language, android applications, Java’s very powerful. Okay, guys, hopefully that gives you a little bit of an overview about different languages and why you should pick one of them.

Python is also offers one of the top paying salaries.

iqqQqyJ.png

I would say start off with a very simple language, Python would be my go-to choice for you. I actually have a course called Learn Python that you guys can start learning from right away- for FREE

I will conclude this blog post with the following Q&A.

I got the following question from a YouTuber on my video:

Before I even started watching this video I knew that you were going to say Python just by clicking on your channel page. But, that answer is wrong. You’re giving people an answer based upon you biased viewpoint. You know Python really well, because you learned it therefore you’re telling other people to “Learn Python”. But, if someone only wants to develop iPhone apps and have that be their solid niche in development. Learning Python then going to Swift is a waste of time that they should have been using to focus on Swift 100%. They should have been using the time to become an EXPERT in Swift. Same holds true for someone that ONLY wants to develop Android applications. Telling someone to learn Python then go and learn Java? Really? The problem is that when people are starting out they don’t know when to stop and move onto the next language. And they shouldn’t need to know that. Someone that wants to learn programming should first identify what they want to do. What do you want to do with programming? Android: Java; iPhone (iOS): Swift; Front End Web: HTML/CSS/JavaScript; Back End Web: JavaScript, PHP, Rails, Python… If someone wants to focus on automating Windows based computer systems (server/workstation) in 2016, I’m not going to tell them to learn Python. They should learn PowerShell, .NET via C#. … I think you get the idea. While I don’t disagree that someone should learn something. I think they should find their Why (am I learning this), What (do I want to accomplish), How (am I going to use this), Who (do I want to become through my learning/growth process i.e. my expertise).

My Response To The Objection

I am now going to respond to your first comment. Before I argue my viewpoint, let’s establish why most people never pursue programming or quit early on in their career. Why do most college students drop out or change their major while taking their very first programming classes? People do not like to be overwhelmed with choices – I don’t know about you, but I sure don’t, especially when venturing into new territory. While I agree with most of what you say, my single purpose here is to provide a path for people to get involved into the world of programming. Javascript, Swift, C++, C#, Scheme, Haskell, Python, Ruby, etc… That’s ALL CRAP. The language you start off does not matter. I work with about 4-8 languages on a daily basis and I myself started off with Python. let’s say someone didn’t know any better and wanted to start off with Java… Trying to work with the conceptual difficulty at the same time as working with syntactical difficulty? Why? That’s simply absurd. Python, Ruby, Scheme (functional programming languages) let you simply get to writing a function whereas in Java you have to have the foresight of the data structures that the function is going to return. How is a beginner who just learned the concepts of function is going to know whether his function returns a double, string, array, double array, matrix array… That prerequisite is not possible for ANY beginner to meet, I don’t care how smart you are or how you learn. You have to learn how modules and classes work. You also have to learn how to compile your code. That’s a ridiculous thing to expect someone totally new to programming to get accustomed to right off the bat. This puts countless barriers in a person’s way, who is trying to learn computer programming i.e “Is my function wrong cause it’s not compiling vs. did I package it wrong vs. did I remember to tell it to expect the right data type on return vs. … Or is my logic incorrect?”. I use Java quite a bit now and I absolutely love it for that reason because it makes it harder for me to make an error, but would I want to start off like that…? Hell no. That’s a logical fallacy that it takes a beginner less time to become proficient in Java if he/she just starts off with Java. It takes a beginner less time to become proficient in Java if he/she first starts off by understanding the core computer programming concepts. I am not advocating any one language is better than the other. I am trying to help people avoid being overwhelmed with their choices and Python happens to be an excellent choice as a first language. There is a reason why most top universities like Carnegie Mellon, UC Berkeley, MIT, Standford, Cornell, and Georgia Tech, have changed their intro CS course to Python. This also holds true for the largest online MOOC providers like Coursera, Udacity, and edX.
“Python is Now the Most Popular Introductory Teaching Language at Top U.S. Universities”. – http://cacm.acm.org/blogs/blog-cacm/176450-python-is-now-the-most-popular-introductory-teaching-language-at-top-u-s-universities/fulltext


I hope this offered you a more in depth perspective of what language to start off with first. Please feel free to continue researching so that you make sure you are making the right decision before starting out your career in software development.

Where Can I Start Learning Python?

Once you are ready to start… Enroll in my Learn Python course. It offers programming videos, tutorials, written problems, written solutions, projects, and video solutions as well. This way you do not have to get stuck at ANY point. We also have a tight knit community so that will help make sure you really are never stuck on any problem.

Please let me know below… What are your thoughts?