The Roadmap for Aspiring Programmers
By: Utkarsh Luthra
Tags: Programming Tips, Learning To Code, Programming Languages, Programming, Coding

Technology in today’s world is predominantly based on computers, automation, and cybersecurity. Professions like hackers, software developers, artificial intelligence researchers, web developers, android developers, game developers, etc. have become very common and desired by thousands of people.

If you are one of those people who want to be part of this amazing world of tech and contribute to it as a programmer, as you are very well aware, you will need to learn to code.

Learning to code has become a necessity in today’s world anyway, but if you find yourself interested in it and want to really learn to code and don’t know where to start or where to move, this article is a must-read for you.

Every year, thousands and thousands of people start learning to code. They start for different reasons but there is a significant number of those who are not able to productively learn to code and get stuck in a loop and end up seeing that they haven’t received anything much productive. Hence, it is important that you keep the foundations strong from the start.

When one thinks of coding, the first question that comes to mind is the variety of languages that we need to choose from. And it is a justified dilemma as everyone comes with different expectations and if you end up learning the “wrong” language, you might waste weeks of hard work. Right? No.

You need to understand that all coding languages are basically just tools that are used to manipulate or create data that can be used further for different reasons. It doesn’t matter which language learn first and which you learn second but remembers that you cannot live your entire life with just one single language which you learned today.

That being said, also remember that if you pick any language at the start of your journey, complete it to the end. Many beginners do the mistake that they learn one language to some point and then leave it alone just because they think that the language they learned doesn’t have enough value or isn’t useful enough. Or many times they get a false perception that they have finished learning that language because the tutorial they were following has ended.

So, first, let’s define the principle that a beginner-friendly language must have:

The language should be easy to start with. The learning curve must not be too steep It should be useful in the future. It should be a language that supports object-oriented programming It should be good for competitive programming as well. It should be widely used in open source It should be easy to shift later It should not be objectively created for a specific purpose only

Now, coming back to the question, which language should you start with.

So basically, if you have no idea what you would want to do ahead in computer science or your professional life in general, I would recommend you to go for C++. There are several reasons for that. Firstly, if you learn C++, you create a temperament for coding. You learn a lot of interesting things which you wouldn’t if you were to start with any other language like Java or Python. Secondly, C++ is an object-oriented language that can be used very comfortably for Data Structures and algorithms. I personally don’t use C++ for a lot of things but when it comes to competitive programming or learning a data structure, I would definitely use C++. Generally, if you can accomplish something like learning C++, the rest of the languages will become way easier.

But, you need to remember the cost of all this. C++ can be, comparatively, a hard language to start with. Also, at some point in time, you will feel like the language is useless and cannot be applied in many places, which isn’t true, but it’s a general feeling most beginners have. So, if you want your journey to start with a nice and easy pace, I would strongly recommend Python. It is the easiest language you can probably learn. The only thing is that there is a lot of things that you cannot do with python as you move forward. But the good point here is that after learning Python, you have gateways into learning the artificial intelligence stuff like Machine Learning, Deep Learning, etc. And also, Python has many amazing libraries. Basically, they have a library for everything.

Whatever recommendations I gave until now were for people who don’t have any idea about what they want to do moving forward with the coding journey. Next to this, let us talk about the people who do have an idea.

Firstly, if you are interested in web development, there is no doubt at all that Javascript is the best choice. But remember, JavaScript may seem like a simple language, but it is in this simplicity that things start getting notorious. But overall, the journey of a JS developer is fun-filled and amazing. You will never be bored, I can guarantee you that. There is a lot to learn in this domain and the sky is the limit for learning about JS.

For those of you who want to get into mobile development, remember, there are many options here, but the one way I like to recommend a beginner is, divide the complete mobile development world into two parts, one for iOS, and the other for Android, obviously.

If you are interested in the vast world of Android Development, learn Java. This may seem like a piece of unusual advice, given that the official language of Android development is Kotlin now, but the reason I say so is that Java can be used for several other things and you will be able to learn Kotlin in very little time after that. Java as a language can be really amazing for DSA and is still used extensively. Also, Android still does support Java Development so you don’t need to learn Kotlin at all. But Kotlin is a beautiful language, and I would definitely recommend all the Mobile Development enthusiasts to learn it before moving directly to Android.

On the other hand, if you are interested in iOS, there are two options again, Objective-C or Swift, and I would surely recommend Swift. Swift is an extremely amazing language if you want to move towards developing for Apple devices.

But wait, that means that if you want to go for Mobile Development, you will have to learn three to four programming languages. Is there an easier way where you can learn one language which does good for both iOS and Android? Yes. Dart is a language developed by Google that can be used to create mobile applications for both android and iOS by learning the Flutter framework. It is not yet the best choice for any programmer but it is an amazing start which is a great option, but… it’s not for beginners yet. Hence, I would recommend you to first learn JavaScript or C++ or Python first and then learn Dart and Flutter later. You can learn more about the cross-platform mobile application development in JS using the ReactNative framework as well.

For game development, I would say it really depends on the engine you use. If you are going to use Unity, you must go for C++, while for Unreal Engine, you must learn C#. This is quite clear.

Another thing I wanted to highlight is that C# is actually a language which can be comfortably used for an endless number of thing just like Python. You can use C# for Game Development, Competitive Programming, Mobile Development, Web Development, and many more thing. C# is really an amazing language to start with. Also, it is non-conventional in many ways. So, if you want to learn a language that does it all while being good for beginners, C# is a nice language to start with.

There are many more streams that I could not complete here cause it will basically confuse you more and I don’t want that. In short, if you have to choose a language to start with, here are the final recommendations from my side:

Python — Easy, Intuitive, Simple, and extremely useful. JavaScript — One of the most widely used languages in the world and something which will get you into the world of Web Development very quickly. C++ — The language which teaches you how to learn to code. Something which I would very highly recommend if you want to learn to code and want to get deeply into the world of programming in general.

That is it. Chose one of these and I have ranked the languages above on the basis of difficulty to learn and usability in the real world. Other than the above, of course, C# is an amazing option anyway but I am not going to rank it. Let’s just give it a consolation prize.

Next, after choosing a language, the biggest confusion is about what to do after choosing a language. From where to learn? What to learn?

In short, I cannot answer this question for you directly because the question of where to learn is very subjective. If you want good resources, I can recommend that video tutorials are the best source of learning to code and remember to code while you watch it. You need to actively work while you are learning. Merely watch the tutorial will never be enough. ANd some very nice places to begin your search would be YouTube. If you have some money to spend, I would surely recommend you to go for either Udemy or Coursera, not because they sponsored me or anything, I took the above names only since I have actually experienced it.

The most important aspect of learning to code is that you need to continuously make some projects based on what you have learned up to that point in time. For eg. if you learned about the different types of variables in javascript today and how you can take input from the user, you must make a project which can take in the data from the user about their names and create a project where you can store the names of several people and print it to the console. Or, if you learned about operators today, make a project of a basic calculator and as you move forward, you can make the calculator better.

On a closing note, I would like to highlight that learning to code is majorly a game of consistency and hard work and you cannot ignore the role practice plays in it. It is more than just the languages you choose and the projects you make. It is about logic, creativity, and learning continuously. Even as you make a simple calculator for the hundredth time, you would learn something new. You need to remember that the basics that you learned at the start may be boring but itis this boring part that actually makes you the programmer you would become one day. Every big hacker, software developer, data scientist, and web and game developer started at the point you are at right now and had to bear the pain of doing the boring parts. You need to feel the pain of thinking about what you are typing on your text editor and not just go with the flow of tutorials. You need to question every single keyword that you write on your keyword. Be curious about everything you do and the language and the frameworks that you choose will not even matter.