Which Programming Language to Start?
February 22, 2022
Python vs Javascript vs Java vs PHP vs C++ vs C# vs Rust vs Ruby vs Scala
One of the first decisions on the Developer journey is which programming language to start learning. This question has two major points of consideration: Career Goals, and Personal Strengths.
Table of Contents
Career Goals
Market Trends
If you're learning a programming language with the intention of making a career out of it, then it would be good know that building software with it will still be a marketable skill in the future! In addition, since you're stepping into new territory, it would also be good if there were many people on the internet who had already asked the exact same questions you're bound to ask (with people kind enough to answer them). Two helpful Google searches to satisfy these two thoughts would be jobs by programming language and community by programming language. Another helpful search in this space might be salaries by programming language, however, if this building software is something you're very interested in, you're likely going to touch on many languages over your career.
Try to append over time
to the preceding search terms and look at the images for charts (don't forget to verify sources). A
community can't grow without jobs to sustain it, so if you only look at one of these charts, it should
be this StackOverflow Trends chart.
These pages contain charts comparing the programming languages that run on the internet's web servers:
Your Use Case
- What tools have been built using the programming language and what problems do those tools solve? Are they the same problems you'd like to solve?
- How long does it take to develop something new using the programming language?
- What type of device was the programming language meant to run on?
- Do the features and performance of the programming language meet your needs?
These questions are all entrepreneurial or intrapreneurial in nature. Most programming languages can handle most use cases in some capacity, but there are some generalizations that can be made which are explored in the Priority Matrix below.
Technical and performance differences can be critical to deciding on the best programming language for a use case. Although these use cases are considered in the Priority Matrix below, a more detailed examination of the technical and performance differences of various programming languages can be found at Overview of the Efficient Programming Languages.
Personal Strengths
Playing to your personal strengths is another great way to tackle which programming language to start learning. Some questions to explore are:
How Physically Visual Are You?
Is it important to physically see the thing you're working on while you work on it? Would a second program that verifies your code's functionality be insufficient? If yes, then Front-End with Javascript might be a good place to start.
How's Your Mental Visualisation?
If you're good at visualising structures in your mind, then you might be well-suited for Back-End development. But it doesn't rule out the possibility of being better suited for Front-End development.
Are you comfortable with arbitrary conventions?
Javascript and CSS have more seemingly arbitrary conventions than Back-End languages. It's worth a search on the topic. This can certainly be a point of contention against Javascript for those who are very orderly and logical.
How comfortable are you with rapid change?
Comfort with rapid change is important for all development roles in software. However, the pace of change is somewhat faster on the Front-End with Javascript. A well-known example of this is Angular's breaking change from version 1 to 2 released in 2016 which preceded the decline of its interest relative to React.
Final Considerations (unless you know more)
It's important to note that most developers know at least a little Javascript because it's the only programming language that can be run from a browser window. Some developers (and even entire software firms) develop strictly in Javascript, opting to use NodeJS on the Back-End so that only one programming language needs to be maintained. On the other hand, if you become genuinely interested in developing software, you will have ended up using several programming languages over the years.
Priority Matrix
Coming soon -- a tool similar to Best 'Learn to Code' Platforms, except backed by data sets produced by web scrapes.