Beginning Your Journey "The Right Way"
Hey everyone! I hope everything’s going great! Today we’re going to discuss the “Right Way” to begin your journey in the domain of Computer Programming.
First of all, let’s make it clear - There’s no hard written way of succeeding in anything. I just happens with sheer willpower, perseverance and hard work. Also there is NO shortcut. You have to take every step on the ‘ladder of success’ - there’s no skipping. Aye, you may learn from other people’s mistakes and experiences, but make sure that you have your own experiences too, and also make your own mistakes.
“Failure is not in falling, but in not rising up again”.
The way, or workflow which I’ll be discussing here is the one I found out to be really effective. Undoubtedly, there are many other ways, some more effective, and some less. But everything is good if it helps you further yourself towards your goal.
Choosing your first language
Choosing your first language wisely is really important. Because you will do a lot of preliminary and basic stuff using your first language. A good tip for selecting your first programming language would be to select a compiled language like C, C++, Java, etc. Most of compiled languages, for e.g. C, are closer to the system. C doesn’t do a lot of stuff for us; for example, implementing dynamic arrays ( arrays with variable size ) in C is not so easy. But in interpreted languages, like Python, dynamic arrays are a part of the language ( called ‘lists’ ).
The language which I would recommend for first-timers would be C. It has a flatter learning curve than Java and is similar to C++, but helps you in learning many of the concepts ( not including Object Oriented Programming ). You can also use C for Competitive Programming, as it is comparatively faster than other languages. Also, as it is a language that is ‘closer to the computer system and hardware’, we are also able to understand the working of the system.
After you are well comfortable with C, you may move on to C++ or Java.
Good Logic
The truth is, learning a programming language is really simple. It is simply a construct of words and symbols, which when placed correctly will create a good output. Here, “correct” is a subjective matter. With good Logic, you can create beautiful poetries out of your code. A simple example would be swapping 2 numbers stored in a
and b
. The simplest method one can think of is to create a temporary variable c
and use it as following:
c = a
a = b
b = c
But what if we can do this, but without a 3rd variable? There are some methods, like in the following trick, we use addition and subtraction to manipulate the values.
a = a + b # a gets value 'a+b'
b = a - b # b gets value 'a+b-b', i.e. 'a'
a = a - b # a gets value 'a+b-a', i.e. 'b'
# So, in the end, the values are swapped.
# To get a better understanding of this, use a pen and paper, and
# try to work it out yourself.
Similarly, in other operations, you can write better code with better Logic. So first step would be to improve your logic, and train your brain to approach a problem from a technological point of view.
How to improve Logic?
Here comes in Competitive Programming ( or Sport Programming ). Competitive programming has a large community, and is still growing at a huge rate. There is an ocean of questions, problems and competitions available on the internet now. There are various sites for the same, like Hackerrank, Codechef, etc. You can solve some problems without using advanced concepts, but some problems do require them. You also need to practise Data Structures and Algorithms. Competitive Programming ‘forces’ you to think of the most optimal solution, and before long, your brain will be trained to think of an optimal solution wherever possible.
“With great Logic, comes great Code.”
A good way to slowly improve your thinking, is to solve atleast 1-2 problems everyday. After 2-3 months, you will have a greater understanding of the problems, and the solving strategies.
Moving further
By the time you decide to move further, you should have developed a good logic, and would be proficient with 2-3 languages. From this point on, it will be a cakewalk. Learning a new language will be really easy. Now, the important part is - “What you want to do in your life?”
Computer Programming expands into a lot of huge fields further, like Web Development, App Development, Machine Learning, AI, Computer Vision, etc. It’s upto you to find out what you love to do.
“The only way to do great work, is to love what you do.”
— Steve Jobs
I’ll wrap up this post with this now, thank you for giving your time!
Adios Folks!