How to Learn to Code and Don’t Quit as a Beginner

Programming is a skill and just like any other skill (playing guitar, riding a bike or skateboarding) it requires practice. But how to approach learning how to code to have initial advantage over other aspiring programmers? In this article I will share with you tips, that every beginner should try to apply in the coding practice to minimize chance of quitting and maximize the learning outcome.

Originally posted here, on my blog Coders Bible

These tips come directly from my own experience. I believe that following at least a few can yield amazing outcomes. I reapplied all of them a few years ago, when as an established software engineer I decided to shake things up a bit and learn completely new technology (iOS programming). I noticed higher motivation and surprisingly quick learning results. Hence, you might consider these tips tested in action.


My top 3 reasons for which I got into programming are:

having freedom

Most of the software companies allow you to have up to 3 days of remote work per week. In healthy organizations, taking vacations is never something managers look at with contempt. Additionally, working hours are always flexible and the focus is not put on being mindlessly chained to your computer 8 hours a day, but rather on delivering real results.

seeing results of my work immediately

I graduated from the Faculty of Mechanical Engineering, where I was learning about pumps, gears, millers, pistons…I’m boring myself just writing about that. But unexciting classes weren’t my biggest problem. I was consuming a lot of theory about all these big machines only to have around few hours every month to see them in action (even less time to try them myself). My friends at the Faculty of Civil Engineering had similar issues. They wanted to finally see real results of their careful calculations and planning, but due to the nature of this industry they weren’t able to. Software is not like that: learn theory, practice, apply it in code, compile and BOOM — you see the output on your screen almost immediately. Experiencing results of work in such quick manner helps to stay motivated and even amazed at things you can build with your own hands.

receiving attractive salary

This probably is the most obvious. Average salary of software engineer is considerably higher than for most other career choices. I want, however, to show you exactly how much higher. Under this link you’ll find compensation for developers in many of the top tech companies. For example at Google, as you gain experience and expertise, you get promoted through levels with symbols like L3 (Software Engineer II), L4 (Software Engineer III), L5 (Senior Software Engineer) etc. By clicking on the tiles on the website, you’ll see average yearly salaries (most of them are verified). If you wish to take a look at other parts of the world here is the link to great article backed by data with top paying countries. And if you would like to go even further and find your country, then I can highly recommend this report from Economic Research Institute.

Choose a programming language

In this blog post I described 3 top reasons to learn programming in Python as a beginner. Python is easy to learn, has a big community and you can build amazing things with it (some of the fields utilizing Python are: Web Development, Artificial Intelligence, Machine Learning, Data Science and Cybersecurity). Once you learn how to code in Python it’s extremely easy to change language to something else (like Java or JavaScript) or simply stick to it and e. g. create websites. My personal programming journey has begun with Python. Later, I smoothly transitioned to Java only to end up in the Android development world using Kotlin. Python helped me immensely. If you want to quickly try Python NOW take a look at this free lecture from my course called “Learn Programming With Python for Absolute Beginners”.

Programming basics — know what to look for

  1. You know that you don’t know about a certain aspect of a skill (for example you are aware of the fact that there is something called variables in Python and you don’t know how to define them just yet, but you know you should).
  2. You don’t know that you don’t know about a certain aspect of a skill (for example you’ve never even heard of classes in programming, so it’s obvious that you don’t know how to use them, but, what’s even more dangerous, you also don’t know that you really should learn them as soon as possible).

The second category is tricky and can pose a challenge when reviewing content of a book or online course before deciding to buy it.

To help you, I’m listing topics that every quality resource designed to teach absolute beginners how to code should mention about. Alternatively, you can check the curriculum of my online course by scrolling down on this page.

  1. Variables.
  2. Basic and advanced operations on different data types.
  3. Type conversion.
  4. Boolean operations.
  5. If statements.
  6. For loops.
  7. While loops.
  8. Nesting of loops.
  9. Methods and functions.
  10. Functions scope.
  11. Collections: lists or arrays, sets, dictionaries.
  12. Operations on collections.
  13. Classes.

Learn to code with fun projects

  1. It’s fun (time really does fly by as you’re having fun).
  2. It’s not too complicated (it should challenge you, not make you depressed).
  3. It’s made for somebody (make something even a tiny bit useful for you or your friends).

Personally, I’ve coded a lot of side projects. The two that I’m about to mention are intermediate or maybe even advanced (I created them years after learning how to code), but for me they had all necessary traits:

Boardly — an app for meeting local board game players

One evening in 2018 I decided to help board game players. This amazing community had troubles meeting each other on a regular basis and deciding which games to play. Boardly allowed them to quickly find local board game buddies. Thanks to this project I’ve had an incredible opportunity to meet a ton of passionate people. Boardly also helped me to get a new job.

BeerAI — an app for recognizing beer labels using AI

This was a side project, which later became the basis of my engineering thesis (here is my engineering thesis about AI, first few pages are in Polish, but the rest — over 30 — is in English). The idea was to create a convolutional neural network in Python and train it to recognize a beer brand based on a photo of the label. It worked! It was supposed to help beer-geeks choose their beloved beverages easier.

YOU choose the programming teacher

The transformation I designed for students of my programming course.

Join a community of programmers

Facebook groups about coding can become your preferable way of finding first job, learning about IT news, asking questions or looking for recommendations about tutorials, online courses and books. Use Facebook search option and type “programming”, “Python” or “Java”, then switch results to groups. You can also visit some groups directly like Coders Bible Support Group.

Lastly, never neglect the power of face to face contact and networking. Use Meetup to learn about new technology events organized in your city. They are often filled with people eager to give you advice. Organizers usually take care of finding 2–3 speakers, which are willing to share knowledge on stage.

Correct mindset when learning how to code

The major barrier to skill acquisition isn’t intellectual…it’s emotional.

Learning something new is hard and most often we quit not because we are not smart enough, but because we are not resilient enough in the face of adversity. Your mind plays tricks on you and here are few of them to watch out for while learning programming:

frustration barrier

Frustration barrier is the unpleasant feeling we get when we are starting to learn something new (and we obviously suck at it then), but instead of commiting, we spend time looking at somebody who is a master of that skill. When I was learning to play guitar, looking at Jimmy Page’s concerts made me feel like a complete idiot and forced me to quit a few times. But the way to overcome this is by having a certain learning schedule. Set a goal of learning programming for at least 4 hours a week. Uninterrupted, focused, deliberate practice no matter what. This shifts focus from comparing yourself to others to comparing yourself to…yourself from a few days ago. Frustration barrier is bigger in our minds than in reality and each of us can wait it out with a little bit of will power.


Instagram, Snapchat, Facebook, Netflix, YouTube, Gmail and more. How to fight notifications coming from these apps and websites? The answer might surprise you: turn them off! Make it harder for yourself to get distracted by physically separating yourself from the source of distraction. When you want to focus on learning how to code between e. g. 10 AM and 11 AM, then to prepare yourself for this session sit in a quiet closed room, turn off your phone entirely and use a plugin like BlockSite to disable certain websites. When you realize you drifted off either way, be gentle to yourself. Notice that and bring attention back to learning. You’ll get better with time.

learning is a new procrastination

In his article, Max Lukominskyi says that “Knowledge is worthless unless it is applied.”. And later adds: “You consciously postpone the first step justifying this by your eagerness to broaden the knowledge and learn new things. You put the start date off justifying this by your desire to pick up new skills that would help you succeed faster. You procrastinate over chasing your own aspirations because doing the things on your own and creating your own story of success is far more complicated than reading about someone else’s one.”. That’s why books about programming are tricky, since they usually provide you only with theory whereas the thing that you need as soon as possible is practice! Keep that in mind while learning to code and always look for proper balance between consuming knowledge and applying it.

Are you ready for a job in IT?

Software Engineer & Business Technology Advisor