​Let us discuss some common misconceptions about learning programming.

While at a cafe yesterday, working on other blog posts, I began to ponder about the life as a programmer. We spend a lot of time learning new things. Not just related to programming, but also other areas of interests. Programming actually taught me a lot about the process of learning and how to learn quickly. However, I believe still that we can often fall into the trap of not harnessing our full learning potential. Not because of laziness or other negative habits, but due to misconceptions about learning programming.

In the hopes of aiding myself in the future, and those that come across this article, I have put together a list of 4 common misconceptions about learning programming. I put this list together in the hope of aiding all programmers and aspiring programmers, regardless of where an individual is at in their journey.

Misconceptions can be made by the very best programmers. What makes misconceptions elusive is the fact that we are unable to determine for ourselves whether or not it is a misconception. It needs to be pointed out by somebody else. Some misconceptions are downright dangerous, because they create bad habits which will continue to haunt us and generate a negative snowball effect if left to go rampant in ones life as a programmer.

Without further ado, let us dive straight into these misconceptions. Please bear in mind that the order has nothing to do with the degree of significance.

More...

1. Knowing many Languages Equates to being a Good Programmer

With developers trending more to the polyglot developer model, it is easy to fall into this trap. ​I strongly believe that different context generates different values. As humans, it is natural for us gravitate towards what society perceives as valuable. There is nothing inherently wrong that in it of itself. What is wrong, however, is if we let societal influences overshadow what is truly important.

First of all, let me ask the audience: What is a programmer? ​I searched through wikipedia, techopedia.com and they all display very similar answers, which is the following:

A programmer is an individual that writes/creates computer software or applications by giving the computer specific programming instructions source link​ Source

techopedia.com

​We write computer software. Therefore, as programmers, we give computers specific commands to carry out specific instructions.

What do computer programs do? Programs solve problems. They make our lives easier and more efficient. Okay, one can argue against the previous sentence. But you get the gist right? We write programs that help us in our daily lives.

Therefore, as programmers, we need to aim to be better problem solvers. ​We also haven't directly debunked the statement made in point number one. But before we do that, we first need to define what a programming language is. So, what is a programming language. Below is my own definition and perspective.

1.1 A Programming Language is Simply a Tool Used to Solve Problems.

​Imagine you are building a wooden box. You have nails, a hammer, as well as a power drill. The woodwork is completed. Now, your main objective is to drive the nails in the right location to create a aesthetically pleasing and durable wooden box.

​Regardless of whether you use a regular hammer or a power drill, the objective is to ensure that the nails are driven into the right place.

In this analogy, the hammer and the power drill are programming languages. They are simply tools used to solve a problem. Sure, knowing how to use both tools help tremendously. But simply knowing how to use certain tools does not immediately make one a great craftsman.

Knowing how to use a wide variety of tools, such as a hammer and a power drill does not make one a great craftsman. In the same way, knowing how to use multiple programming languages does not make one a great programmer.

Great craftsmen spend time mastering their craft. If an artist were to simply work on using their brush, where would they get their inspiration from? In the same way as an artists, programmers will get nowhere if they simply focus on learning new programming language.

​Programmers can only get so far by knowing a lot of languages. Learn the underlying principles behind software engineering. Try reading a large variety of code. Analyze and scrutinize every piece of work that you come across.

Master artisans only reach mastery by pouring countless hours sharpening their skills.​

2. It is Okay to Only Know One Programming Language

Wait, what? Why is it not okay?​ Doesn't that contradict the first misconception mentioned in the previous section?

Look at it this way: ​A programmer needs to solve problems. We have already established this long ago. Do you also recall the statement that programming languages are simply tools? Well, in order to solve problems effectively, the programmer should be able to use a variety of tools.

But let me set this straight. Before learning to use a variety of tools, the programmer should have a vast array of knowledge and experience in problem solving. No matter how adapt you are at using tools, if you cannot identify what the root problem is, and how to solve that issue, all your knowledge on tools or programming language becomes meaningless. Okay, lets come back to the main topic of discussion.

My advice is this: Master your first programming language. Mastery will take a few years at the very least. While learning your first language, feel free to learn another language on the side, but be discerning. It should not be made at the expense of forfeiting mastery over your main language.

If you don't move on to learn a new language or skill after mastering a language, your growth may potentially stop.

Perhaps an analogy will clarify the previous statement. A soldier who has mastered swordsmanship will learn a lot from also practicing with the spear. They will gain insight into how spear users fight, which gives them further insight into how to deal with spear wielding warriors in combat. Furthermore, learning how to use the spear will open the warriors eyes and broaden their view on how to approach combat. Adding these pieces of knowledge will result in the warrior eventually beginning to develop a deeper understanding of not only combat, but the art of war.

In the same way, learning a new language will widen your perspective and open your eyes to new ways of dealing with the same problem.​

​The reason why programmers should know more than one language is not just for the knowledge itself.

​By learning new languages, your ability, as a developer, to pick up new technology will increase exponentially.

2.1 Learn how to learn

Frameworks, libraries as well as programming languages come and go. As a developer/aspiring programmer, your worth is determined by how easily you are able to learn and utilize new technology as they come out.

Sharpening ones mind by developing a solid foundation and a strong ability to ​learn is crucial as a programmer. Therefore, my advice here can be summed up in four words.

Learn how to ﻿﻿﻿learn﻿﻿﻿. Click to Tweet

Learning how to learn will boost your productivity exponentially. Being a developer is a lifelong journey of learning. The faster you develop this skill, the more interest it will pay down the road. In the upcoming sub-section, I will go through some neat tricks that will improve your ability to learn.

In case readers did not get it, let me summarize why it is NOT OKAY to ONLY know one or two programming language. ​

The wording itself implies a sense of complacency. I am not telling readers to be in a perpetual state of anxiety and discomfort.

Not taking opportunities to learn will result in stagnation.

2.2 Identify your Style of Learning

To maximize your productivity, it is essential that every reader finds out what their learning style is. The information below can be found on learning styles online.

By identifying your learning style and changing the way you absorb information, readers are able to learn far more quickly and retain knowledge. For example, I am a logical and visual learner. Therefore, I learn quickly when I have somebody next to me, explaining and unpacking the knowledge. Or also by watching visual diagrams, video tutorials.

Naturally, I gear my learning towards having conversation with people regarding a certain topic, teaching it or also by watching online lectures on udemy.​

3. I can Always Learn Effectively on my Own

Wrong! Trust me, I personally notice the difference in my learning speed by comparison to when I learn in a community.

Learning with a community is beneficial for the following reasons.

You can process and digest knowledge by communicating what you learnt to another individual.

Access to experienced individuals for advice and feedback.

Working in a group boosts morale in the form of encouragement and even healthy competition. Coding in a group with like-minded individuals makes the art even more enjoyable.

As a human being, we are limited, especially in the amount of time we have. Time is a non-renewable resource. By combining multiple individuals, each with their own unique set of experiences, each individual greatly benefits from the exchange. Therefore, I highly recommend readers to attempt learning in a community. It is never a zero sum game.

However, there are times when we have to learn on our own. We can't always be surrounded by developers 24/7 (unless you live with other developers) Does it have to be a time of slow learning? No! ​In the upcoming section, I will discuss some of the options for learning effectively on your own.

3.1 Learning Effectively on your own

Especially if you are just starting out, learning on your own can be quite difficult and also potentially intimidating. When you feel this way, remind yourself that

You are investing into your future. Every hour you sow in right now, you will reap back exponentially in the future.

All the coding ninjas that you see all went through the same process. It take some time, but it will be worth it.

Okay, I understand that it is important to keep myself motivated. However, what are some effective practical methods of learning on my own? Well, it all depends on you as an individual and how you learn.

Before proceeding to share about my own methods of learning, I will list all the avenues I take to learn in my downtime.

Books

Videos (youtube, udemy, frontend masters, pluralsight, etc.)

Writing Recreational Code (So Important)

A Side Project (Something that I really want to build)

Listening to what other developers have to say about a certain topic (yes, I sometimes do this during my free time)

Reading online articles

When learning, the most important metric to diagnose and examine daily was my level of motivation. I cannot emphasize this enough. Therefore, I am going to create a quote out of it.

An artisan's rate of growth is ﻿directly ﻿correlated to their level of motivation. Click to Tweet

Naturally, the follow up question will be: How do I stay motivated? I will be discussing some methods that I personally use to keep my motivation level high. But before discuss methods on how to motivate ourselves, we have to explore an area which is often neglected my most people.

3.2 Identify what Demotivates you

In order to find out how to keep yourself motivated, you must first find out what demotivates you. Let me be honest with all the readers: I love instant gratification. I want to learn and apply the things that immediately make me a better programmer. Things that don't take much effort. When I don't get that instant bang for my buck, I still sometimes feel discouraged.

I am pretty certain that most of the readers have never asked themselves this question seriously. By seriously, I mean grabbing a pen and paper and writing down a list of things that demotivate you.​

Therefore, the first step readers should take is write down a list of things that demotivate you.​ Don't worry, nobody else is going to read the list unless you choose to share it. So feel free to be as brutally honest as you want. For your reference, I will share my list of demotivators below.

Instant gratification.

Complex/boring theory.

Anything that seems difficult or goes over the top of my head.

A mountain load of things to learn. If my list of TODO piles up too high, it burns me out. For example, if I set a bar to learn and understand 10 new algorithms in a week, that will burn me out. Even the number 10 sends stress signals to my brain. By reducing the number, I am able to focus my efforts and also have fun during the process.

The side project all of a sudden, becomes boring.

Once you have completed the list (give yourself 30 minutes to an hour), then give yourself a pat on the back and let it sink. After a 5 minute break, and a nice cup of ice coffee, feel free to move onto the next step.

3.3 How to Stay Motivated

Now that we have identified our primary sources of demotivation, we are ready to find ways to keep our motivation level high.

The best way of staying motivated is to shoot demotivation down. This is why we wrote down the list in the previous section. In order to shoot down things that demotivate you, we first need to know what demotivates you. Below, I have attached a list of methods I employ to shoot these toxic thoughts down to maintain a motivated, productive and positive mindset.

Source of Demotivation How I Shoot Down The Source of Demotivation Instant gratification If what I am learning is worth the wait eventually, all the hard work will pay off.​ Complex/boring theory If I can stick through and understand this, it will make my life and current job that much easier A mountain load of things to learn Oh snap ... well, out of all these items, I will focus on the one that is most important to me in the present. Side project becomes boring Did I learn all that I wanted to from doing the side project? What can I do to make things more interesting? Oh I know. Lets refactor the code and try to write the best code that I can. Code that people will actually want to read. ​ ​

This requires quite a bit of brainstorming. Find what motivates you and use it to shoot down incoming sources of motivation.

Take some time to analyze my responses above. Do you see a pattern? If it is not clear, I am by nature, quite goal-oriented when it comes to things I am passionate about. I am results-driven. Therefore, the best way to keep myself motivated is to remind myself of the greater good and the reason WHY I am doing what I do.

Take some time to look at yourself? What are you primarily driven by? It could be entertainment. It could be the artistic aspect of programming. Whatever your source of motivation may be, first of all, you must identify it. Afterwards, leverage it to shoot down the pesky sources of motivation if you feel like it is sapping away your drive and commitment towards excellence and learning.

Also, remember that

Mastery takes time

Therefore, if you are not willing to invest time and effort into learning, don't expect any substantial growth to come your way.

4. I can Master Everything if I set my mind to it

This is true to a certain extent. However, as I mentioned before, we are constrained by resource limitations. Even if I had a million years, I still feel that it would not be enough time to fully understand everything that programming has to offer. Therefore, do not make the mistake of trying to learn everything.

Time is a ﻿non-﻿﻿renewable ﻿﻿resource. Therefore, focus on ﻿﻿what you like and ﻿﻿what you are good ﻿at. Click to Tweet

​There is a reason why developers have specific titles such as front/back-end developers. If you are interested, find out more about these r﻿﻿﻿﻿﻿oles. There is also a quiz available for you to see which category you fit into. This will save you a lot of time down the road. There is just not enough time to learn and master every aspect of computer science and programming.

Therefore, I highly recommend readers to find out what they like and are good at and specialize. If we go in deeper, there are so many other categories of developers such as database engineers, cyber-security engineers, etc.​ If you are just starting out, don't worry too much about it. Get your feet a bit wet by taking a step into each pool and figure out what is right for you.

Spreading too thin can potentially set you back to say the very least. ​

Trying to master everything can also quickly degenerate into futility and despair. This leads to another related misconception. Since the two are extreme ends, I will not be giving it a separate numbered heading of its own.

4.1 Programming is too Hard. There are just too many things to Learn.​

Especially for those that have yet to explore this field, or the journeyman who has read artistic, elegant code written by scarred veterans, it can be intimidating and demoralizing. But rest assured, you are not the only one who is/has faced this predicament.

Programming is hard if you perceive it to be. But remember, obstacles are meant to be overcome. Find accountability. Ask for help. Thanks to the internet, we have access to an almost endless pool of knowledge and support. I have talked to older developers who started their career in the 70s and 80s. Back in those days, they did not have access to the internet for knowledge. Therefore, they had to bring hundreds of pages of notes when they went on business trips overseas to build software. We are a truly a blessed generation.

We are all in the same boat. Thankfully, we have the internet in this day and age. The knowledge, experience and wisdom of hundreds of thousands of people are made available to us. Sometimes, we all need that encouragement to start.

Whether you are a journeyman or somebody who has yet to get their feet wet, the act of starting is half the battle. ​Being hungry to learn and become a better programmer will act as the fuel to continue plowing through the trenches in the battlefield of software engineering.

Wrapping Things Up

I hope that readers got something out of reading this post. If you have any suggestions/ideas I would love to hear them. Also a simple thank you and a testimonial of how this article helped you would also be highly encouraging and will spur me on to continue writing article.

Thank you for taking time to read. I hope that everybody who reads this article receives a second wind. All the best and hope you guys get back into it revitalized, renewed and refreshed!