by Xiang Zhou

The most difficult things about learning to code by yourself — and how to tackle them

“white book on brown wooden table” by Alexander Michl on Unsplash

Many people have become interested in learning to code in recent years.

They either find their way into programming through online courses, or through offline meet ups, or are just simply trying to give it a shot.

Websites like code.org, codecademy and freeCodeCamp are becoming more and more popular. There are a huge number of coding courses out on the web, and also available on YouTube.

But coding isn’t easy. Here are some of the challenges we all face when learning to code.

1. Finding the “right” amount of time to code everyday.

If you are learning to code by yourself, chances are you have other responsibilities in life.

You could have a part time job, or a full time job, or you can be a stay at home parent. The point is, everyone is busy in this life. So how do you find the time to code everyday?

Some people may say: “Well, if you are dedicated enough, you can always find time.” True. I agree with that.

So then the question becomes: “How much time should you dedicate everyday to code? If I can only get half an hour per day, does that still count?”

This is the question only you yourself can answer. It is very hard to estimate how many hours you should code each day. Some people suggest to keep it short and sweet. 15 minutes is good enough.

On the other side of the spectrum, I’ve also heard people got into the development field within a year or so by coding 9 or 10 hours a day. If you want some motivation you can give that thread a look.

The bottom line is this: only you yourself know how much you can code everyday, and making it a habit of doing it, without getting burnt out. The last part is really important. freeCodeCamp founder Quincy Larson once said on his twitter feed:

“It is not about your daily progress, it is about progress daily.”

Here is a video about a senior developer who has been in the tech field for decades talking about how much programming programmers do each day while they are at work.

It is not gonna be the golden standard, but it will give you an idea about how to set yourself a realistic, and most importantly, sustainable plan when it comes to learning to code everyday.

2. Finding the balance between “not making a good enough progress” and “getting burnt out.”

For me personally, I struggled with this a lot.

There are days I just could not understand a single concept/code snippet from the book I was reading. It just wasn’t sinking into my brain. I would get burnt out so bad that I’d have to calm myself down, go to the balcony, and take a deep breath.

From that point onwards I would keep reminding myself not to overwork it to the point that there was no coming back.

Programming is not easy. It requires you to concentrate, especially when you are learning new stuff. It is mentally taxing, and there are times that you can’t figure it out — why your code didn’t work, or even why it did.

I found I was most productive whenever I was really concentrated on the problem I was working on right then, but at the same time I was really relaxed, enjoying the whole process.

This was when I:

Found an issue I needed to solve.

Found the solution through online forums.

Tried a bunch of different ways to solve it just to see which one worked.

I solved the issue altogether.

To cope with the fact that a lot of the stuff we are learning is quite mundane and complex (data structures and algorithms and such), I have developed this 50/50 rule whenever I am learning to code.

I use 50% of the time to do the difficult tasks, studying the basics, concepts, algorithms and such. The other 50% of the time I am doing my own projects, projects I am really passionate about. So that there is a balance when it comes to my day-to-day study.

So, to put it bluntly, you need to love what you do. Which leads us to the next point.

3. Loving what you do is the only way to survive all these obstacles.

As cliche as it sounds, sometimes this is simply just truth. If you love the path you are taking, love the job you are doing, love the direction you are going… you don’t need acknowledgements from the outside world.

This kind of fulfillment cannot be borrowed or replaced, or even worse, faked.

4. Keep coming back to coding AFTER committing to other responsibilities in life.

The reality is that when it comes to self-learning, it is never gonna be you yourself, being there, learning.

In life we all have all kinds of responsibilities we need to commit to. You might be a husband, or a wife, or someone’s parent. You need to take care of your family, or you have a job you need to attend to. Or maybe you are a student that needs to finish your diploma or degree.

With all the duties that are lying upon us, where do we find the time to code?

The truth is, sometimes you don’t or you simply just can’t. There are days that I skipped coding. The longest “break” I took was two months.

But after that, I went back to coding immediately. And I found out that I had forgotten a lot of stuff I had learnt. It can be frustrating when you pick up the same book, and you simply don’t know how to continue. “God, do I really have to re-read all the chapters and re-do all the quests again?”

This is the moment you just have to persevere, have to grind it out.

You need to tell yourself, “Okay, this first hour of study might seem really slow and not that productive. But that’s okay, I will make it up by learning more tomorrow.”

There is no way to sugarcoat this but to keep on going, keep on keeping on. Go to a coding forum or Twitter and express your frustration. But once you’ve done that, immediately go back to coding.

5. Keep yourself motived, in any way.

Self-learning is very different to attending school. There is no one around you when you are coding. There are no classmates, there are no social interactions, you cannot find that “grand ceremony” waiting for you at the end of the tunnel. Most of the time you do it alone. And most of the time, you are alone.

So you need to find some kind of motivation to keep yourself moving forward.

I check this sub reddit all the time (r/macsetups) because a lot of people there are developers. And they are using all the same powerful hardware to create the software they wanna create. There is nothing more rewarding than that.

Also reward yourself, and make it a habit.

It could be small, or it could be big. It could be a hot shower at the end of the day, or a cold beverage. Tell yourself that you are doing a great job. It is often needed when learning to code. Hang this photo on the wall in front of you — because you got to believe one day you can be the person who is sitting in front of it.

6. Do not fall into the fallacy of “learning for the sake of learning.” Go to interviews, meet ups, and apply for jobs.

There are times we can get side-tracked when learning to code. I felt that there are moments that you just want to be lazy. Not in a way that you don’t want to learn anymore, but in a way that you secretly hope that by sitting in front of your monitor all day, you don’t have to face the real challenge: Getting a job as a developer.

Do not fall into that fallacy of thinking “I am learning so that’s good enough. I will think about jobs later, when I am ready.”

This is something I should be doing more often, to be frank. To reach out to potential clients, even if it is building website for free for families and friends.

So next time when you walk into an interview, you can show what kind of work you’ve done. It will add value to your résumé. The first step is always the hardest. But you have to do it no matter what.

All of the above are challenges/situations you are gonna face on the road to becomming a developer. Acknowledge them, face them with the right attitude — those hurdles you face can only make you stronger and better.

Last but not least, happy coding! Enjoy what you are building, whether it is your project or your own future.

Follow me on Twitter, on GitHub (where I made a summary of the famous YDKJS series), and check out my website slowpacedcoding.com for more articles like this.