Learning new concepts isn’t easy, especially technical ones. It takes time, dedication and hard work to learn a new skill. Before you commit your time and effort to learning something new, explore some different techniques and find out what works best for you. In this post I’ll share some of the techniques that I use to learn.
Habits are a strong mechanism for learning new concepts. They are built to make things happen without us actually thinking about them. You don’t need to look very far to see an example of how powerful they are, just look at the bad habits some humans develop and how strong those habits can be. Developing the habit of learning can have lifelong benefits.
A habit is an ingrained impulse which is why it can be so beneficial for learning new concepts, our brains urge us to perform a routine. So how do make a new habit? Unfortunately there’s not one specific formula for creating new habits, everyone is different and their habits are all driven by different factors. That being said there is a simplified concept about how habits are formed, called the habit loop which can help explain how to develop habits.
The “habit loop” was popularized by Charles Duhigg in his book The Power of Habit and helps explain the neurological pattern that governs habits.
The idea of the habit loop is that there are three main parts of a habit, the trigger / cue , the routine and the reward.
- Trigger / Cue : The cue or trigger tells our brain its time for a specific routine. The trigger or cue could be any number of things, it could be environmental, or emotional, physical ect. For example if you pass by your favorite burger place and suddenly crave a burger, the cue could be a location or the smell of burgers on the grill.
- Routine : The routine is the action of the habit. For example, going into the burger place, buying and eating a burger.
- Reward : This is the payoff, its the part of the loop that tells our brains that this routine is awesome enough to make it automatic. Perhaps its the taste of a burger from your favorite place or the resulting endorphin release from eating comfort food.
It’s not easy to create new habits, to go from a routine that we must will ourselves to complete to something that is automatic. However as we start to reinforce the habit loop our brain starts to strengthen those connections and eventually it will become automatic.
Everyone’s going to be different but I’ll share what’s worked for me.
- Create strong, regular triggers. I set an alarm everyday at the same time and set aside a specific amount of time for learning. I try to learn in the same environment everyday, a quiet part of my home that has all everything I need for learning.
- Make the routine well defined and reasonable. I’ve often set out unreasonable goals for my routines, then fallen short of those goals and given up. For me it’s important to set out well-defined, achievable goals for my routines. This is even more important when learning technical concepts which are often difficult to digest. Be easy on yourself especially when starting a new routine. Perhaps 30 minutes a day of learning, or one small chapter or a short tutorial is reasonable. If the routine is too difficult the chances of completing it on a regular basis decreases.
- Make the reward enjoyable. I’m not saying you need to go out and buy a burger or a new pair of shoes every time you read a chapter of a new book or finish a hello world tutorial. But it needs to be enjoyable enough for you to start to reinforce the habit. For me its the reward is as simple as making a tea and having a small snack while I listen to some music.
When I was a kid going through the public school system I often struggled in classes that rigidly delivered the curriculum in one specific way. People have different talents, personalities and abilities. A learning method or content type that works for one person might not work for another, and what worked several years ago might not be as effective in a couple of years. Explore what’s out there and see what clicks with you. Here are a few different ways that are popular to learn programming concepts. Try a few out, mix them up and see what’s best for you.
- Video On Demand: VOD is a great option, you can pause, skip ahead or rewatch the content at your own pace. There are a ton of amazing Youtube channels out there for developers of all kinds. A couple of my favs are Florin Pop, The Net Ninja, Traversy Media , The Coding Train & Fun Fun Function.
- Live Stream: If you’re more of a social learner who likes to learn with groups of other people live streams can be a great option. The ability to ask questions and connect with others who share an interest is awesome. There are a ton of great platforms but I find Twitch has some of the best quality channels for programming and a couple that I really enjoy are CodingGarden and Adam13531.
- Online Courses: These can be an effective way to learn about a new concept but generally require some self-discipline and will often cost money. Make sure to spend some time reading up on specific courses, checking the reviews and seeing how often the course is updated. Codecademy & freeCodeCamp offer free courses online as well as paid tiers and Udemy has a huge amount of paid courses available.
- Documentation: If you’re learning a new piece of technology like a framework or library, documentation is always a great place to start. Your mileage may very as documentation is not always well put together or maintained. However it’s almost always the first place I visit when I’m learning about a new piece of technology. Some of my go-to docs are MDN Reference docs, React docs and the Node.js docs.
- Podcasts: I find podcasts helpful to keep up with current trends and news relating to programming. Every once in awhile though, I’ll find myself jotting down some notes about something cool I just heard. A couple of programming related podcasts I like are Syntax FM which is focused on web development, Darknet Diaries which focuses on hackers, security breaches & cybercrime and CodePen Radio which has a variety of topics about coding.
- Bootcamps: Bootcamps are another learning method to consider. They are usually short but intense periods of study that cover a wide range of topics. Bootcamps can be costly and your mileage may vary. Do your research and talk to graduates to see what there experience was like. I won’t mention any specific Bootcamps here as I have never attended one.
- Traditional Schools: Formal education isn’t a good fit for everyone and unfortunately not even accessible to everyone. It can often require significant financial resources, a large support network and a ton of hard work often including subjects you might not be interested in or find relevant. However if you need a structured schedule, curriculum, or your goals require you to have certain bona fides then formal education might be a good fit. Do your due diligence before you make a decision as the learning styles and environment can vary. Tour the schools, meet the teachers, read reviews, talk to graduates and remember that many schools are big business and you deserve to evaluate them as much as they might evaluate you.
As I mentioned, everyone is different. We’ve all got different goals, personalities, resources and commitments. These are just some examples of the learning methods and resources we can leverage to learn about programming. The takeaway is that you should spend some time trying a few different approaches, getting to know yourself and your style and see what fits best.
I know I've left out a ton of awesome content creators so please let me know some of your favorites by adding them in the comments below 👇.
Learning a new language or a new piece of technology takes hard work so its important to keep it exciting! This will help keep you interested and passionate about what you’re learning. I’ll always remember the excitement when I used
echo to display “Hello World” in Bash years ago! Did I know what a terminal was? Or the difference between a terminal and a shell? Definitely not, but I was excited about the possibilities of harnessing that magic.
Unfortunately I think its common to feel like an imposter if you don’t master the fundamentals before exploring another topic or concept, I know I’ve felt that way. This is often reinforced on social media, just hop on Twitter or even worse Reddit and I’m sure you’ll be able to find some tweet or post ridiculing some junior dev who has only been coding for a few months but is already using framework x or deploying on platform y that is deemed intermediate. Whether that noise is internal or external do yourself a favor and shut it off. Keep it exciting, build and explore something that intimidates you or you think it’s above your skill-set. By keeping things exciting you’ll enchance your motivation and want to keep learning more.
Reflection is a powerful way to enhance our learning motivation, comprehension and performance. In many of our day-to-day experiences reflection is an automatic thing. For example if I fall off my bike, I’ll probably lay there for a minute to assess the damage, then I’ll start to ask myself what happened? What can I do better to avoid that next time? Eventually after I take a minute to decompress & gain my composure, I’ll get back on my bike armed with the lessons learned and a goal of not falling off.
Here’s a couple of suggestions to help develop a model for reflection:
- Reflection doesn’t have to happen at the end: For many of us our experience with reflection is from school where the only reflecting we might have done was when we got our test results back. When used at the end of a test, course or project, reflection becomes a passive exercise. However, reflection can become an effective tool for assessing your current situation so that you might influence your future work. It can be immediate and have a powerful impact on your future.
- Don’t just evaluate: Don’t just count how many questions on a test you got wrong and summarize the reasons why. Effective reflection is deeper than just thinking about the results or process that you’re reflecting on. There is an emotional component to reflection that shouldn’t be discounted. The difference between thoughts and feelings are important and both have a role to play in reflection. How did you feel about the article you read on the prototype chain in JS? Did you feel confused? Excited? These are all helpful insights that can influence your future learning.
- Share with others: We’re human and most of us are concerned about keeping up appearances, this can be an obstacle to successful reflection. If we actually want to start taking action based on reflection then that means getting honest with where we’re currently at, and asking for help . I’m not saying rush onto Reddit and start writing about your personal reflections. Find a learning environment that supports an individuals journey and can offer you help. This could be a study group, classroom or even blogs like Dev.to!
If you need some help getting started with your own learning reflection, here’s a few questions that I’ve asked myself in the past when learning a new concept:
- How long can I concentrate on that topic without taking a break?
- What did I have the most trouble with?
- How do I feel about learning this thing?
- Is this subject/topic/thing important to me or my goals?
- What learning method works for me with this topic?
- What did I do well?
- What resources can I use to solve this problem?
- What can I do better next time?
While this might seem obvious to some people when it comes to learning a new concept, it’s such an effective way to learn that it’s worth talking about it. When you write down a concept you’ve learned, you are covering that material a second time which helps you retain that information. If you’re a visual learner than note taking is going to be a great tool and if you’re more of an auditory learner than you can try reading your notes aloud as you review them. Regardless of your natural learning style note taking should be a part of your learning process.
As developers we might reach for our favorite notes app, but research shows that taking notes by hand is more effective than using a computer. This can also be a good habit to bring into your workplace, for example if you’re taking notes during a remote meeting it can be a distraction listening to others typing on their laptop. However, it is nice to have your notes readily available and easy to search so I find that a combination of hand written and digital notes has worked well for me. I often digitize my hand written notes for reference later on. No matter how you decide to take notes, it’s important to take good notes.
Here are some ways that you can improve your note taking:
- Why are you taking these notes? Before you put pen to paper its worth taking a moment to ask yourself why you’re taking these notes. Are you studying for a certification? Are you trying to develop points on a concept for a presentation? Are you taking the notes to summarize what you’ve learned? Once you’ve determined why you are taking the notes it will be easier to take notes that work for you.
- Focus on main ideas. Don’t write everything down when you are taking notes. Focus on the content your learning and note the main ideas and important details, not every single word.
- Include diagrams. Diagrams can be a useful way to help visualize a concept and are great technique for note taking.
- Include outlines. An outline for your notes could be as simple as drawing a line on your page that separates your actual notes from keywords, cues or key points and usually includes an area for a summary. Have a look at this video that goes into detail about a popular style of note taking called Cornell Notes. Regardless of the style you might use, outlines can be helpful when organizing your notes.
In this post I shared my top 5 tips for learning new concepts. These tips are what’s worked for me. They might not work as well for me in the future and certainly might not work well for you right now. We are individuals with unique talents and personalities, and we each deserve to take the time to discover what works for us, especially when it comes to learning. Learning shouldn’t be a burden or a cause of stress, it should be an exciting and powerful experience that is accessible to everyone. Find the tools and techniques that work for you to level up your learning, and remember, your learning journey is your own.