How to choose your first programming language (and why it doesn’t really matter)

by: | Oct 26, 2021

I am often asked by aspiring software engineers what programming language they should learn first. This is probably the most paralyzing question developers face when starting, to the point where many feel like they can’t study anything else until they get this answer perfectly right. The reality, however, is that it doesn’t matter what you choose. Just choose one and get started.

In this post, I’ll explain why and then guide you to choose your first tech stack without being paralyzed by the choice.

Programming languages are not the job

The main reason beginners overthink choosing a first programming language is that they don’t understand a programmer’s job. As a software developer, people don’t hire you because you know a programming language. They hire you to create value by teaching a machine to solve a business problem or meet a user need. As you advance in your career, you’ll learn how to make your solutions simpler. And when complexity is unavoidable, you’ll learn how to break it into simpler, more manageable parts. You’ll also learn how to enhance your software without making it harder to understand for other developers on your team.

These skills are completely independent of any programming language. They are, however, completely dependent on you understanding software requirements, writing algorithms, breaking up solutions into smaller logic units, and knowing how software works.

Focusing on that will take you much further than any tech stack ever will.

A better mindset about programming languages

I’m not suggesting programming languages don’t matter. What I’m advocating for is a mindset that sees languages as tools in our toolbox, rather than the central focus of our trade. No one would argue that choosing the best cutting devices is the most essential part of the job as a doctor — but would you trust a heart surgeon who doesn’t know how to use a scalpel?

This toolbox mindset is even more important considering that you have to pick the programming language to learn first with very little information needed to make that choice. Usually, it’s after people start programming that they learn about an interesting new field they didn’t know about before (maybe after a year of study they discover that data science is a thing). Or, they might learn more information about the fields they were already interested in that steer them to learn different languages (perhaps they find out Python makes data science easier).

Switching languages is part of the job

Another reason to look at languages as tools is that you’ll have to switch between them all the time. For the past few years, every time I joined an ongoing project, I had to learn some sort of new syntax. In one instance, one of my first tasks with a new product was to modify a feature used daily by millions of users, built entirely with a language that I hadn’t even heard about until a few weeks earlier.

Even if you’re not switching projects, it is common for teams to add new languages on an active codebase, forcing all members of the team to learn a new syntax. That may happen because a new tool comes along and makes everybody’s lives easier, or because huge players decide to adopt existing languages that completely changes the landscape of your industry (like Apple adding support to Swift in an OS dominated by Objective-C, or Google adding native support for Kotlin in Android).

Given how many languages exist today, and how dynamic software development has become, the ability to learn a new programming language quickly is an indispensable skill. One could even argue that choosing the wrong language at first is a good learning experience!

Programming languages are more similar than you think

The good news is that learning new languages is easier than you think. Programming languages tend to follow similar patterns, with constructs that you’ll learn once and can apply everywhere. For example, let’s look at the same simple algorithm implemented in two completely unrelated languages.

Finding the smallest number from a list in Typescript

function findMin(arr: number[]): number | null {
  if(!arr.length) return null;
  let min = Number.MAX_VALUE;

  for (const num of arr) {
    min = Math.min(min, num);
  }

  return min;
}

The same algorithm, now implemented in Kotlin

fun findMin(list: List<Int>): Int? {
  if (list.size === 0) return null;
  var min = Int.MAX_VALUE;

  for (num in list) {
    min = Math.min(num, min);
  }

  return min;
}

Although this is a very contrived example (and in the real world a codebase may have a huge number of concepts that we don’t cover in these snippets), it’s still remarkable how similar these two look — and that similarity is extended even as you add more advanced concepts to your code.

Unless you’ve been studying something remarkably unusual, the transition to a new language should be pretty painless regardless of where you land. Although it may take a while for anyone to master the most intricate aspects of a new stack, an experienced developer should be able to write production-level code in a new programming language soon after picking it up for the first time.

How to choose a programming language

Ok, so we’ve established that programming languages aren’t the most important aspect of a developer’s job, and choosing your first one doesn’t need to be a paralyzing decision. Still, you do need to start somewhere. So how do you choose? Here are a few tips:

Choose something in line with your field

This might not be the case for you, but some people go into computer science knowing exactly what kind of software they want to build. If that’s your case, just choose whatever is the most common for that area. For instance, if you want to be a web developer, learn Javascript. Android developer? You can’t go wrong with Kotlin. iOS developer? Swift is the top choice. Data scientist? You should probably know Python. You get the idea.

Choose something easy

Learning algorithmic thinking and honing your problem-solving skills is hard enough. Once again, your programming language should be a tool, not an obstacle. So, while low-level languages like C++ can be extremely powerful and useful in the long run, I’d recommend that you start with scripting languages like Javascript or Python, which have smaller learning curves. They’ll allow you to focus on learning key programming concepts, rather than dealing with memory management and low-level machine concerns.

Choose something marketable

While there probably is a market for ALGOL developers out there, you’re way more likely to find jobs that require a widely adopted modern language. If in doubt between starting with one of two languages, choose whichever is more popular. For guidance, you might want to read through the annual GitHub Octoverse report to see the most frequently used languages in GitHub’s repositories, which should map well to the industry as a whole. That’ll guarantee there’s a community to support you when you have questions, while also making it much easier to land a first job. If it so happens that at some point you find a sweet job writing ALGOL, that’s fine — you’ll always be able to go back and learn it.

Just pick a language and get started

I want to finish by sharing my history with programming languages. After all, with my work at a top app development consulting firm, I’m living proof that, even if you make the poorest choices on this, you’ll still be just fine.

The first language I ever studied was C++, followed by Java. Those are two terrific, extremely useful languages, with huge user bases — and the foundation for some insanely powerful projects. But honestly, I haven’t written one line of code in either of them for the last 10 years. I have literally never used them in a non-academic environment in my entire life. Even so, I’ve never regretted starting with them.  They were tools that provided me with a way to express the programming concepts swirling in my brain.

So, if you’re a perfectionist stressing about what languages you should learn first, stop. Years from now, it probably won’t matter — just pick one and get started.


Ready to start your programming career?

ArcTouch creates lovable apps, websites and digital experiences. No matter what programming language you started with, there’s a place for you here. Come join us. See our open career opportunities.