Learning new skills can be frustrating. The natural ups and downs on the path to progress can cause learners to become stuck, encounter mental blocks, or even give up altogether. As a former college professor in the field of education, I can say with certainty, a little knowledge about educational psychology goes a long way when you want to be a successful student of code. With a few tips, you can take charge of your learning and persevere.
Set Reasonable Goals
Clever marketing will make you think you can learn Python in a day or JavaScript in a week. The truth is: you probably can't, and that's okay. If you are a beginning coder, there is a lot to learn. Sure you could memorize vocabulary words for key concepts, but there is no getting around the fact that it takes time to process the logic of writing programs and practice to make your code work. You have to start with reasonable goals, both short-term and long-term.
Your short-term goals might be to work through the Introduction to jQuery section of Code Academy this week or solve two Code War challenges over the weekend. Short-term goals are incredibly important because they give you a sense of accomplishment to motivate you to complete the long-term goals.
Your long-term goal might be to complete the Front End Certificate for FreeCodeCamp in 8 months with a career goal of getting your first developer job in a year.
Be sure you give yourself a realistic timeframe to complete your goals. A timeframe keeps you on task, as long as it is sensible. If the Udemy course you are taking has over 40 hours of videos, an unrealistic goal is to sit at the computer for 20 hours over two days and complete it.
Be Picky With the Resources You Choose
The resources that are available to learn code are vast!
I just looked at a blog post that referenced over 400 free courses to take in April 2018 alone! And that's a good thing. With so much variety, you can afford to be picky. Not every course or project is going to fit your needs, so don't try to force yourself into it. The result will most likely be frustration and the feeling that you just don't have what it takes.
Knowing your learning style will help you immensely. Think about how you best learn new information and always play to those strengths. People generally have a few dominant learning styles with the most common being auditory (do you listen to a lot of audio books or podcasts), verbal/linguistic (would you rather read the book instead of listen to it), visual (do you color code information, do you prefer figures and diagrams), or kinesthetic (do you learn by doing – manipulating and building).
If you are an auditory or verbal/linguistic learner, many resources are going to fit your needs like FreeCodeCamp, Code Academy, Udemy courses, developer podcasts. But if you are a visual or kinesthetic learner, you might need a different type of approach. For learning JavaScript, a visual learner might like Grasshopper. A kinesthetic learner might enjoy the JavaScript 30 Challenge by WesBos or Watch and Code by Gordon Zhu. Whatever your style, be sure to evaluate the resources you choose so that they meet your needs.
Build Early and Often
There is really no way around it. If you want to be a developer, you have to build.
Experts say that you need to practice a skill for over 60 days consecutively in order for it to become a habit, and it takes over 10,000 hours of practice to become an expert in something. In other words, the more you practice, the quicker you learn. The good news is, you don't have to be an expert. You just have to be able to build and troubleshoot at the beginning. Here's where goal setting is important – how many hours per week or month can you realistically set aside for building?
Once you have some coding basics down, you will naturally become inquisitive about how to do something on a website or application. Take those inquiries and make them a reality. One night out of curiosity, I looked up how to play audio files on a website, so I built a quick page with my top 5 list of songs to code to (here). It was a small, manageable project that used very beginner level code and took just a couple of hours to build. That's what is amazing about being a developer. If you can think of it, you can build it. What are you interested in besides code? Are you a dog trainer? Or a ghost hunter? Maybe a ballroom dancer? Whatever it is, you can build something around it. You're a developer!
Get Involved
My favorite part of the Harry Potter series is that Harry is not alone. Learning magic, like code, is hard, especially when the most evil wizard of all time is trying to kill you, but Harry's friends Ron and Hermione give him strength and motivation, and eventually they defeat You-Know-Who. This makes sense from the theoretical perspective of social constructivism — that we construct our knowledge through interactions with others, where each of us has strengths.
That's the goal of most study groups: to create a shared community of coders from various backgrounds with a variety of strengths. While everyone is generally working on their own projects, we happily help each other out when the need arises, and members love to collaborate on projects together. If you aren't sure how to find a study group, start with some online groups and see if there is FreeCodeCamp chapter in your area. I attend their study groups regularly.
Study groups are one thing. Meetups are another. My local JavaScript and Python groups have monthly meetings with guest speakers that both teach and inspire with a range of topics and projects, and the JavaScript meetings always have food which is a plus! I also attend events sponsored by WomenWhoCode. They have great workshops, code sessions, speakers, hack-a-thons, and put on a fabulous 2-day conference in the summer, and they started social events! Who doesn't want to see the next big superhero movie with 50 of your tech friends?
Join meetup.com and see what's available in your area. Contributing to these groups is the best way to overcome imposter syndrome, the feeling that you are a fraud.
Final Thoughts
Let's face it: learning to code is hard. It's much more than a set of foreign languages - it's a system of thinking, transforming that thinking into programs that work, and if you are lucky, you'll have a flair for design on top of that. The journey is going to be long and frustrating at times, but you can do it. Always set reasonable goals. Evaluate resources to meet your needs. Build projects based on your inspiration. Get involved in the coding community. Most importantly, take time to reflect on how far you have come. You're doing great.