When we are taking our first baby steps, we make mistakes and we all fall but,
The fall is what makes anyone, who is courageous enough to try to walk again, Great.
The most important thing is you should not quit, you should persevere and the pain of the failures will surely be compensated with Greatness.
Learning to code has always been something I wanted do, I found the ability to make the machine do what you want impressive and coding makes you more connected with your machine in a way.
But when I started out I actually didn’t know where to start from, with the help of some of the resources online and a whole lot of YouTube videos, I managed to figure out where to start from, I had a little coding experience, from my high school days, in basics of C, C++ and HTML. But that wasn’t much, just a basic understanding and I didn’t even remember some of the concepts that I had learnt at that point.
So thinking that I have a basic understanding in C, I started out my programming journey with C language.
Under Estimating C :
I started out with a feeling that I know basics of C and I had thought that C is an easy language for beginner’s to start from, until I actually did some code competitions in C.
Whenever I used to compete, I used to get stuck a lot, either in not understanding the problem properly or not knowing how to solve it at all. I came out of each of these competition feeling sad and thinking maybe this is not for me, but each time I felt that, I found out a way to keep me motivated, I took the failures as a challenge and practiced to come back strong and triumph over my failures.
It took a while and a whole lot of coding to get better but I held tight. And as time went by I got better at solving the problems and working with the C language.
Starting out with C helped me build a foundation in programming fundamentals and helped me understand algorithms and gain knowledge on memory management fundamentals.
But just when I was getting through the intermediate phase in C, I made the second mistake that most beginner’s make,
Jumping Ship :
When you think you are getting better at something, you start losing focus on the task at hand and start getting tempted to leave and learn something else.
That is exactly what happened with me, just when I was getting comfortable working with C, I jumped the ship and switched to C ++. Which is actually understandable cause C and C++ are similar and that is how I justified switching languages.
But what I didn’t know back then is I am condoning and letting a bad habit grow and just like that here I was switching from C++ to C# just when I was getting better at C++ and then from C# to Java.
At first it was like I was just learning the syntax and thinking that I know the language as a whole and when I was finished with learning the syntax I switched languages to move onto learning a new language.
I started to realize the mistake I was making while I was working with C# but the bad habit of switching was deeply ingrained in my psyche and I couldn’t resist the temptation to switch to Java and just like all bad habits, this one had its way on me, and I gave in to the temptation.
“Every moment of resistance to temptation is a victory” — Frederick William Faber
But after I started with Java I held my ground, unfazed by the temptation to switch again, I resisted it, I did not give in to my temptations. And I ended up working with Java for a long time and learnt Native Android Development with Java and worked on many projects myself which helped me get better at Java and helped improve my problem solving skills.
Self Doubt :
One of the biggest problems I had and still do to some extent, is doubting myself. I often doubt my abilities and think that I haven’t learned anything in all this time that I have spent trying to learn to code, maybe this is not for me? or maybe I’m not smart enough?
This actually is the toughest battle you will have to fight, cause you have to fight against yourself and defeat your deepest emotions.
Most of the times when I try recalling the code that I had learnt last week, my mind comes back blank. This is what instills the self doubt in my mind, not being able to recall something that I had just learned a week ago!
As and when I moved up the steps as a programmer I started figuring out that you never had to remember everything, but just the basics and fundamental concepts.
This is something that you learn on your journey,
Programming was never about Coding, it has always been about Problem Solving.
Just when I had this reckoning, I started gaining confidence in myself and my abilities as a programmer.
Problem solving is a skill that needs to be cultivated through a long and continuous process of practicing, Coding on the other hand, anyone can do that nowadays.
Problem solving is the factor that distinguishes a newbie Programmer and a Pro.
Cause you can’t always remember or possibly know everything about a given language, but using your problem solving skills if you can figure out how to get it that is what Matters.
Overlooking the Practice part :
The thing about switching languages too often is, well you don’t get to practice each language as much as you should.
“Programming is a skill best acquired by practice and example rather than from books” — Alan Turing.
And switching languages also meant learning new languages, and you can’t expect to keep up with both at the same time, while even you lack practice in your first language itself.
So, I stopped practicing the previous languages altogether and just focused on learning the current language and continued doing this for a while until I saw a piece of programming puzzle for C, which should’ve been easy for me to solve, I mean I know C right?
When I started with the puzzle, I stringed together a solution and I hit submit and guess what, the code didn’t work. I spent a long time playing around with that piece of code but each time I hit that submit button it would always return errors.
I was feeling low after this and I couldn’t focus on the other language that I was learning then and I had this strong feeling to go back and get some practice in C so that I can come back and solve this problem, and that is what I did.
But when I went back to C, I felt like I was learning this language all over again. Its not like I couldn’t remember anything but there was so much that I thought I knew but didn’t, most importantly the pointers concepts which I had to go back and re-learn. Doing this was detrimental to my progress in
Doing this was detrimental to the progress I had made in the current language that I was learning, cause after I got the refresher for C when I went back to it, the same thing happened again and I had to re-learn some of the concepts for this language as well.
All this just because I didn’t put in the practice a language deserves to get.
Practicing what you learn is the most essential part in all of programming, this is what helps you hone your problem solving skills.
As a beginner, all you need to know is choose a language to start with and stick with it make sure you keep practicing and then when you are comfortable enough then and only then move on to the next language and repeat the same process.
Give this a read if you are just starting out and need some help,