What’s the first programming language should I learn?

How to choose your first programming language

Roberto
5 min readNov 26, 2023
Photo by Christopher Gower on Unsplash

“How do I start programming?” “I’ve always wanted to learn to code, but it seems too complicated,” “I don’t really know where to get started.” These are all types of phrases I hear from people all the time. Programming/coding can be very complicated indeed, but that’s why we have to start with the basics. Slowly, with time and experience (like every other skill), you can get good.

There isn’t a right or wrong way/path/structured guide to learn the art of coding — it all really depends on what you want to do. There are a ton of programming languages (definition: a defined way/structure/notation of writing “instructions” for a computer. You can even build your own!), and each one was created for a different reason.

Why do you want to code?

Depending on the answer to this question, we can find out what programming language you should probably start with. Once you understand programming fundamentals, you can learn other languages more quickly!

“I want to learn to code in order to…”

…build websites and web apps.

If this sounds like you, you should probably start out with JavaScript (or JS for short). You’ll need to learn and understand other technologies such as HTML and CSS to actually build websites, but from the programming side of things, JS is where you should start.

JS is the scripting language of the web and is what allows a lot of the cool, modern web functionality to take place. It has a lot of interesting quirks other languages don’t have (see here), but it is a bonafide language with which you can learn the fundamentals. The first code I wrote was in JS.

… build AI (artificial intelligence) models and do data science.

AI has been around for a few decades, but if you’re trying to get in on the boom cycle of AI and ChatGPT we currently have, Python is the language for you. I’m lumping in data science here as well since many of the underlying tools/concepts/use cases are very similar.

Python is considered one of the easiest programming languages to learn since it doesn’t feature a lot of syntax that can occasionally scare off beginners. You can easily learn all the programming fundamentals as with other languages. There are many easy-to-use libraries (definition: code other people have written that you can leverage), such as NumPy, that you will be able to learn quickly to build incredible things.

… write scripts to do automation.

Python here is the winner again… most of the time. There are other popular scripting languages, such as Bash, but many times this is dependent on what type of Operating System (shortened: OS, definition: the most base layer software on your computer that helps manage the hardware and other software running).

Python can be used as a scripting language as well and can easily automate tasks such as deleting certain files, clicking buttons on a web page, and aggregating information. Automation and scripts can save a lot of time and manual effort when doing mundane tasks.

… build physical devices (i.e Arduino/Raspberry Pi/etc).

If you want to work with physical hardware or embedded systems, you’ll probably have to learn C/C++, which are generally considered more difficult to learn (you’d get a lot of programmer street cred though). C and C++ languages (which are technically two different languages, although often referred to together) are considered “low-level” programming languages, which give you more raw control over hardware and devices. They are “low-level” because they are “lower” to the bits and bytes, and there’s less in between. This is good for creating optimized, fast programs, but they usually have much larger learning curves than a “higher” level language, like Python, which abstracts a lot of that control away.

If you’re making some electronic gadget using an Arduino/Raspberry Pi or some other micro-controller, you’re probably going to have to learn some subset of C/C++. However, in some out-of-the-box micro controllers, like the Raspberry Pi, some other languages are also supported, such as Python! So, another option is to learn python first (again).

… make video games.

If you want to become a video game developer, it’ll depend on which game engine you want to build on. Traditionally, this is either C# or C++. C# is NOT the same as C or C++.

I haven’t really built too many video games, but Unreal Engine is known to use C#, and Unity is known to use C++. Here’s a more complete breakdown.

… build iOS/macOS apps.

If you want to build ONLY iOS or macOS apps, then you should learn Swift as your first language.

Swift is Apple’s own modern programming language that is designed to work efficiently and cleanly with Apple products. If you investigate, you’ll see references to Objective C, an older programming language, but this language is no longer the standard for new development in Apple products. Swift doesn’t do much else outside of Apple products, but like the other languages here, it’s a good one to start on.

… build Android apps.

If you want to build Android apps, the traditional advice is to learn Java since most apps on Android are built using it. Java formerly was the most popular programming language for developing sophisticated apps across many domains.

The new language to learn and start out with if you want to build Android apps is Kotlin. Kotlin is a much more modern programming language and looks to be the future of Android app development.

… become a software engineer.

This is a tricky one since software engineers since technically software engineers can be hired to do a variety of the above. Depending on the job requirements or interests, it’s possible a software engineer might only be doing web development and therefore only really need to use JS (or it’s younger brother, TypeScript). These type of programmers are often called “frontend” engineers as they build software that you can see and interact with directly in a UI.

The other general characterization of software engineers is a “backend” engineer, who writes software that you don’t necessarily interact with directly (note: a “full-stack” engineer works across frontend and backend). This is where a lot of computation/processing can occur, interaction with databases, and saving/retrieving information. There are many languages that you could learn here, but I think one of the easier ones would be Go. It’s a more modern language that is more readable and generally safer to use in the backend than some older languages (PS: Python can also be used here).

Summary

There are many more pros and cons of a language than what I’ve summarized here and many of the languages I mentioned have significantly more use-cases than what I’ve mentioned, but when you’re first learning to code, don’t worry about that stuff until later.

If you’re still not sure what path you want to start on, then I’d suggest learning Python while you figure it out. Its ease of use plus its general versatility makes it a great first option. The other mentioned languages include:

  • JavaScript (Web development section)
  • C/C++ (Embedded systems or gaming sections)
  • Swift (iOS/Apple)
  • C# (Gaming section)
  • Kotlin or Java (Android)
  • Go (Backend)

If you’re looking to learn more information, or hire me for tutoring/contracting services, please consider contacting me at roberto@tidallabs.io, following me on Medium, buying me a coffee, following me on twitter, or connecting with me on LinkedIn!

--

--

Roberto

Stanford alum, Software Engineer with a passion for CyberSec, Biotech, and Sustainability. Work with me at https://www.tidallabs.io/.