After I published my previous article about how I became a 19-year-old software developer, hundreds of people came to me with basically the same message: "I loved reading your article, and I really want to learn how to program, but I simply can't get over that first step. It's so frustrating and overwhelming, I miss structure and motivation." I want to get as many people as possible involved in the programming language tech world, and I think that it's very important to focus on the people that are very motivated, but simply don't know how to do it.
I know that there are thousands of resources out there nowadays that will ‚??teach you how to code'. However, that's definitely not the most important part here, and that's not really what this article is about. How you structure your life around it, handling all the new information, keeping yourself motivated, and focusing on the right parts is crucial.
Yes Lydia, that sounds nice and all, but I feel like this will just be another article that will motivate me for like 10 minutes, until I'm back to binge-watching Netflix again! Before I start, I really want you to realize that if you're willing to teach yourself how to code or to learn how to code in general, you're awesome. You've already shown that you can think several steps ahead, and can push yourself far out of your comfort zone, even if you haven't done it yet! If you can be excited about learning something you don't know yet and something that feels overwhelming, you will definitely be a good developer.
I was a tutor for many years, and I often saw a pattern when students told me they weren't motivated anymore. They focused on a bigger goal, ignoring the small yet very important improvements they were making, which made them feel like they weren't getting anywhere. Although I knew that this is a very important thing to keep in mind when learning a new skill, I found myself having the exact same thoughts when I started programming. I felt like I wasn't actually making any progress, as I thought that everyone around me was so many levels higher than I was, and I would never be able to be as good at it.
While I was thinking all of this, I completely ignored many important steps that I'd already made. Before I knew it, I could write code without even having to think about it twice, and I could create more complex apps every time. Simply because I kept on comparing myself to people that had years of experience, I didn't even see this as progress. All I could think was "I'm still so far away from my goal."
The hump when learning how to program is real, and everyone struggles to get over it. The hump is bigger for some people than for others, but I really want to help you get over this. It absolutely doesn't have to be there, as it's all in your mind, but that's easier said than done. The struggle is different for everyone, but I will focus on the most common problems that people face when they learn how to program: how to deal with the new information as efficiently as possible, and how to stay motivated. I'm not going to focus on how to find the best resources, as this is very subjective.
Effectively dealing with new information
Everyone is different, and not everyone absorbs information the same way as the other. Yes, captain Obvious, but it's not as obvious as it might seem. Before you start learning how to code, you need to learn how to learn.
You'll soon find out, or probably have found out, that there are two kinds of resources that are available anywhere: online courses, and the language documentation. However, as long as you're not some kind of super-human genius, you simply won't remember all the new information by just watching courses (especially not since it's really hard to stay focused, let's not kid ourselves, they can be extremely boring) or reading a plain text. It's completely normal to feel lost and confused while watching courses or reading the docs, everyone struggles in the beginning. Programmers can have a hard time explaining code to people who don't have that much knowledge about it, without using other vague geeky terms (looking at you, Stack Overflow!).
No matter how good you think you are: don't skip the fundamentals. Always start learning a language from the start, and don't skip anything. The fundamentals are extremely important and you will regret it later if you don't pay attention to them! Yes, you can always Google it, but that will only make you a slower developer. If you're reading the documentation, start from the first page (or 1.1 in many cases) and read your way up. For some people this might seem like a waste of time, but believe me: it's not. Pay attention to the small details, and you'll thank yourself later!
If you struggle to understand the fundamentals, relax! You're going to be totally fine. How much you struggle right now absolutely doesn't indicate how good of a programmer you will be later.
After every 10 minutes, or after every paragraph you've read, explain in your own words what you've just learned. This can be pretty difficult, but you will soon find out what parts you don't quite understand yet. Teaching is the best way to learn, even if there is no one around! Pretend like you're explaining it to someone else, and once you figure out that you don't understand a certain part very well: research it right away, and write the answer down! By actually writing it down, you're thinking about the answer even more, which makes it a lot easier to remember.
Don't just listen to the course or don't just read the documentation: actively participate by having your own personal project on the side. Implement every new thing you learn, no matter how small it is! This is not as easy as it sounds, in fact, it can be very frustrating, and that's when you know you're doing it right. You improve your coding skills by doing it often, not by simply knowing it! Trust me, you are getting better at this every time you do it, even if you don't realize it!
Many people asked me how I was able to push myself to code so much on a normal day. It took me a while to find a good way to explain my thoughts behind it, but I think I finally found it!
Everyone likes to play games, no matter what type of game. People like gaming because you get instant gratification, you feel like you've accomplished something and can you see yourself becoming better at it. This is the perfect formula for motivation! I've been able to get the same experience, but while coding instead of gaming. And it's much easier than you think.
Set small goals. Not because you don't care about improvement: but because you do care about improvement. Make a todo-list of things that you want to have done on that day: maybe it's just reading 1 page, or watching 1 course, or just writing 10 lines of code. By being able to say that you've completed your whole todo-list, you will feel very fulfilled and much more confident about your progress. It's much better to say "I have done everything I wanted to do today", than saying "I've only completed 2% of the course today". Plus, even if you've only read 1 page or created 1 input field, this is still extremely important to know. Instant gratification!
Constantly remind yourself of how far you've come already. This may seem really hard because it often goes unnoticed. You don't actively see yourself progressing, but believe me: every day you code (even a little bit), you are getting better at it. The best way to do this is by having a small dairy. Explain in one sentence what you struggled with that day, and look back at it a month later. There's a very, very big chance that you now don't struggle with it at all! You can see yourself becoming better at it.
Work on a personal project you're actually interested in! Not one of the million todo-lists out there, but something you actually want to build. Now don't think of a self-driving car or a robot that can do the dishes for you, but by choosing something smaller, like recreating a website layout or a small game, you'll notice that you're much more motivated to finish it. Once the project is done, you actually have something to show: you accomplished something!
Realize that you are doing much better than you think you are. It's also called the impostor syndrome. You might feel like everyone around you knows so much more about it and is so much better at it than you: but that's simply not true. I can't emphasise it enough: you will be a good developer if you keep pushing. You've already proven that you're capable of coding simply by being motivated enough to learn it, you totally got this.
Things to always keep in mind
- Never compare yourself to other developers. Very clich√© advice, but it's crucial. Don't compare your chapter 1 to someone else's chapter 20. You will be in their position much, much faster than you think! I posted this picture above because I know that I would've felt intimidated by it if I saw this 4 months ago. Now, I just laugh at it and can even spot some mistakes I made there!
- You're making much more progress than you think. Every time you study or code, you're growing. Just accept it (I know it's hard).
- Everyone struggles in the beginning, you're not alone, and that doesn't mean you will be a bad programmer. The way you're feeling now is completely normal, and that's just a part of the learning process. Soon, you will look back at this frustration you're going through, and agree with me!
If you're able to, try to find a mentor. I had the best one I could ever wish for, and I am absolutely willing to be yours if you reach out to me. It's great if you can ask quick questions to someone and get some inspiration, this definitely helps to get over that hump.