The 7 Common Learning Mistakes Programmers Make

In this post, I will be discussing what I believe are common learning mistakes programmers make in their journey. For those that are visiting for the first time, congratulations! This is the first post where I will be sharing from personal experience.

During my journey in life, and also as a programmer, I have made tonnes of mistakes. The reason I am writing this post is so that readers will not make the same mistakes I did in the past. Please note that this post is not to criticize myself or any other individuals. Rather, it is to identify mistakes and negative patterns to empower the readers to be more intentional when learning.

I have always been a huge fan of efficiency.

Seoul, the city that I am living in (at the time of writing this post), has what is considered one of the more efficient public transportation systems. Almost everything runs on schedule. Trains come every 5-10 minutes (2-3 minutes during rush hour). Food deliveries are done in approximately 20 minutes after you place your order. Internet speed is extremely fast. Despite how well you think you are doing, there is always room for improvement.

Sometimes, identifying new methods may do the trick. In other cases, it may be snapping out of a negative mindset or pattern. In this article, I will be discussing 7 common mistakes that programmers make today when learning how to code.

The order of the list does not, in any way, reflect the weight or importance of each point in any way.


Common Learning Mistake Categories

The common learning mistakes programmers make can be classified into the following categories.

  • Habitual
  • Intentional
  • Unintentional

Out of the mentioned points, the habitual learning mistakes are often the most difficult to fix. In each of the ten points below, I will be listing whether the learning mistake is generally intentional or unintentional.

Please bear in mind that these generalizations are not indicative of your specific situation. They are merely generalizations, to help establish a starting point in your own personal search. They are, by no means, the final root cause or categorization of your specific situation or circumstance.

Whether a mistake is labelled as intentional or not, in order to get the most out of this post, please do a sober and thorough analysis of your condition

Readers should also assess whether a mistake is habitual by asking the following question.

How long has this bad learning mistake been in my life?

It is wise to discern what the root causes of these bad habits are. Why? Because root causes offer more accurate solutions and approaches to overcome these unhealthy habits.

Learning mistakes that are habitual are one of the most difficult to fix. Because these habits are developed over a span of years, it requires not only great discipline, but a consistent application and turning away from that habit to be freed from it.

Intentional learning mistakes are somewhat difficult to fix for those that are stubborn. Chances are, you either do not recognize that mistake or are too proud to admit it. However, once the psychological barriers are broken down, as long as it was not habitual, these problems can generally be fixed in a short amount of time with the right application and approach.

Unintentional mistakes, if they are not habitual are fairly easy to fix, as there is not such a strong mental and physical attachment.

Ultimately, in order to fix these common learning mistakes, the person must firstly acknowledge that it is a mistake. After the acknowledgement, it is now simply a matter of finding the right method to stop making that mistake.

1. Forceful Study (intentional)

studying what you hate stresses you out

Before you commit and enter into the programming industry, please ask yourself the following questions.

Do you love programming?

Do you have fun creating applications and tinkering with technology?

Depending on the answer, you can potentially have an either an awesome career, or end up bruised, battered, and ultimately, disillusioned.

Wait, isn't the only way you are going to get better at coding is by studying? Well, yes and no. In most cases, people grow the most when they are having fun. For me, it was the Warcraft 3 custom map, DOTA (Defense of the Ancients). In programming, the same logic also applied to me.

When I was having fun, I was learning and growing the most.

Sure, you have to put in the hours. But putting in the hours will be natural. When I played DOTA after school, time flew by like crazy. I wasn't even trying to learn the skills of heroes. Naturally, my brain began to memorize and understand how certain heroes work, as well as the limitation of the hero I was running. The bottom line is:

love what you do!

Let me cut straight to the chase. If writing code is boring and a chore to you, this profession is probably not the right choice for you. New technology comes and goes like there is no tomorrow. Software developers need to constantly learn new technology. This career path is a lifelong process of learning. Loving what you do (believe it or not) plays a huge role in determining your success.

2. Spreading too thin (unintentional)

Developers who spread themselves too thin are setting themselves up for burnout. I also crashed at one point in my life as a developer. It was not a pleasant experience. What I mean by spreading yourself too thin is attempting to learn too many technologies all at once. Trust me, you won't get far with even a single technology if you adopt this approach.

Studies have shown that the brain needs time to process information. Information that is forcefully shoved in and not properly digested will leak out eventually. What developers need to do is to practice, practice and practice. When the concept becomes second nature, you will know that it is finally yours.

My advice is this. Find your sweet spot and do not exceed that number. Through trial and error, I found that I am able to learn the most when I focus on 2-3 technologies at once. Any more than that, my ability to retain knowledge begins to dwindle.

common learning mistakes programmers make - spreading too thin

3. Aimless learning (unintentional)

Learning in it of itself is good. However, like most activities, you will get the most out the process if you have a specific goal. By specific goal, I am referring to a goal that can be both measured and achieved. After identifying the goal, the next thing you need to do is write down the steps to take in order to achieve that goal.

Ask the hard questions.

What do I need to study? What are my current strengths and weaknesses?

One of the most common mistakes I have seen (I am also guilty of this) is learning without a purpose. This can manifest in may ways.

  • Reading anything that pops up. For example, if a neat article on ES6 pops up, a person who has no specific goal might just drop what they are learning and jump onto ES6. A couple month of more down the track, all the hours placed in learning whatever it was has effectively gone down the drain.
  • Having a general idea of what to learn, but not having any idea how to go on about learning it.
  • Developing a plan, but not following it. Making adjustments to a plan is fine. However, not following it is indicative of a lack of motivation, or belief that the plan will make you become a better programmer.

The common denominator in all the aforementioned points is this.

There is no clear cut goal and/or plan

This is probably the most destructive habitual learning mistake made not only by programmers, but people in other professions. Without a clear goal, there is no destination. Learning will seem pointless. Form an achievable goal. Developing a plan and stick to it.

One of the most common learning mistakes programmers make when starting out without a goal is to hop back and forth between multiple languages without fully developing their fundamentals. Needless to say, this has the potential to stunt a person's growth. In order to learn how to run, one should first feel comfortable walking.


4. Neglecting Core Programming Skills (unintentional)

If I were to be biased, I would like to rate this as one of the biggest and the most common learning mistakes programmers make. Including myself.

As a reader, you might be wondering: What does this look like? Well, let me give you an example.

One common example would be those that hop from one language to another in a span of a couple of months. After a year or two, they look back and realize that they are not particularly well-versed in any of the programming language.

Focusing on one language and mastering the core concepts is much more beneficial. Why? Because the developer has a deeper understanding of core and advanced concepts. They don't have to focus on the idiosyncrasies of each language, but focus on a single language. Instead, the developer can focus on learning core programming concepts and paradigm. This is beneficial on multiple levels.

One, it developers depth in understanding of core programming skills. Two, having a deeper understanding of programming enables developers to pick up new tools, frameworks and even languages much more quickly.

At one point I realized that I can only get so far if I have mediocre skills and knowledge of multiple language. In programming, the fundamentals can be applied in any language that you know/learn. An example would be data structures and algorithms, string manipulation, design patterns, etc. There are much more fundamental topics that I've omitted. Even studying math will help you become a better software engineer. Why? Because the industry revolves around solving real-world problems.

Do not neglect core programming skills. These skills can be applied and build up on every new piece of technology that you work with.

5. Unhealthy Comparison (unintentional)

While this can be a powerful source of motivation, comparison is often double-edged sword. Ask yourself the following question.

Is the comparison a positive incentive/source of encouragement for me to better myself?

If the answer to the question is no, do yourself a favor and stop comparing yourself to that person. You are your own worst critic. Instead ask yourself: What can I do to become a better programmer? What are the areas I should improve on? Have I been investing into my future?

Insecurity does not do anybody a favor. You are you, and nothing you can do will change that fact. Be thankful with the current skills and resources that you have. Identify your strengths and weaknesses soberly. And lastly, play to your strengths. What makes you stand out/different from those around you? Leveraging those key strengths can give you the mental fortitude and motivation to push forward.

6. Lack of coding (unintentional)

Theory and understanding how stuff works is important. But in programming, what is also important is practice! You are reading books to learn how to code. How else are you going to learn how to code, except by applying.

I will go as far as to say even this. When learning a new programming language, copy and type in code snippets from the text book. You don't have to understand before typing. By typing it repeatedly, and running into different errors, you will begin to see how all these small pieces come together. Believe it or not, programmers also have to develop muscle memory.

With that being said, I am not stating that knowledge is of little or no importance. What I am saying, is that actual practice writing out code is invaluable and should never be omitted/neglected.

What are some good ways to commit to coding?

  • Set aside a specific time period during the day. In this time block, only write code. Do not do anything else. For example, I spend an hour from 9pm - 10pm everyday and write code that has something to do with my goals.
  • Practice by solving problems. In the next sub-section, I will provide a list of recommended websites for practicing coding.

Recommended Sites to Practice Coding

Below are a list of recommended sites to practice coding. In this specific situation, I am referring to coding as becoming familiar with a language and solving a problem via code (not mathematics). Therefore, I will give more points to sites that integrate language API features and problem solving rather than those that are purely based around problem solving. With each of the recommended sites, I will provide my own personal feedback, which will hopefully aid the readers in determining what suits them the best.

  1. codewars. I love this site, because of the sheer amount of exercises, as well as the variety of difficulty. The problems on codewars are called katas. Each specific kata is designed to train challengers in different aspects of programming, such as language API, data structures and algorithms, regular expressions, etc. Each Kata are ranked based on difficulty with 8kyu being the easiest and 1kyu being the hardest. When solving problems to learn the language syntax, or if you are a junior developer, I recommend starting out with the 7 and 8kyu katas, then gradually moving into the 6kyu problems.
  2. Hacker rank problems are systematically designed to build up the overall skills of a developer by targeting key areas. However, compared to codewars, the content is lacking. Hacker rank is mainly focused around competitions, so if you like coding for money or to find a job, this might be down your alley. practice-coding-hackerrank
  3. Free code camp is a great free resource for those that want to learn full stack JavaScript web development. Most of the exercises are fairly easy, but highly interactive. They also provide great contextual help, making this platform very friendly from developers that are just starting out. The community is also very friendly and supportive.

7. Laziness (intentional)

Lets just be real. Sometimes, it is because we are lazy that we don't go anywhere. I've also struggled with laziness in the past. From experience, in most cases, laziness is habitual. However, depending on the individual and the lifestyle decisions made, the source of laziness may vary. What I can say for sure is that the final destination for laziness is absolutely nowhere!!!

Laziness is like borrowing money on super high interest. Right now, lazing around and doing nothing might be super appealing. But years down the track, when the debt collector rocks up, it is going to kick your butt. Guaranteed!

Okay, we have established that laziness is a ticking time bomb. How can we break it off our lives? According to google, laziness is

the quality of being unwilling to work or use energy; idleness.

Generally, people are unwilling to work, because there is no motivation/incentive to use energy. There can be a number of possible reasons. One could be a futile mindset, which looks something like this.

Working on a few exercises right now is not going to get me that far ahead ... I will do it tomorrow.

In the scenario above, there is a lack of motivation, because the person has adopted a mindset that states "working on coding exercises is not going to get me far ahead". However, taking those baby steps actually counts towards the greater goal, and one can easily lose sight of that goal if the exercises are boring.

One way to fight this is to ask yourself the following question. What do you want to build/achieve with your knowledge? It could start off as something simple such as a calculator. Or it can be something big like a game. Either way, find something that you want to build and make it happen. Coding becomes much more enjoyable when you start building something tangible and meaningful.

Generally, I also highly recommend working with other people who have common goals. Keeping each other accountable is beneficial for both parties.

not overcoming laziness is a huge mistake

Closing Remarks

As always, if you got something out of that, please do leave a comment or send me a message. Hearing these stories encourages me to continue producing content. However, do bear in mind that I still continue to make some of these mistakes from time to time. Identifying common learning mistakes helps us, as programmers, stay on the right track.

Lastly, I sincerely hope that everybody who read through this post did get some "AHA" moments. Once again, thank you for reading and until next time guys. Peace!


About the Author Jay

I am a programmer currently living in Seoul, South Korea. I created this blog as an outlet to express what I know / have been learning in text form for retaining knowledge and also to hopefully help the wider community. I am passionate about data structures and algorithms. The back-end and databases is where my heart is at.

follow me on: