How to geek: Learn to code like a pro

Warning! Philosophical text ahead. Skip to the next section to avoid it.

A lot of people come up with a lot of brilliant ideas. But not all of them are able to execute their ideas due to lack of programming knowledge. Lack of programming knowledge is something that can only be solved by sitting your ass down and doing a course patiently without giving any excuses. It is important to assess yourself thoroughly. If you don’t know something, you need to accept it. You can’t call yourself a web developer after editing a few HTML templates. If you want to be a web developer, stop editing templates and start building one from scratch. Speed is not more important than fundamentals. If you go after speed, you will end up becoming like season one flash.
Another thing I’ve noticed in people is, they are not able to stay motivated for more than a day. They start a course online, binge watch a few videos and then forget about it the next day. An online course is not the same as a TV show. You cannot watch it continuously and expect to not get bored. Every small concept you learn needs to be practically implemented. Implementing small concepts will play a vital role in boosting your confidence. And that in turn will allow you to stay motivated till the next day. A small exercise you can do to carry over the motivation the next day is: Take up a small concept and implement only half of it. And implement the rest the next day. That way you will be curious to see the output on the next day, and after you see the output you will feel like doing more.

In the world of programming, curiosity to explore is very important. I started to learn to code at the age of 13 like a stereotypical geek. I had the language “visual basic” as a part of my school curriculum. If you are getting into programming now, you probably haven’t even heard of visual basic because your mind is only mobile responsive. We were introduced to making window based applications. This involved creating a few text fields, fetching data from the user and giving a relevant response. We did this for the entire year. But I was not satisfied with this. I wanted to know how to make applications that involved going from one window to another based on user response. My teacher refused to teach me this because it was not in the curriculum. Also, she probably didn’t know it herself. But by the end of the year, I finally figured it out by myself. I didn’t explore anymore into window based applications after that. But when 13-year-old figures out a way to solve a problem on his own, the motivation stays for a pretty long time. That’s why starting early is important in this field.

Enough philosophical talk for today.

Two important keywords from the above section: Motivation, curiosity.
If you are learning to code from scratch, I suggest you take up a modern programming language like python, ruby etc. Don’t you dare start with C++ or JAVA (if you are a victim of the Indian education system, you have no choice. I am truly sorry).

The advantage of learning languages like python is that it has a wide verity of capabilities right out of the box. For example, python can be used for making web apps, desktop apps, crawlers, automation scripts and what not. So, it lets you explore a lot of domains at a very early stage. Based on that you can pick a domain of your choice and build your skills based on it.

And once you know one programming language, learning another is not a big deal. It can be done over a weekend.

If you want to learn your first language fast, then for god sake don’t buy a book (or an eBook). Leverage the power of the internet. Signup for a course on websites like edx, coursera, or udacity. And complete the course. Don’t watch all the videos at once, save some curiosity for the next day. You cannot go from noob to pro in one day.

When you complete the course, do some competitive programming on hackerrank (not hackerearth, their code editor sucks). This will help you think computationally. Thinking computationally is another topic for another day.

Also, do a project of your own. It doesn’t matter how small it is. (For Indians: If you are thinking about doing projects like library management system or restaurant billing system, you need to come out of the shitty zone that your school/college has put you in and think more realistically). Make something creative and interesting, it need not change the world, it just needs to change you.

I hope this gets you started. All the very best for the beautiful journey you have chosen. May the compiler be with you.