What Programming Language Should You Learn First?
There are so many languages out there, and they are not all created equal. So which is BEST? Well, none, they all have a purpose, the real question is what do you want to do with the programs you are building, and what industry do you want to work in? This article does a great job of categorizing languages by style and industries that use them, as well as giving some examples and reasons why you may choose one language over another. The capabilities of each language vary, but learning your first language should be an exploration of programming concepts, not an attempt to understand that specific language completely.
So then what, where do we start? In my opinion, you should start with a language that you can run in your browser, like, JavaScript, TypeScript, Ruby, GoLang, PHP, or Python. I won’t go into details here, but these languages can be used to build web applications, and the benefit of this is you can SEE what you are doing! It is not a whole new world of black and white command line interface text, it’s your good old web browser. There is one caveat here, you will need to have some understanding of HTML to get going with this. But don’t worry, it does not take much, and there are a ton of resources to get you started. W3School is a great place to learn HTML, and once you get a couple of elements on the page you can manipulate their text, and add or remove them with your code! Side Note, CSS is also a helpful tool to learn a little bit about, though it is not NECESSARY to get started. That being said, if you wanted to change the color, size, or position of an element in your HTML you will need a little CSS know-how, you can learn more here. So pick a language, learn a little HTML and focus on the larger concepts.
The Big Picture
After you have your chosen language, and some idea of how to create and change web elements using HTML and CSS, we can focus on what the heck we should actually learn.
First and foremost we should look at some universal programming concepts:
Primitive data types- These can be slightly different for each language so look at your chosen language’s set, but generally, you will have strings(words), numbers(maybe int, float, long, etc.), and boolean(true or false) in every language.
Functions- These are the heart of programming logic. A function is a block of code that is given a name and can be passed some data to manipulate or check, then return something to us based on the “rules” we set for the function.
Comparison operators- These allow us to set the “rules” in a function. Each language may have a specific way to write these but the concepts are all the same, they are; “Are values equal, greater than or less than each other, and/or are the data types the same?” We also have options to check two things at once using the operations described above and asking “Are both of these true?” Or “Is at least one of these true?”
The concepts above will be present in every language that you learn and are what make the programming languages tick, so make sure you understand them!
Model, View, Controller
The next thing to learn is the structure of an application. This can be very different depending on what you are building, but sticking with the web-based concepts here a good place to start would be MVC architecture. This is a commonly used pattern especially in web development, and understanding its basic workings will boost your ability to learn new languages and frameworks.
So what is MVC? MVC stands for Model, View, Controller.

The Model represents the way that you’re data is structured. For example, if you were making an application where you had users that sign in you may have a User model that has a name, email, and password.
The View is what the user will see when they use your application. This may just be a login or sign-up screen asking the user for their name, email, and password. If they do this the view will change, maybe to a profile page that shows the user’s specific information.
The Controller is where we manage how the Models are created, updated, or deleted, and decide what the View shows the user. For example, if you are not signed in, you cannot see or change your profile page, the Controller will not change the View and give you access to all of the features on your profile page. Likewise, if you’re not signed up then you can’t sign in, because a user Model with your information doesn’t exist, so the Controller won’t be able to find your email or password and won’t move you to a profile page, but might display a message telling you that you need to sign up.
MVC architecture has been the standard for web development since the 90s. It is the standard for most existing applications, and though some web frameworks are deviating from the dogmas of MVC, understanding the principles behind this architecture will be invaluable to understanding how the programming landscape is changing. The principles of this structure still exist even if the pattern isn’t followed exactly, so learn it and look at applications that follow the pattern, there are plenty out there.
To wrap this up, I would suggest looking at Models from different applications to see what values were used and try to understand why those values were included in the Model. Then go look at a View, start with the login or homepage these will most likely have inputs to create a new user or something along those lines. See what inputs are on the page and what info they are asking for. Can you see that the inputs on the View are asking for information that a Model will need? Maybe there's a field for name, email, and password. Finally, go check out the Controller named for the Model you are looking at. Look at how the Model is created, updated, found, and deleted, and look at the route(URL) that is returned, this will lead you to the View that will be displayed to the user. If you do this and build a few simple applications using this architecture you will be well equipped to learn any language as well as venture into different architectures/patterns without missing a beat. Choose a language and get to work! Happy coding!