Which Programming Language should you Learn?

Garry Fanata
Geek Culture
Published in
8 min readJun 3, 2021

--

As a graduate of Software Engineering, uncle to nieces/nephews and friend of many aspiring Computer Scientists and Software Engineers, this is the most common question I have received. “If I want to learn how to code, which programming language should I start with?”. Knowing where to start in this broad industry is tough, so I hope to make it simpler for you all. Throughout my programming career I have learnt a variety of different languages. There are plenty of resources online that answer this question, and the answers between sources may greatly vary, here is my experience based from both the learning process and industry experience.

tldr; Java is the best, Python is a close second, C++ is good too

Photo by AltumCode on Unsplash

Anyways, enough with the introduction. When starting out learning how to code, these are the top 3 languages I recommend:

1. Java
2. Python
3. C++

Why Java, Python, or C++ ?

Before I get into the specifics on each of these languages, I will explain why I narrowed it down to these 3.

Why not JavaScript?

If you google what is the most popular programming languages, JavaScript will be in the top 5. Despite this, I DO NOT RECOMMEND STARTING WITH JAVASCRIPT. Now why is that? Firstly, if you have learnt Java, Python, or C++ well, learning JavaScript will be easy, so picking it up later when needed wouldn’t be an issue. JavaScript does not teach you the fundamentals of programming, it is a very patch-y language. Other programming languages lets you be in control of your code, each line can be traced and understood while JavaScript has a lot of random components that attempt to fix your immediate issues. Although JavaScript is useful in multiple situations, it is mostly used for Web Development, and as a programmer I recommend to be as versatile as possible to start until finally discovering and sharpening your speciality.

Fundamentals and Programming Concepts

There is no doubt that every programming language has its pros/cons as well as its specific uses. Swift is a good example of this as it is only used to code MacOS/iOS applications. However, even if your dream goal is to become an iOS developer, I still recommend these few languages to get started. I believe these languages will teach you the fundamentals of programming, and once you get comfortable with the basic concepts, learning other languages is a piece of cake, it is only a matter of syntax and specific features here and there. These 3 languages are perfect to learn concepts that are widely used throughout any type of programming.

Object-Oriented Programming

Java, Python, and C++ are all Object Oriented languages. Object Oriented Programming (OOP), is a very crucial, if not the most important concept in learning how to program. There are other types of programming like Procedural Programming but that is also covered when doing OOP. Understanding objects is, in my opinion, the gateway to fully understanding good programming. You can always take a step back to lower level languages such as C or Assembly after.

Visible and Rewarding Code

Learning a new craft like programming can be daunting, it really helps when you are able to see progress in your learning. Yes, with most languages you can see your code run in the console, but the ease of set up of these languages allow you easily visualize what exactly each line of code is doing. There are also plenty of easy to use GUI libraries that you can implement to take the next step and visualize your work instead of only through the console.

Popularity

Java, Python and C++ are among the most popular coding languages. This means that many programs and companies use it, so your skill is directly transferable to the industry. This also means that there are an abundance of resources available online. You will undoubtedly need these resources when your code inevitably breaks/runs into an issue. Someone has almost always had the same problem before so solutions are plenty and easily available. Google and StackOverflow is your best friend.

Since these programming languages are widely used, there is also a plethora of external libraries that extend and simplify the features and capabilities of your code.

Which one is better suited to you?

Now that we’ve established the top three, here are the specific reasons why I would recommend Java over the Python or C++. Keep in mind that in certain situations one might be better suited for you but overall Java is the best. Here are the reasons why:

Simplicity and Perfect Level

Python is easily the simplest programming language to pick up and learn. C++ is undisputedly the hardest out of the three. Java however, is in between. Now you might be wondering, if Python is the easiest, why not learn Python. Well in programming, there are different levels. Without getting too much into it, levels in programming essentially means how much the computer does for you and how much you have to do manually, for example: allocating memory and resources.

With Python, the computer does most of the work for you. It allows you to write much simpler code without needing to worry about the lower level mechanisms. However, starting off in this level of programming also means that you give less thought to the lower level which leads to less understanding of how the code works as well as less attention to other factors like security or efficiency. This simplicity leads to Python being used for many prototypes and small scale applications. This might be okay for some applications, but when you want to working on larger scale or custom projects, this lack of understanding may hinder you

C++ is the hardest of the bunch. It is at a lower level where you have to worry about things such as pointers and garbage collection. Mastering C++ will undoubtedly make you a better programmer as well as make learning and transitioning to other languages much easier. However this level of difficulty can be confusing and intimidating to people without coding experience. I started off learning C++ and I was studying it for 2 years; I knew how to code this and that but I never fully understood and became confident in coding until I learnt Java. In addition, many modern programming languages now has automatic garbage collection and helps you out with pointers (although it is still important to understand these concepts). Then there are header files which can be hard to set up and understand as beginners.

Java is at the perfect level between these two. You do not have to worry about garbage collection while coding. There are also no pointers, but there are still references which help you understand how a program works in terms of its physical association to the computer’s memory allocation and resources. Java allows you to have control of critical functions of your computer like the filesystem, graphics or sound, whilst keeping it relatively simple. After learning Java, I was able to understand other programming languages and adapting to other languages such as Python and Swift was a breeze.

Portability

Java is extremely portable. This means it can run in almost any environment with little effort. It can run on Web, Desktop, and Mobile. Although the other languages can also be ported for different platforms, it might take a lot more effort to do so.

Availability of Jobs and Hire-ability

A recent 2020 study shows that Python is the most in-demand programming language in the market. This is expected as Python is the simplest to use which means its production time will be the fastest. Most companies, especially larger ones, value efficiency and scalability, Python does not allow for the most efficient or fastest code due to its high level. Java however, has always been a staple in the industry and remains top 3 in the list. You have to keep in mind that companies have more programs in addition to their front-facing website. For example, a big company like Amazon or Facebook has thousands of internal tools and programs to keep the company running, more often than not, these are written in Java. Sorry to burst your bubble but the most openings for big companies are to work on these internal tools rather than the main product, but this also means that there are plenty of open positions to fill.

Having a relatively lower level language like Java or C++ in your toolbox can be a HUGE boost to your resume. Having Java and/or C++ proficiency under your belt shows companies and recruiters that you have a strong understanding of programming and computers rather than frankenstein-ing code to make things work/fix things.

Specializations

As mentioned above, each language has its merits and uses. These three languages are more versatile than others but naturally some fields use one more than the others. Here are the fields where these languages are popular:

Python: Data Science, Machine Learning/AI, Web Development, Game Development, Small Scale Prototypes and Applications

Java: Backend Services, Mobile Applications, Internet of Things (IoT), Cloud Computing, Internal Softwares, Enterprise Architecture

C++: Operating Systems, System/Application Software, Drivers, Client-Server Applications, Embedded Firmware

Learning Environment

You should keep your learning environment in mind when learning how to code as well. If you plan to self learn, python might be best for you. If you have resources and/or a guide/mentor/teacher, aim for Java or C++. I only say this because learning python is straightforward and incremental, while in Java and C++, you will need to overlook certain concepts in the beginning as they are more complex and will be taught later on. Java and C++ is also harder to debug initially so having external aid would be very helpful.

Photo by Andrew Neel on Unsplash

Conclusion

In conclusion, all three of these programming languages are good starting points in your programming journey. Java is the most ideal as I believe it is the perfect balance of complexity and simplicity. Although if you have tried Java or feel like you need a shorter stepping stone, it is perfectly fine to learn Python. The biggest reason why I recommend Java over Python is because most programmers that learn Python get too comfortable. They are able to make things work so they don’t think about anything else, whilst Java essentially forces you to understand these concepts in order to make things work. Python is really really good for beginner programmers, however please do not get comfortable, even once you feel comfortable with it, keep learning more concepts and get deeper into the language. Here is a very well written and important article on why understanding programming concepts are very critical and why it is not the same as making a program run. There is an unfortunately large amount of programmers that only deliver the bare minimum, inefficient, or copy pasted code without even understanding what the code does. This “as long as it works” mindset is toxic to a programmer’s mind.

And again, to reiterate because it is important; YOU CAN ALWAYS LEARN OTHER PROGRAMMING LANGUAGES AFTER. Just because you start with one language doesn’t mean you cannot learn other languages. This is also the main reason why I recommend Java as learning other languages will be much simpler after.

In Conclusion Again

If you really want to be a great programmer and understand important concepts from the very beginning, Java is the language for you. But it is completely fine to start with Python for a simpler, easier, and more engaging experience. But if you do start with Python, please push beyond the basics and understand the internal mechanisms and fundamental concepts that Python often helps you through. And if you’re feeling really ambitious, you can start with C++.

P.S: This is only on which language to learn, I might write an article on how to start learning how to code and the most productive way to do so. Let’s see

--

--

Garry Fanata
Geek Culture

’20 UCI Software Engineering | Indonesian living in CA | Sharing my story to the void of the Internet