On project-based learning and self-teaching

You don't know what you don't know

programming with Bob Ross

I've been teaching myself programming and web development, consistently, for the past year or so, but I had been practicing more sporadically on and off, a couple months at a time, since about five years before. Honestly, I cannot say whether I am learning fast or slow, since the only thing I can say with certainty is that, although I have learned a lot, I know, and it becomes more evident with each new thing I learn, that I have orders of magnitude more to learn still.

One thing that makes self-teaching particularly difficult is the lack of structure. A lot of the time it is extremely difficult to know exactly what to study next. But even if you follow one of the millions upon millions of tutorials on YouTube that claim they will teach you how to code, from beginner to advanced in just one video-series; or some other resource like Odin Project or Free Code Camp, there is always something missing. At least that is my experience. And what is missing is not more information, because, some of them at least, can be extremely thorough, well-structured, and made with a lot of effort (really thank you to all the people who spend hours putting out all the amazing free content out there); furthermore, we live in the Information Era, everything is available on the internet just a few clicks away, from casual video tutorials about a particular topic, on pretty much anything you can imagine, to full pdf books that you can download for free and can be as technical as you want (ok, maybe not the most legal thing to do but...). What is actually missing from all of that is the link that ties it all together, because that is what separates information from knowledge.

For me, that link is having a real-world project. And even that can be very hard to find because I am often afraid that I do not know everything I need to know in order to take on a certain project I have in my mind. The hardest part about learning by project is that, as they say, “you don't know what you don't know”; in other words, sometimes you are stuck with a problem and have no idea where to even begin to look for the solution, and it may be in front of your eyes, but how can you see it if you don't even know that it exists?

Another thing that makes it difficult is that it becomes easy to get distracted, or get de-toured following some rabbit-hole that takes you somewhere far away from where you thought you were going... but that is not always a bad thing.

Learning by project and self-teaching in general can be chaotic, full of tangents and rabbit-holes; but it can be much more “organic” in some ways, even more “holistic”, precisely because it is not linear, it can get you researching concepts of advanced MySQL one minute, string formatting in PHP and then refreshing basic HTML form syntax the next; and then, you don't know exactly how, you spent a week mostly learning about BASH scripting and making your own little custom commands for the Linux terminal. Like in my current project of which I might write more soon. But my point here is, there lies the beauty of it.

I don't know if I have found the perfect method for self-teaching or not, I don't even know if I have found the one that works best for me. All I know is I am enjoying the journey, and is there anything more to life than that really?