If you are visiting this website, chances are, you want to learn how to code. You most likely have an interest in algorithms and data structures. In this post, I will be discussing 5 effective methods for learning how to code and become a better developer. I strongly believe that these points apply to developers throughout the entire life, regardless of how many years of coding experience one has under their belt.

So far, in my career, I have made tonnes of mistakes when it comes to choosing a method of learning. Therefore, I want to share with many people as possible about my mistakes. Hopefully, by reading this post, I can save some software engineers and programmers a lot of time, energy and willpower.

For learning mistakes, please refer to my article on common learning mistakes made by programmers. The majority of these points are from experience. Therefore, I sincerely hope that everybody reading these posts will be able to benefit from me sharing about past mistakes.

If you have been following me, you will know that I am very dedicated and passionate about learning and empowering other developers to maximize their potential.​ If you find this article helpful, please share this article with other developers so that they will not make some of the mistakes I have made in the past. Developing good habits from the get-go will save you a lot of time, money and effort which could be invested elsewhere.

So, without further ado, I present to you 5 effective methods for learning how to code or a new technology.​

More...

1. Don't try to Understand Everything!

Allow me to elaborate. It is good to understand before proceeding. However, spending too much time trying to understand every tiny bit of a particular theory will burn you out. Staying on a single topic for too long is not only boring, it is also discouraging. Understand the basic gist of it and move on, especially if it is your first time. Come back and review the topic in the near future.

​Trying to understand something when your mental willpower is drained is a recipe for disaster. It is like blowing a weakened fire with the purpose of revitalizing it. If a fire is already close to being extinguished, the wind will only blow out the fire.

Especially when you are starting out, one of the most important, but often overlooked fact is MUSCLE MEMORY. Yes, programmers also need to develop muscle memory like most other professionals.

Eventually, by typing out the same function or method over and over again, programmers will slowly begin to understand what a particular method call does. Don't try to understand every aspect of a topic before moving an inch. The art of computer science and programming is intertwined. Practice makes perfect. Therefore, go bonkers and code as much as you can.

1.1 Concept Application​

Readers might be wondering: okay, what does this look like in practice? ​Classic example would be object-oriented programming. I've been in this rut before and spent countless hours trying to make sense of Object-oriented programming and whether or not I am going down the right track. With that being said, let me emphasize an important point.

Trust the process and do not doubt.

It is natural to not understand everything, especially if you are investigating the subject matter for the first time.

Effective learning is a process that is built upon trial and error. ​I am writing this post hoping that the trial and error process is somewhat minimized.

2. Teach Others what you want to Learn

Okay Jay, I don't think I understood what you just said. You want me to teach something that I don't even know?

Naturally, the aforementioned statement might sound counter-intuitive. However, believe me when I say that

The best way to learn something is to teach it. Click to Tweet

​Teaching is a great way to learn for the following reasons.

The very act of teaching embeds a specific goal inside the mind to learn the focus matter. Thus, it generates a strong source of motivation for the individual to work harder

It acts as a catalysts for the individual to process, digest and retain the subject.

2.1 Teaching as a Source of Motivation

The source of motivation can be intrinsic, extrinsic or both. Extrinsic motivation might come in the form of being paid or receiving an accolade of thanks. Intrinsic motivation may come in the form of feeling a sense of accomplishment. Regardless, the power of motivation often works wonders in propelling us further down the endless road of learning and discovery.

Teaching a topic generates motivation to learn new concepts and to retain the newly acquired knowledge. Click to Tweet

Teaching to learn is a win-win situation for both parties. You get to learn and fully understand a subject matter. The student is also placed on the highway of learning a new concept by hearing a distilled explanation. Furthermore, the student receives the benefit of not having to overcome certain hurdles thank to your words of wisdom.

2.2 Teaching as a Catalyst for Growth

​There is a saying that "if an individual is able to teach a subject coherently, it means that they have fully understood the subject". Teaching requires thorough research, preparation and practice. The process itself acts as a catalyst for the individual to make that knowledge theirs. Knowledge acquired in such a way is often converted and stored as long-term memory.

I can testify to the power of learning through teaching. Although I am not famous, when I teach concepts to junior developers around me, I notice that I solidify my knowledge on these topics. Try it out yourself. Teaching others can seem somewhat intimidating at first. However, like most things, the most difficult part is actually starting.

By teaching, you begin to realize just how little you know. Let this revelation fuel your passion to grow. Click to Tweet

Do I still know very little? Yes. However, I can confidently profess that I know more than I did half a year ago. Furthermore, teaching makes me realize just how much I love what I am doing. Being appreciative and thankful for what you have not only breeds humility, it stirs passion and dreams inside of you.

3. Code Everyday

By everyday, I mean everyday! How do professional athletes improve their skills? By practicing on a daily basis. Sure there can be off-days, where you take a break from it, but this should not be the norm. Name one athlete that won a gold medal by only practicing once or twice a week. Learning how to code is very similar to learning a new language or art. It takes a lot of practice! You can know everything there is to know about computers. But without practice, you won't be able to write code that is maintainable, let alone write something that people would actually want to read.

Just as a writer becomes better at writing when they consistently write, programmers become better at writing code if they actually consistently code. There is no exception to this rule. I have never met a good programmer who became good by just reading books and articles.​ I am not saying that reading books and articles are bad. It is important to build up your pool of knowledge by reading as much as you can.

If a tennis player wants to improve his/her skills, would that person attempt to do so by playing tennis or reading manuals/books about tennis? Although reading books and examining the techniques of successful people is invaluable, it cannot take place of the actual art. Tennis players become better by playing the game. For the same reasons, If I were to choose between writing code and reading about coding, I would pick coding over books any day. ​

This is why I strongly emphasize that in order to be a good programmer, you must love what you do. Answer the following question: is it easier to code on a daily basis when you love it? Professionals who excel generally love what they do.

3.1 How to Code Everyday

We have established that coding everyday is crucial to develop skills, knowledge and muscle memory. However, more often than not, individuals do not know what this looks like. Is it just copying code snippets from a textbook? Or following a guide/tutorial online. The aforementioned points are simply a means to an end.

When starting out learning to code, the previous methods are important. However, the same method will not work throughout your entire career as a software developer. There is a time and season for each learning method. What worked in the past may not continue to work. Therefore, I recommend that everybody to ask yourself the following questions. A self-diagnosis is key to ensuring that you are continually growing and learning at a optimum pace.

Before diving into the next section, here is a list of other possible suggestions to keep the coding oil burning brightly.

Diagnose yourself on a regular basis.

Work on a side project. I will expand on this point later on.

Get accountability by coding with others.

3.2 Ask Yourself Am I having fun? As mentioned previously, coding should be fun. If you are not having fun, the motivation to continue will eventually wane. If what you are doing is not fun, find some ways to spice it up. Code with a partner. Change the focus towards something that excites you. For example, if you want to build something like the bootstrap carousel from scratch, start working on that. Am I being challenged? While coding, we should feel a certain degree of challenge. Without challenge, motivation dies. Challenge gives birth to a competitive spirit and a goal. Why? Because challenges are meant to be conquered. When conquered, there is growth and joy. Each challenge should be designed to help you grow. Therefore, if you are not being challenged, find something that will challenge and stretch you.

3.3 Work on a side project!!! There is a reason why this section is orange. Side projects evoke passion, especially side projects that involve creating something that is meaningful to you. Before embarking on the side-project, do the self-diagnosis using the checklist above. Afterwards, ask yourself the following questions. Am I going to see this through to the end?

What will I learn from this side-project?

Will the side-project force me to learn something new? For example, if you wish to learn data structures and algorithms, try working on implementing some of the data structures on your own. If you are a full-stack developer, try creating a blog from scratch. Design the database, write the server logic. Build the html and CSS from scratch. This should give you a good workout. It doesn't necessarily have to be a blog, but something that will keep you motivated and be somewhat of a challenge.

3.4 Get Accountability Accountability can come in many different forms. Now days, because of the internet, we can communicate with people 10,000 miles away with a couple of clicks. Alternatively, direct accountability with a friend would also work. The whole point is to encourage one another to continue coding, even when things get difficult. Believe me when I say that there will be times when you just want to drop everything and quit. Having that person to encourage/walk you through these desert seasons is crucial. Here are some great ways to find accountability. Attend local coding meetups

If you are a junior/intermediate developer, sign up for f﻿ree ﻿code camp. Free code camp has an amazing community of individuals with similar goals and objectives.

4. Find a Mentor

Having a mentor drastically improves the speed at which you learn? Why? Chances are, the mentor has gone through some of the things that you are struggling with. Therefore, the mentor can help you break through. Not only that, mentors are a great source of information. A good mentor not only encourages you, but can explain key concepts in a way so that something would usually take a week to fully understand can be handed to you on a silver platter in a span of an hour.

If you don't have a mentor, try being the mentor that you desire for somebody else. Referring back to point two of this article, people grow when they have to teach a concept.

If you are loaded, try finding a mentor on codementor. ​Although I have not yet tried receiving mentor-ship on this site, I have heard some good reviews from individuals that I trust. I myself am definitely open and willing to try it out.

In the next upcoming section, I will be diving deeper into what I think are convincing reasons as to why finding a mentor will help you become a better programmer.

4.1 Good Mentors Inspire their Men-tees​

​A good mentor will mentor and lead through example. More often than not, a good mentor will have a tonne of art (AKA beautifully written code) on display to awe the men-tee.

Mentors can push men-tees to continue pursuing their dreams and passion through the following means.

Discussion, lectures and brainstorming sessions

Pair-programming

By connecting relationally with the men-tee

Inspiration breeds excellence. Therefore, I am a strong advocate for the statement that a mentor, men-tee relationship is synergistic. Men-tees who are passionate and grow at an astounding pace will, in turn, inspire the mentor to step up their game and continue growing. Thus, this perpetual game of tag creates a never-ending cycle of inspiring, growing, innovating and sharpening.

4.2 Mentors Add onto a Men-tee's Pool of Experience and Knowledge

Mentors are mentors because they have more experience in the field. More experience generally converts to greater knowledge. As a result, mentors provide fresh perspective to men-tees.

Time is money. Knowledge is acquired by investing time to examine, analyze and scrutinize a particular subject matter. By sharing about their experiences, mentors can enlighten their men-tees and save them from a lot of future head/heart-aches.

Mentors have their own unique set of experiences. For example, imagine if that mentor had 15 years of experience as a software engineer. Lets say you have 5. Combined, that is a whooping 20 years of experience between the two.

Needless to say, the result is far greater than the sum of its parts. Especially when we factor in the synergistic effect of inspiration shared between the two. Must I say more to convince you that having a mentor is extremely beneficial?

5. Read High Quality Code Every developer should read high quality open source code. When I first went through underscore.js and jQuery (not the entire code base), my mind was blown. Let me warn you: because the code is written by professionals, readers need to have a strong foundation in programming and in the language that the source is written in. In the the case of underscore and jQuery, the language would be JavaScript. In order to get a good open-source education, I recommend finding source code that is Relatively short (roughly around 1000 lines or less would be ideal)

Well documented. I recommend reading relatively short source code for two reasons. Firstly, short source code means readers don't have to spend as much time navigating the source to connect the pieces. Secondly, readers can fully understand shorter code bases much faster than a framework that has 100,000 lines of code. Shorter code bases such as modules are compact. Readers only see what they need to see. Therefore, When looking for open ﻿source ﻿code to read, look for ﻿﻿short, modular code to save time and maximize your learning. Click to Tweet For other languages such as Java, I have not delved into open source, because I usually work on in-house code. However, I have heard that guava is a great place to start. I am also in the process of challenging myself to read more open-source code. If you have any suggestions on great open-source code for studying purposes, please let me know via comments. Alternatively, feel free to send me an email. If you live in Seoul, hit me up and I'll buy you a drink as a way of saying "thank you".

​Closing Remarks

In conclusion, I sincerely hope that every reader got some nuggets of wisdom or practical points they can apply to their lives. If there are any points that you would like to see added onto this list, please feel free to reach out to me. ​

Additionally, if any of these points helped you out, I would love to hear about your story. Please feel free to leave a comment or email me. I believe testimonies are powerful and meaningful. It will definitely give me additional fuel to continue writing these kinds of posts.

Before doing anything else, if you want to get something out of this article, I recommend you to take out a pen and paper and start processing all the thoughts and ideas evoked. Practice makes perfect. ​

When you feel like you have maxed out, there is always room for improvement. I also suggest reading up on learning programming smartly by debunking misconceptions.​ And take a break in between these articles or during intense coding sessions. Your brain needs time to process and catch up.

Stay hydrated guys and take care. Happy learning and coding!

Jay