The question of which language is the “best” has plagued programmers ever since there was more than one language to choose from. This poses a bit of a problem for beginners, since if you ask twenty developers “what language should I learn first”, you will get twenty unique answers. I aim to clear that confusion up in this blog post.
Before we can answer the question of “what language should I start with,” we need to know what you want to do with the language.
What are you trying to do?
There’s a big difference between working on desktop applications, mobile apps, web apps, websites, video games, and any other specific flavor of software. In fact, you might not even be looking into a specific branch development: there’s a decent chance your only question is “what can make me the most money the fastest?” That’s a question for a future blog post.
For the rest of you, let’s get you pointed in the right direction with a handful of good options (before any diehards start raging in the comments because their favorite language wasn’t included, remember that this is by no means an exhaustive list: it’s a summary for beginners).
A word of warning: desktop applications aren’t dying, but they are fading somewhat as everything continues to move online. Most likely you either have an idea for the next great app (in which case let me convince you that you should be focusing on web development instead - but that’s a topic for a future blog post) or you want a steady, safe job working for any of the countless large corporations with software developers out there. You should be looking into…
Java is one of the most widely used programming languages, although it’s not certainly not exclusively used for desktop applications. Far from it: Java’s big claim to fame was the fact that in runs inside something called a virtual machine. The virtual machine is built to run on nearly any platform (Windows, Mac, Linux, Android, and even web browsers), which means you can develop a Java application once and run it most anywhere.
C# (“C Sharp”, for anyone unfamiliar with sheet music notation) is a language created by Microsoft that, like Java, is used basically everywhere. It’s syntax (the way code is structured and written) is very similar to Java as well, which makes it easier to transition between the two of them (and make no mistake, you will jump between languages at an uncomfortable pace).
Python is one of the big beginner-friendly languages that a lot of people start with. It’s also a big name in web development and the language of choice for the Raspberry Pi, so it’s a good choice if you want to get into the Internet of Things. The syntax is very different from Java and C#, however.
Moreso than desktop applications, this is where you will most likely want to focus. We’re moving away from a world where people download and install software onto their computer and into a world where everything loads in a web browser on an as-needed basis. There’s a lot of good reasons for that: it’s simpler for the user, it allows access from multiple computers, and it lets the app run on any platform. There’s never been higher demand for web application developers, so if landing a job in that field sounds good to you, you should be looking into…
One point to note, though: don’t get it confused with Java. Despite the similar names, they’re two very different things.
You’ll notice I listed web applications and web design separately. Even though they often work side-by-side on the same projects, application developers focus on logic while designers focus on user interfaces. It’s much more artistic as opposed to logical. If that sounds like your idea of a good time, you should be looking into…
The acronym that everyone finds first when they Google “how do websites work.” HTML controls all of the content on a web page, so it’s the core of every web designer’s arsenal of technologies. If you’re at all interested in creating websites, start with HTML.
Fun fact: HTML technically isn’t a programming language. It’s a markup language. The difference will become readily apparent if you work with HTML and literally any other language.
The yin to HTML’s yang. The potatoes to its steak. The peanut butter to its chocolate. HTML is used to display content, but CSS makes the content pretty (or at least that’s what it’s supposed to do - it really depends on the designer). As soon as you have a rudimentary understanding of HTML, you should be adding in CSS.
Much like HTML, CSS is not really programming - it doesn’t involve coding logic. That doesn’t mean it’s not absolutely necessary, though.
And yes, this one actually is a programming language.
“I’m gonna make the next Flappy Bird and get rich off of the app store,” you might say. More realistically, “I’m gonna make a useful app / get a job writing useful apps and make a living!” Mobile app development is a huge industry, and you really only need one language per operating system (iOS and Android). If that’s the direction you want to head, you should look into…
Java is the primary language for Android apps. It can’t run on iPhones, but you can write pretty much any app for Android with it.
iOS (iPhones, iPads, iWatches, and every other mobile device created by Apple) used to use Objective-C as its primary language, but Apple introduced Swift in 2014 as an alternative to the less beginner-friendly C-based language.
This is an odd option, but a very valuable one. Unity 3D (a video game engine) allows developers to create mobile apps (not just games) using C# instead of Java or Swift. The advantage is that Unity allows you to create an app for both platforms using one language, instead of needing separate languages for each platform.
Vidya game development might not be a big money-maker for new programmers, but it’s one of the big reasons why people get into coding in the first place. Video games need an engine to run on (you may have heard of Unreal, CryEngine, Unity, Source, Gamebryo, or any of the other multitude of engines out there), which you usually don’t want to develop from scratch.
Unity 3D is one of the most popular engines for new developers, but other engines (such as Unreal) now offer free options for indie developers. If turning that game idea you’ve always had into reality sounds appealing, you’ll want to look into...
C# is the scripting language of choice for development in Unity 3D. You’ll need to learn how to use the engine’s tools as well as how to write code, but it’s easy to get started with.
But what if I don’t know what I want to make?
...I guess you might want an explanation for that.