Don't get me wrong, tutorials are amazing and helpful. For example, when you're searching for a particular type of implementation or set-up, a tutorial can solve your problem very easily. But watching tutorials is not the same as learning how to program. I noticed that people are watching youtube tutorials to become a better developer. As well as people that are watching tutorials to learn a new programming language. And that's not wrong, but if you really want to learn something, you will have to take action.
You might be thinking: "Why are you saying this, tutorials work fine for me". And that's fine of course. But you only learn by eventually doing it. Watching a tutorial could get you started, but once it's finished, the exercise is most likely done.
I had the same thing in my early days of programming. Once I completed a tutorial, I considered the application done. However it was far from done, but that's where tutorials kill the vibe. I don't want to build another Todo list application. I want to build something that is meaningful to me!
Before learning a new programming language I ask myself three questions. Those three questions are pretty simple. Grab a piece of paper or open your favorite note-taking application and write it down.
What do I want to build with it?
Why do I want to learn it?
When will I be learning it?
Starting with question one, we want to know what we are trying to solve or what we want to build. Building something that you want to build will allow you to push your limits. You will be able to learn sophisticated things and solve challenging problems. You will also look forward to learning more and improving the project in the long run.
I can't help you to pick a project that you want to build, but I can give you an example. There is this programmer, George Hotz, who you might know from being the first person that hacked an iPhone in 2007, that inspired me to use this approach. During a podcast with Lex Fridman, he said: "The only way to learn to program, I think, and the only way that anyone that I ever met who can program well. Is by having something that you want to do and just build it!".
Finding something that you want to build, will allow you to learn faster and it will keep you motivated. I don't want to discourage you in your journey, but you will have to endure hours and hours of debugging and you might even need two weeks to come up with a solution for one specific problem. But eventually, you will complete that challenge, and that feeling is amazing! Not only will this project give you something to show in a job interview, but it will also give you the confidence you need as a developer.
I asked you to write the questions down. Now it's up to you to define your "what"!
As we all know, motivation plays a big part in our learning. If you're not motivated to do something, you're most likely doing something that you don't want to do. And that makes learning difficult.
So it's time to define your why! Why do you want to learn this language? Write it down, and make sure to read it every time you're in need of some motivation.
I would say that this last question is the most important one... Maybe they're all equally important... But let's get to the point.
Building your project will take time and effort. You will have to make changes to your schedule. These changes could mean limiting your TV time. You might even have to use an alarm on the weekends. The point is that you will have to allocate time to building your project.
In my case, I work from 7:00 AM to 8:30 AM before starting my day job. This means that I have seven and a half hours a week. This is enough for me to learn new programming languages, read blogs, build on my personal website, and even write out new ideas for blog posts. In addition to that, I allocate at least four hours to writing every weekend.
I know that it's not possible for everyone to free up this amount of time. But this is where your why should come in. This why should be more important than your favorite show on TV or binge-watching Netflix. If you actually want to switch careers and leave your current job, this should be a no-brainer.
You probably know what I'm going to say next. Get that piece of paper out, open your calendar, and dedicate time to your learning. Make sure to select blocks of at least one hour and make sure you can stick to these timeslots! Consistency is key, you're not going to learn anything by doing nothing.
You have your three questions written down, you defined your project, you know why you're doing it and you have allocated the time in your schedule. Great job! I want to give you some extra tips to make sure that you can stick to your schedule.
Trial-and-error your schedule
Like in programming, where trial-and-error is used quite often, you want to test your schedule. Creating a working schedule is not easy at all. In fact, it will be hard! So many things come up, but it's important to make sure that you change your schedule if it's not working. Make small adjustments and try again next week. I'm sure that you will be able to find a working schedule in four to eight weeks of trial-and-error.
Measure your progress
In larger software projects, we use product management tools like Jira or Trello to define tasks and execute work on them. You can do the same for your smaller projects without using these kinds of tools. Notion, for example, has a roadmap template that you can start using to define features that you want to build. These tools will help you measure progress and helps you to get used to the software development flow of larger companies.
Ask for help
Building something alone could limit you. Some things will require too much time to solve alone. That's why you should ask around, get to know experienced developers that are willing to help. Twitter can be an amazing platform to start from. Other platforms like Dev or StackOverflow can be very helpful as well.
To summarise, I want you to focus on these three questions before starting your next course or tutorial. As I said, tutorials are not a bad start, but you will have to apply this knowledge. Make sure that you're in for the ride, and that you love the process. You will not only learn something new by doing this, you might even create your dream project. The process is at least as important as the results. If you're only thinking about the results, you're not going to learn anything. But if you don't measure your results, you might feel incomplete.
I'm not saying that I know it all, but in creating my own projects, I learned much more than programming. I learned how to listen to people that are way smarter than me, and put my solution aside for a better one. This is a humbling experience that is priceless. I also learned that there is much more to a project than just features. It's all about creating an experience for your users. I even learned a thing or two about marketing products. All by doing something that I like, and let's be honest, what's better than doing something you like every day?