It’s a question more and more people are beginning to ask themselves: Which programming language should I learn first? With hundreds of options to choose from, it is understandably easy for beginners to get overwhelmed. How do you know if you are learning the “right” language? How do you know if you are heading down a path that will give you a foundation to land a great job in the future?
Despite all the noise and nuanced opinions you’ll read about what your first programming language should be, the best answer these days is simple:
If you don’t know algebra yet, then start with Scratch.
I first learned programming in elementary school via a Scratch-like language called Logo. After I was taught algebra in junior high, I learned BASIC, which introduced me to, well, the basics. In high school, in between programming silly games and animations on my TI-83 calculator, I learned Pascal in computer science class.
Even though Pascal was interesting, I was discouraged by its lack of obvious real-world applications. Even though I tried to make a comeback by learning C in college, the biological sciences had already taken a firm hold of my interest. I didn’t come back to programming until grad school, when I learned Ruby as I began building web apps on the side and needed a scripting language to efficiently work with data in my research.
Ok, What’s Next?
From here, what you should learn depends on what you want to build. If you’re not sure, try experimenting with each category below and find something you enjoy.
If you want to write code for something other than web or mobile applications …
… then your next language should be Java or C. (Java is also used by web and mobile developers, so if you change your mind later, you can easily switch over).
C, on the other hand, is one of the most widely adopted languages of all time and is the foundation for most operating systems and higher-level languages used today. You should learn C if you want to be interfacing more with hardware and/or need to be at the cutting edge of computational optimization. After learning C, you should learn C++, which will give you even more appreciation for C, allow you to build even more amazing software, and set you up well to learn other programming languages.
If you want to build mobile apps …
… then, in light of Apple’s latest announcement and especially if you’re just getting started, you should begin learning Swift (within Xcode 6, currently in beta).
If you’d prefer to start with Android development, then you’ll want to dive into Java, described above, which also gives you plenty of options for other types of software development as well.
If you want to build websites …
Java has a well-established community and, as I mentioned above, has options to do pretty much everything. It also puts you ahead of the game if you want to eventually write Android apps (which are built using Java).
C# (pronounced “C sharp”) launches you into the Microsoft world, which — as you likely know — is a big world and has plenty of options for web development, especially within the .NET framework.
Python gives you everything Ruby does, plus a long-standing set of tools/libraries for more academic and scientific applications. The slight “cost” of this robustness, however, is that it is arguably less easy to learn (which isn’t necessarily a bad thing). Still, the language prides itself on bringing “ease through consistency.” The Python community is undeniably steady, which is extremely important when deciding what programming language to learn.
Whatever path you choose, start writing your own software as soon as possible
Too many beginners get stuck following (and getting frustrated with) tutorials. It’s easy to copy and paste someone else’s work and not have a clue what is going on under the hood.
The best solution to this problem is to think of an interesting project to work on and get after it. If you want to use an Arduino to build an interesting sensor or robot, go for it (it will force you to learn C/C++). If you want to build an app for your iPhone, then think about exactly how you want it to look and feel, and use tutorials and online resources to help you hook it up (for this, you’ll need to learn Swift). Or if you want to build the next awesome web application, work to make it look exactly how you want it to in the web browser across various devices (which involves HTML and CSS). From there, to bring it alive and give your users the ability to add, modify, and view lots of data, you’ll need to learn a web development framework (which will force you to learn its underlying language).
Finally, writing code is much more of an artistic craft than most people realize. It takes a significant number of years to get to a proficient level and first requires being a good apprentice under a community of developers to ensure you are learning the trade properly. If you are able to earn an advanced degree in computer science, you should. If not, get as far down the road as you possibly can with online resources, and sooner rather than later you should seek to make friends with programmers who can get to know you, evaluate your work, and help guide you in a fulfilling direction.
Will Little is co-founder and CEO of Code Fellows, a Seattle-based digital trade school that guarantees jobs to graduates of its intensive, eight-week Development Accelerator program. Will holds a Ph.D. in Bioengineering from ETH Zurich and has worked professionally as a Web developer and tech entrepreneur since 2005.