7 Fundamental Tips To Learn Programming
Published: Tue, Aug 10, 2021
I have been interested in coding for years. To be honest, I had several false starts in the infancy of that interest. Much of that I can chalk up due to not approaching it in a productive way. Since then, I've gained experience in "learning how to learn". My time in military IT and in college as a non-traditional student has taught me that there are effective ways to approach an unfamiliar topic. Coding is one of those topics and I have used that experience to guide my own learning. I have distilled my approach to into 7 tips that anyone can use to learn how to program.
- Find a challenge then establish a learning plan
- Focus on the basics and then dive into specifics
- Find an accountability partner or group
- Ask questions
- There is always more to learn
- You are on your own learning journey
- Write code
Find a challenge then establish a learning plan
Nothing drives personal motivation more than trying to work on something that we are interested in. Whether we are trying to satisfy curiosity, make something from nothing, or find ways to make life better for ourselves and others, what matters is finding a way to make learning meaningful.
I'm sure most of us have had an experience with a dry history class or memorizing incomprehensible formulas in a math class. Without going into a debate, rote learning is a tragedy because it does not teach us the "hows", or "whys". Luckily, we can reject this sort of learning. Treat learning as a tool for exploration and the process becomes enjoyable.
As soon as you find a challenge that is relevant to you, break it down into constituent parts. Smaller chunks are easier to examine so that you can determine a learning plan. I think that it is important to note that learning to code does not happen by itself. Sometimes there are other details to understand to make sense of what you are trying to work on. Make room for them in your plan as appropriate.
Focus on the basics and then dive into specifics
As you learn and put more together, the plan you constructed will evolve. You will better understand what you need to know to accomplish what you set out to make. You also will discover along the way that you have made some mistaken assumptions. This is expected and OK. No plan is written in stone and your learning plan is no exception.
Find an accountability partner or group
Learning technology can sometimes be a solitary endeavor. Find someone that will help you stick with your goals. Having someone to ask you where you are can give you the motivation to keep striving.
Accountability partners could be friends or family. They don't have to be into tech, just supportive! My wife's eyes glaze over as I start to explain the latest problem with my current project but she's there for me. She knows my goals and has given me encouragement on occasions where I get frustrated or distracted.
Conversely, online or distributed communities help as well. SCCodes is a perfect example! They provide a learning platform and have Slack channels where learners and mentors form a supportive environment of growth. If you're a fan of Twitter, #100daysofcode, might be right up your alley. Alex Kallaway originally created it as a means to keep himself accountable to his goals to code after work. Years later, that hashtag has a thriving community formed around it to support coders' progress.
There is a multitude of resources out there to learn how to code. The most important resource is people! Many are delighted to share their experiences and guide you in the right direction. Not only that, they can help you get unstuck if you find yourself banging your head against a particular problem.
When it comes to learning from others, a little etiquette goes a long way. Never ask people to solve a problem for you. Regardless of your intention, it comes across like it's the eleventh hour and you have some homework to submit and forget. Do a bit of research and ask clarifying questions around a confusing topic. If you're completely lost, it always helps others to describe the resources that you have already tried and why they are not helping you.
Another point of etiquette that is often forgotten in the moment: express appreciation when someone takes their time to assist. We may get excited to run off and try a new idea that someone provided us with. Conversely, we may be a bit disappointed if they are not able to make things clear immediately. Take a moment to acknowledge their assistance. It validates their willingness to help and may earn you a friend!
There is always more to learn
This is more of a reality check than a tip: there is always more to learn. The breadth of technology and its pace of change means that there will always be something to learn. Hardware speeds up. Programming languages evolve. New libraries get created and older ones fall out of favor. Weaknesses are found in encryption protocols which then get replaced. Nothing in tech stands still. It may make learning a moving target but it would not be so exciting otherwise!
You are on your own learning journey
Comparing yourself to others is a huge mistake and can be a motivation killer. There will always be someone else out there that knows more than you in any given subject. We are all on individual journeys to expertise. Some are further along than others.
Timing is also irrelevant as some of us start later. I am 43 and know that there are 20 year-olds out there with more code to their name than I do. That fact does not slow me down. I still have room to contribute and frankly enjoy the challenges coding brings.
I saved the most important for last: write code! Regardless of what else you do, start writing code early in your learning journey and keep at it. Do more than just copy exercises from tutorials. Tweak it and see what changes. Add in embellishments learned elsewhere. Experiment with ideas and allow yourself the room to make mistakes.
In the beginning, you are going to make ugly code. It will not perform well- or sometimes even at all! As is the same as all other human activities, continuous, deliberate practice produces improvement much more than seeking perfection from the start.
Over time certain tasks will become easier. This is a great time to go back and revisit some earlier work. It will make you want to cringe but you shouldn't be embarrassed by it. Rather, being able to see how ugly it is is a testament to how far along you have progressed since writing that code.
Now go out and make something!