There are so many languages which should you learn?
There are a lot of programming languages and a lot of popular programming languages. How do you pick which one to learn?
The decision is easy if you know exactly what you want to do as a developer and know what specific languages those jobs need. If you don’t know what type of development projects you want to do, the choice is harder. To help you decide, I’ll give you my suggestions and reasonings.
Does picking the right language even matter?
Many beginners worry about picking “the right language” when they’re starting out. They worry that they won’t be able to get jobs or work for cool companies on amazing projects if they choose poorly.
These fears aren’t completely unfounded, but they’re often blown out of proportion. In the end, the main benefit of learning a programming language is learning how to program. Learning to program is more important the language itself. Languages are the tools you use program. Think of it like learning to work on car motors. You start by learning on the car you have available, and understand the parts and how they all work together. When you’re comfortable with that motor you can work on another car’s motor easier, even if it’s from a different manufacturer.
To that point, knowing how to program in one language will help you learn other languages faster. Most programming concepts are not language-specific. Being able to think like a programmer is the biggest benefit to learning a specific language.
That said, you want to use your time learning to program efficiently. This means you should know what you want to do as a professional developer. You should also know how different languages help you to learn other languages in the future. Think of this as choosing your first programming language.
Answer these questions to help pick your first language
- What job or industry do you want to be in when you become a professional developer? What language(s) are most used by companies in that space?
- What languages have been popular for at least the last few years?
Don’t worry if you still can’t decide after trying to answer these questions. Remember, it’s less about picking the “right” language, and more about learning how to program.
Specific language recommendations
Many software industries use specific languages. Furthermore, certain languages have characteristics that make it a good starting language. Here are a few specifics:
- Python is many programmers’ first choice when asked to recommend a starter language. Python was created as a language for teaching programming. Because of this, it is easier to learn than many languages. That said, it’s also used in a lot of different ways across different industries in real projects. Some examples are web servers (Django), robotics, machine learning, and artificial intelligence. Dropbox even uses it. Given Python’s origins, it is probably the easiest language to learn on this list.
- Swift is Apple’s current recommended language for programming all their platforms: iOS, macOS, tvOS, and watchOS. Objective-C is still widely used for macOS development, but Apple now encourages developers to use Swift. Apple provides developers with a lot of support, documentation, and apps to help learn Swift. Because it’s so young, it has changed a bit since it first came out and will probably change more in the future. Swift is medium-easy to learn.
- Java is the standard for Android development. Java is also used a lot in software for large companies (enterprise software) and software that uses many computers to do more work (distributed computing). There are a lot of tools and resources available to learn Java. It is mature and stable. It is of medium difficulty to learn.
- C#/.NET is the standard for creating Windows applications. Microsoft has a lot of tools and resources for learning. It’s about on par with Java’s difficulty.
- Javascript (JS) is the primary language for modern web apps. There is a large and growing number of resources for learning JS. Also, because you only need a browser to start playing with it, it’s easy to get started. It’s of medium difficulty to learn.
- C/C++ are used in almost all industries and project types. Some project types that use them are: operating systems, file systems, high performance computing, embedded systems, systems programming, robotics, machine learning and artificial intelligence. C is simpler than C++ and gives you a good foundation with which to learn C++. These 2 are the hardest to learn on this list.
Pick a popular language that’s been popular for a while
All of the above languages are popular, according to TIOBE. TIOBE has been tracking the “most popular” programming languages for a long time. All the languages have also been popular for quite a while, except Swift. Swift is still on the list because it’s Apple’s preferred language for their platforms.
Why is popularity important? Popularity indicates a few things you want in a language:
- It is, and will be, used by companies on real projects.
- It has a lot of usage which will find and help fix bugs in the language itself.
- It has a lot of developers making libraries for it which will make it faster and easier for you to build apps.
- It has a lot of people you can ask questions of when you run into difficulty.
- It’s useful. You can make real apps with it and it’s not gimmicky.
Current popularity isn’t enough though. Much like diets or home exercise equipment, there are often fads. The languages that have been popular for longer have proven themselves in successful projects many times. Long term popularity also indicates that the language will continue to be popular for quite a while. Languages like C and C++ have been used since 1969 and 1979. Both are still in TIOBE’s top 3 languages.
Pick an object-oriented language to maximize your opportunities down the road
There are different types, or styles, of programming and each one has a bunch of languages that you can use. It’s important to pick a language that supports the style of programming that you’ll most likely use.
To use an analogy, let’s consider spoken languages. The 3 Romance languages are Italian, French, and Spanish. Compare them to Germanic languages like German, Danish, and Swedish. You can convey most ideas in both types but you may have to rethink and reorder how you speak.
Programming styles are similar in that you can do many of the same things in each, but the way you do it is different.
There are a few different types of programming that I’ll mention:
The only one of those 3 that you should focus on at this point is the first one, OO.
All the languages I listed above (except C) can support OO development (OOD). OOD is the style of programming you will come across the most in industries and companies. That makes OO important to learn and understand. Picking a first language that is OO will allow you to learn other OO languages faster. This, in turn, will increase your job opportunities.
C is an imperative language. C++ builds on Cs foundation and adds OOD features to it. This means that learning C will help you learn C++ but because they’re different types, the transition isn’t simple. Some people find this harder than others. I found learning C after learning OOD straightforward. Yet, I know a few people who use C exclusively who don’t understand OOD at all. Learning C will teach you important concepts like memory management and how computers work better than “higher-level” languages like Java or Javascript.
When in doubt, learn Javascript
I hate to say it, but right now it’s the most effective language to learn if you don’t have specific career goals.
Why is it the most effective language to learn?
It’s effective because can you make:
- very pretty, interactive web apps
- web services that run on servers
- mobile applications for Android and iOS
- desktop applications for macOS, Windows and Linux
Furthermore, a lot of people are using it. This means that there’s an active, growing developer community. A large, active community means that you should be able to get answers to questions and you’ll have many libraries to use. Libraries are bundles of code that are made to be used by other programs, but cannot be run themselves. In my car analogy, libraries are like parts for your car. You don’t have to design and make the parts yourself, you just buy them and install them.
Having lots libraries is important for building apps faster. The alternative would be that you’d have to re-invent the wheel every time you started a new project.
There is a downside to such a large, active community though, and that is the paradox of choice. There are many ways to do the same thing and no clear reason to choose one over the other. The JS community invents new tools, frameworks, and libraries constantly. This means its difficult to keep up and be confident in your choices for a long-term project.
So JS is useable in many different types of projects, has a large community, and has many libraries. And as an added bonus, the latest version, ES2015 aka ES6, makes JS a nicer, easier language to work with.
What to do once you picked your language
Once you have the language you want to pursue, where do you go and what do you do?
Your next goal is to find 1-3 good resources for your chosen language.
Books are the traditional medium, and you can use Amazon and its user ratings to find the best ones. One word of caution, though: be sure to get the most recent addition of the book if you buy or borrow it. Programming languages change. Sometimes those changes are drastic. If you get an older book you could learn features that aren’t used anymore.
There are good resources online as well. Tutorials on Youtube, blogs, or course sites like Udemy or Coursera can be worthwhile. Udemy often has sales on their courses. You can also get course discounts at sites like StackSkills. The quality of these resources vary, naturally. However, right now your goal is to get resources that are “good enough” to get an overview of the language.
Now here’s your mission: Find 1-3 good resources and email them to me at ethan@learntobeadeveloper.com. I’ll tell you which I feel are the best ones. If I don’t like any of them, I’ll tell you what ones I suggest. As always, feel free to include any other comments and questions as well, I read every email.