4 steps to learn programming faster and better (Quarantine Edition)

Kaustubh Ghude
The Startup
Published in
8 min readMay 17, 2020
Image by stokpic from Pixabay

Learning something new is hard. Learning to code can be pretty daunting. But, you can do a few things differently than most people, to add a little fun to the learning along with the bonuses of learning faster and better.

Why Quarantine Edition, you ask?

When my college declared holidays, I had decided to finally learn Game development. But, I realised that the willingness or inability to learn was never an issue, the motivation to do it every day was. So, I looked back at the time I learnt to app and web development and made a few notes.

So, this isn’t the millionth ‘How to learn coding’ article. This is an article that’ll make learning to code fun and remove the need for external motivation.

This guide is NOT limited to people new to programming and can be applied even by pros who are looking to learn something new.

#1 — Use a top-down approach

What do I mean by top-down?

The conventional way in which we have all been taught in school is bottom-up. That is, if you were to learn to code using this approach, you would be —

  • Learning ALL the concepts, methods and tips
  • Grouping similar topics and creating a deeper understanding of required areas.
  • Finally, using your experience of applying the concepts on a micro level, you build a final ‘mega’ project (say a full functioning app).

But, in a top-down approach, you turn it all upside down —

  • You decide on a few projects you want to build (more on that in the next section).
  • You break it down into multiple steps with each step involving 2–3 concepts
  • You learn and apply the concepts involved in every step

Why should I use the top-down approach?

Technically speaking, if you are a beginner at programming, I don’t expect you to go 100% with the top-down approach. Try hitting the middle ground. You can go with the top-down approach but make sure you zero in on core programming concepts and absorb them in detail.

  1. Removes the need for external motivation — With every lecture, you are learning and applying new concepts. This increases your knowledge and you make progress in the projects you are building. (‘I have to learn something new’ might not be very exciting and motivating, but building that website or app definitely is). You have some context of ‘WHY’ you are learning the concept.
  2. You don’t waste time learning unnecessary things — Because your approach is of learning and applying instantaneously, you automatically leave out the stuff that is not applied in practical use because it is outdated or is rarely used.
  3. Gamifies learning — From someone who plays loads of video games, I have spent hours trying to master them. From trying to outsmart the AI in Fifa on Ultimate mode to trying to beat GoW at the ‘Give me God of War’ difficulty (yeah Sony, I don’t fear you. 👽). Similarly, in coding as well, every day is a new challenge. You face a new opponent and conquering it will result in an increase in the skill level of your knowledge as well as your project.

Just to clarify, this doesn’t necessarily mean that bottom-up is bad. Even top-down has its downsides. It’s just that in the context of programming, there’s no way that you can master or learn everything. Thus, it makes sense to learn things that are used more commonly in real-world applications. Top-down involves more of a practical and macro approach to learning.

How to choose a project when you have no familiarity with the topics?

The most fundamental answer to this is to make something you would use. That way you won’t lose interest at the halfway point.

But this doesn’t solve the problem. As a beginner who knows next to nothing about the topics you’re yet to study, it becomes a little more challenging. Don’t worry, I’ve been there (because all top-down learning tutorials somehow managed to skip this part 💁).

Now, if you are an absolute beginner, I’d recommend deciding on several different projects with increasing levels of difficulty. Each project should involve a few core concepts. (Most of the GOOD learning resources function this way).

There are a few criteria that our project ideas must fulfil —

  1. It must be something you would use.
  2. It should not miss out on any major concept.
  3. Shoot high but remember that this is your first project in that domain. (If you’re learning to make apps, making an Instagram like app won’t be the wisest choice)

How do I make sure that my ‘idea’ does not miss out on any major concept?

It’s simple. Go to some course site like Udemy, Codecademy, Coursera or Youtube. Search for courses on your topic of interest and write down the main topics. You have a list of concepts your project must include. If you can’t incorporate all the concepts in a single project, it’s okay. You can go for 2, 3 and maybe more if you want.

If you’re having trouble in this first step, let me know and I’ll help you. You can contact me at — kaustubh8g@gmail.com

#2 — Don’t code along

This seems more like a tip and not an instruction. But hear me out. This will make all the difference.

Coding along with your instructor (be it in an online tutorial or your professor in class) is the most intuitive way to learn. That is how the majority learn. But here’s the thing, you don’t want to be like the rest, right? You want to be better than them and so, you’ll have to do things differently. There’s no point in learning something if you don’t plan on being good at it.

Also, if you think about it, coding along doesn’t make any sense. You don’t think for yourself and go about copying the code and pausing the video when you are left behind. This disrupts the flow of input to your brain. You try to do too many things at a time which rarely has a happy ending.

If code-along is so bad, why do so many people and instructors recommend it?

Coding along with the instructor is more intuitive. In school, you used to write down important points as soon as the teacher dictated them. So, intuitively, we feel like writing down code as soon as we see it on the screen. That is why so many people learn this way. And, it helps them move forward with the course without putting any effort of their own in thinking why the code works the way it does. But again, we want to better than most.

If not code-along, then what?

Break down your learning portions into chunks of approx 10 mins. That is, take a pause every 10 minutes and then try reproducing the code on your own instead of copying it. Take some time into thinking why does this code work the way it does. That is the secret to mastering the fundamentals. This will also go a long way in improving your analytical thinking and problem solving because, at the end of the day, that’s what coding is.

(10-minute chunks is something I found comfortable. You might change that according to your convenience, just make sure it isn’t too long or too short. Also, you don’t have to use a timer to stop at 10 mins. You have a lot of flexibility here)

#3 — Take notes

A lot of people skip taking notes while learning to code. They think that there’s documentation on the internet. Or that they can revisit their code if they have to refer something. Though it’s true that you don’t need to memorise code, you do need to refer it.

Now, don’t note down lines of code. Examples can be found on the internet easily. What I recommend noting down are concepts. Code examples are similar throughout. But, you have your own unique understanding of a concept. It makes sense to note it down so that when you revisit your notes, you can build on your understanding. If you did not have any notes to refer to, you would have to rebuild the foundational understanding, and not grow on it.

I love the Cornell note-taking system. Here’s a template —

Template for Cornell note-taking system

And it works like this —

How the Cornell notes system works

#4 — Struggle

Struggling is good.

When I started, I used to take up projects beyond my scope. So, it was pretty common for me to be out of my depth. I used to get stuck and struggle for hours on end on a single problem. But those were the times I experienced my maximum growth as a programmer and a developer.

Building something is full of mini — “Eureka” moments wherein you finally figure out why your code isn’t working and fix it.

Don’t worry though. It isn’t always you against all of Thanos’s army. You have various tools and people at your disposal who are there to help you out. As a beginner programmer, you’ll soon realise, that the problems you face, other people have already run into them. And luckily for us, they have documented the solutions. Sites like Stack Overflow, GitHub, Google and the official documentation of whatever language or framework you are learning are your best friends. Large communities of people contribute to sites like these to resolve more and more troubles people face while programming, every day.

Remember, growth without struggle is always linear —

But struggling leads to these spurts that lead to growing and learning exponentially —

Note — If you are using the top-down approach, you might be tempted to move on as soon as you find a solution that fits your problem. In the excitement of adding that new functionality, you might skip learning the foundations of how the solution is getting it to work.

In the end, I would like to add that the whole concept of this article revolved around the idea of improving and building every day in small increments. This helps you to avoid massive failures and automatically breaks down the problem into micro and solvable steps. And, because you are progressing every day, you smartly sidestep boredom and the need for external sources of motivation.

In the world of programming, learning never stops. You have to update yourself frequently if you want to keep up with the curve. These tips can be applied irrespective of the stage you’re at.

If you liked the article, please share it with your friends or someone who is learning to code.

If there’s anything you need help with or have any suggestions for me, you can reach me at — kaustubh8g@gmail.com

Also, make sure you follow me on twitter for cool tech and entrepreneurship updates — https://twitter.com/GhudeKaustubh

--

--