How to Learn Programming Fast (And Stay Motivated in the Process)
Jul 10, 2022 by Florian
Even though I taught over 200k people programming on my Youtube channel, I never actually studied computer science. What's more, I didn't even start coding until my late twenties. But I am able to pick up new programming concepts pretty fast and on most days, I can't wait to get back to my PC and start coding. So what's the secret here? Why does it come easy to me and has it always been like this?
Table of Contents
- Build Real Projects
- Intrinsic Motivation
- Escape Tutorial Hell
- Learn Topics You Would Otherwise Neglect
- You Build an Amazing Portfolio
- Start Simple
- How to Find Ideas
- It’s Still Hard, but in a Fun Way
- Conclusion
Build Real Projects
Learning to code can feel like a chore or it can feel like play, depending on the circumstances. I found that the following situations make learning new programming concepts feel tedious and boring to me (and chances are, it's the same for you):
- Learning while working on some tutorial project
- Learning while working on a project for a job
When I work on someone else's project, every problem feels like a hurdle. I don't have the patience to play around with the code. I don't want to try out different ideas and approaches. And I don't feel motivated to deep dive into a difficult topic and read up a lot about it. Instead, I just want to get over with it as quickly as possible and then return to my personal life.
But I also noticed that learning new programming concepts feels much different whenever I'm working on my very own projects. A piece of software that I either want to use myself or that I want others to use and maybe even turn into a real business. When I work on a project like this, I'm suddenly much more excited, motivated, and patient, even when it becomes difficult.
In my opinion, every programmer should have a side project, especially as a beginner. Working on your own projects is a very effective and motivating way of learning. But why is that so?
Intrinsic Motivation
Even if you love writing code, working on real apps comes with a lot of tasks that are just not that exciting. These include hunting down bugs, reading documentation and other people's code, and learning new concepts that are difficult to grasp. It's hard to stay motivated when the work is demanding and you don't have any personal connection to the project.
But when you work on your own project, you are naturally more motivated to do the hard work. Seeing your own app grow from thin air and only an idea to something that people can actually use is a very rewarding feeling. And if your app solves a problem that you have yourself that's even better, because then it also makes your own life easier, which makes it even more motivating. And if you plan to turn the app into a full-blown business, there is the extra possibility for it to make you self-employed and wealthy. Of course, I can't promise that building your own app will make you rich. But there are a lot of indie developers out there who make a living from building their own apps while having fun in the process.
Escape Tutorial Hell
Tutorial hell is what happens when you code with no real goal in mind.
Online courses are a great way to get you started on a new topic. But real learning only occurs when you encounter your own problems and find solutions to them yourself, not by having the solutions dictated to you by someone else.
Learning requires failing. By failing, struggling, and eventually solving a problem, your brain receives a stimulus to form new connections and embed this additional knowledge into its memory.
That's why, in my opinion, you should rarely watch any courses that are more than an hour long. They just spoon-feed you too much, making you not think for yourself. They also often show outdated workflows because programming frameworks change over time. Instead, focus on blog posts, Stackoverflow answers, and shorter video tutorials while searching for code solutions. Beginner courses are the exception here. They are relatively timeless and you need handholding when you have no clue how to even start. But once you have the basics down, focus on building. You don't need advanced knowledge to start doing that.
The intrinsic motivation from working on your own projects is what gives you the patience to tinker with the code and try out what works and what doesn't. Fun is an important ingredient for learning. We didn't evolve to cram boring content into our heads, but to learn through play and experimentation. And you can find the solution to almost any programming problem you can imagine with a simple Google search.
Learn Topics You Would Otherwise Neglect
This point is especially important for coders who aren't employed yet and try to become job-ready: Building a real app or website and publishing it to production is better than building a practice project and putting it on your GitHub. Why? Because it teaches you topics that are easy to sweep under the rug when you're just learning.
Building and maintaining a production-grade app requires much more than just adding a bunch of features to a new project and calling it a day. You have to go through the whole process of deploying the app, website, server, or whatever you're building. If it's a mobile app, you have to take additional steps to get it accepted in the respective app stores. Of course, you also have to make it secure. Once the project grows and has active users, you will naturally want to start writing unit tests to make sure you don't accidentally ship (potentially dangerous) bugs whenever you release a new update. You might also have to do database migrations depending on what kind of database you use. And so on and so forth.
When you build a project only for your GitHub account, these things are not vital. And since they are difficult to learn, chances are you will just ignore them. And again, having an actual purpose for why you implement something is more motivating than just doing it because someone told you you should do it. Writing a unit test that protects me from accidentally giving random people admin access to my website is motivating to me because it solves a real problem I'm having. Writing the same test in a plain practice project, on the other hand, feels like boring homework.
You Build an Amazing Portfolio
Of course, you will eventually be forced to learn these topics when you get a job. But your chances of getting hired for a good position are much higher if you can show existing experience. A published app in your portfolio is much more likely to get you noticed by recruiters than a project on GitHub because you proved that you can handle the whole process from idea inception to deployment and maintenance of the published app. And it doesn't matter how many users your app has, what matters is that you can show that you went through that whole process from start to finish.
Start Simple
It should be obvious but I want to make it clear here: Don't try to build the next Facebook when you're a beginner. The project you build should be realistic and doable by yourself (unless you want to assemble a team). Otherwise, it will lead to overwhelm and procrastination (and eventually giving up). That doesn't mean your project can't be a real business idea. Many successful indie tech startups have relatively simple code and I built my first startup attempt (a Google Chrome extension) while learning JavaScript.
Pick an idea where you can start simple (e.g. storing some data in a database rather than a full-blown online video editor) and then add more features on top of it step by step. The earlier you release something to the public, the more motivated you will be. The beautiful thing about software today is that you can ship updates quickly and easily over the internet. And every new release will give you a sense of accomplishment which reignites your motivation.
How to Find Ideas
How do you find ideas for projects to build? Try to think of something that bothers you or costs you time and that you could improve or automate with code. If it bothers you, chances are other people have this problem too. But even if not, at least you've built something useful for yourself.
For example, my first Chrome extension that I mentioned earlier made it easier for me to answer comments on my Youtube channel. No one else wanted to use the extension, but at least it made my own workflow more efficient. That, together with all the new things I learned, made building the project worthwhile for me, even though it made zero money from it.
TutHub.io, a website to find programming tutorials, was my second startup attempt. I created it because people kept asking me for tutorial suggestions in my Youtube comments. And I also often have trouble finding the best tutorials or articles on a topic between all the noise on Google. So I built something that helps me and others save time and find the "gems" more easily.
If you can't come up with an idea, pick an app that already exists but where you think that it could be improved. Then try to make it better. Remember, the most important thing is that the project excites you so you stay motivated. As long as this checkbox is ticked, the project is good for you.
What tech stack should you use to build your project? I think it makes sense to pick something you're interested in learning (and potentially get a job in later). In web development, you can build the same app with many different frameworks (and even programming languages). And it's your decision if you wanna go web-first or mobile-first. Of course, if making money is your goal, then you should prioritize the platform that makes the most sense for your product. I built TutHub.io as a website first because I wanted to learn web development, but also because it made sense for the product. I want to reach all programmers, and every smartphone can view websites, but not many people use mobile apps on desktop computers.
It’s Still Hard, but in a Fun Way
To make that clear: Working on your own projects doesn't mean everything will come easy to you. The concepts you have to learn are still difficult and there will be times of frustration and procrastination. But if you care about the project enough, you will be excited to get back to it after a short break.
Try to work on your app a little bit on most days. Don't take long stretches off where you don't touch the code at all. Learning happens more effectively in regular short intervals.
When you're stuck with a problem, step away from the PC and do something else for a while. And make sure you always get enough sleep, otherwise you're stunting your own learning process.
Conclusion
Building your own side projects is especially important if you are a programming beginner. It will teach you important concepts that you would otherwise ignore, it impresses potential employers much more than a project on GitHub, and it keeps you more motivated than following one course after another.
Once you have a job, of course, time is more scarce and you might not be motivated to spend your free time with even more coding. I think it's still a good idea to have a side project to work on, if you can find the motivation. It can reignite your curiosity to learn new topics and maybe even turn into a profitable business.
I, personally, work only part-time as a freelancer. The other half is spent working on my own projects. This is where most of my learning takes place because it comes the easiest to me. In my jobs, I mostly just apply what I already know.
Of course, there might be people who can enjoy working on someone else's project just as much. If you have fun learning new concepts in your day job, and you think you're already learning enough there, the tips from this article might not apply to you. For everyone else, I think working on your own projects is an effective recipe for becoming a great programmer while enjoying the process.
Tip: I send regular high-quality web development content to my free email newsletter. It's a great way to improve your skills and stay ahead of the curve.
Subscribe Now