Deciding on a programming language can be extremely challenging and time-consuming as there are dozens of options out there, with a lot of conflicting information. In this article, I'll share some options based on my own experience learning to code, with suggestions for how to choose a programming language, escape tutorial purgatory, and make progress as a developer.
Here's a video version of this post if you'd prefer (11 minute watch):
Scenario #1: You Know What You Want to Build
Often, in articles such as these (or in the "What Coding Language Should I Learn?" infographics with which you're probably intimately familiar), you're asked to think critically about what you want to build after you've learned to code.
This approach is useful if you have some idea about what it is that you want to do with a programming language after learning it, but not so much if you just want to learn to code, as was my experience. I'll cover both scenarios in this article.
If you do know what direction you want to take your coding career after learning a programming language, you'll most likely have an easier time figuring out which language to learn first. Here are some suggestions in that case.
Let's say you're more interested in learning about the guts of websites, managing the "back end" and trying your hand at database administration. You've got a lot of options here, and the most straightforward path is Python, which is a beginner-friendly language that has mature frameworks (e.g. Django and Flask) for back end development.
Whichever language you choose for back end development, you'll most likely also wind up adding SQL to your toolbox for database management, so put that on your radar.
I've written elsewhere about what engine you should use to make 2D games, but here's the skinny.
3D Game Development: C# or C++
There are a lot of options for learning to code for 3D game development, and I'd suggest you start with C# or C++. In fact, unless you're super tech savvy or already have a background in programming, I'd recommend for you to start with C# and work your way down to C++. You'll have an easier learning curve and will learn fundamental programming concepts without having to deal with things like memory management and lower-level code.
You'll probably wind up learning both in any case, but if you start with C#, you can tinker around with Unity 3D, and then make your way to C++ with Unreal Engine 4.
Data Science/Machine Learning: Python
Although there are options in other languages for learning data science/analysis and machine learning, Python is currently the gold standard for this realm of coding. It's a fairly straightforward language to learn and will expose you to good programming habits and widely-used frameworks, so you can't go wrong here.
Scenario #2: You Don't Know What You Want to Build
There's the distinct possibility that you've spent days, weeks, or even months searching through articles, videos, reddit posts, and Stack Overflow questions reading about programming languages, and still have no idea where to invest your time because you don't know what you want to build.
I've been there. It's annoying.
OK, maybe not Haskell. But pick something, and stick with it long enough to learn the basics and see if there's a possibility that you might like using that language to build with it. And keep in mind two things as you do so:
Build something that's not in your tutorials. This is a crucial step in your growth as a developer. I'll cover it in the next section.
Scenario #3: You're Stuck in Tutorial Purgatory
If you've found yourself doing tutorial after tutorial, on the same or different websites, without ever actually feeling like you're making progress, you may be really frustrated with the experience of learning to code. I've been there, and can help.
The first step is to consider what programming tutorials are good for, and what they are not. Most online tutorials - particularly ones that allow you to code right in the browser - are excellent for teaching you how to program.
They are not, on the other hand, good for teaching you how to be a programmer.
The best tutorials will expose you to fundamental coding concepts and require you to apply that knowledge to solve puzzles and projects. They're wonderful learning tools that can, if used beyond their scope, become crutches that will stifle your learning.
A programmer, for example, doesn't sit around all day doing tutorials. A programmer programs, and that's precisely what you need to do to make progress after you've mastered the basics.
And you'll be doing exactly what programmers do when building a new project.
Finally, you really can't go wrong with what programming language you choose, even if it's not on this list. If you wind up picking one, learning the basics, making a project, and deciding it's not for you, that experience will actually still help you in the long run. The information you'll learn in the process will be useful, irrespective of whatever language you end up using for your projects.
You can do it!
-M. S. Farzan
This article originally appeared on freeCodeCamp.