🕵️‍♂️ The Art of Self-Learning: How to Teach Yourself Any Programming Concept 🤓
Lucas Lima do Nascimento

Lucas Lima do Nascimento @llxd

About: Hello 😃! I’m Lucas, a developer resident in Brazil 🇧🇷. I’m passionate about UX/UI, JavaScript, Python and my two favorite art forms: design and music!

Joined:
Dec 3, 2020

🕵️‍♂️ The Art of Self-Learning: How to Teach Yourself Any Programming Concept 🤓

Publish Date: Apr 16 '24
435 51

Introduction to Self-Learning

Firstly, let me paint you the scene. You’ve heard on the news or through a friend that the "job market for programmers is AWESOME".

You find yourself some random YouTube video or weird paid course that can teach you a few things and you think AHA! That’s what was missing!

It takes just a few days (if not hours) for you to quickly realize that programming is hard and following some random course you found online mostly just makes you good at copying things, so you end up just staring at that giant blank screen when trying to think for yourself later.

First of all, how can you learn something?

Let’s hear from the famous programmer GeoHotz:

Learning is a complex process, and it can be different for each person. For me, the easiest way to learn is to find something that motivates you to do it.

Since learning is a hard and sometimes tedious process having a clear objective can bring you far and can make you feel that you accomplished something greater or, as GeoHotz said:

you are never going to learn programming by watching a video called “Learn Programming”.

For me and other programmers I know, we love to build side projects and, as this approach of learning things by doing projects (called Project Based Learning in the academy) becomes increasingly popular due to its efficacy, portfolios, random ideas that come to mind, and even things that can help us with our hobbies become great examples of fonts of inspiration for you to learn something.

So go on! First, choose the inspiration/project for your learning. If you’re a complete beginner, start with something small. Consider, for example, a program that can show your name on the screen, along with a chosen phrase!

Still asking yourself how to classify a good project idea? Since this is especially hard for beginners, we’ll help you answer that question in the section below.

What are good ideas?

Define the idea

These are the things I look for to check if it’s a good idea for now:

  • Practicality: The idea should be something that solves a practical problem/something that interests you. This will provide you with the motivation to see the project through to the end.
  • Complexity: The complexity of the idea should match your current skill level. If you're a beginner, start with simple projects and gradually tackle more complex ones as your skills improve.
  • Interest: Choose a project that genuinely interests you. This will make the learning process more enjoyable and less of a chore.

Some good ideas for beginners could be creating a basic calculator, a simple blog, or an interactive to-do list. For more advanced learners, consider building a weather app that fetches data from an API, a real-time application, or even a simple game like Tic Tac Toe or Snake.

Image description

In fact, if you are interested in the real-time subject, we’ve written a whole step-by-step tutorial that shows you how to build your real-time voting app with WebSockets. It will teach you how to vote on a topic with friends in real time while building a completely full-stack React + NodeJS web app — a great portfolio project!

Tired of the same old ideas or completely lost trying to find one? Check this great repo containing a bunch of different links to other lists of ideas!

Choosing the Right Tools for the Job/Your Learning Subject

Choose your learning subject

A good second step is choosing the right language/tool for your project.

If you’re a complete beginner: EVERYTHING WORKS, since the main concepts of programming are the same across most programming languages. Don’t worry about any opinions on a "better language", "Better OS" or anything like that, remember, we’re trying to create something here.

No idea still? Just use JavaScript! It’s simple, has a ton of tutorials, and can make basically everything. :)

If you already have some sort of foundation in programming, use AI and some great abstractions/frameworks to get things done even faster. For example, instead of creating everything from the ground up (and probably suffering on little things along the way) you can skip repeating yourself a ton of times by using Wasp, which is a great React/Node full-stack framework that takes care of managing the boilerplate side of programming for you. 🤯

In addition, their CLI can help you start faster too. By running wasp new, you can get yourself a custom template that fits your needs. For example, if you’re building up a new SaaS, you’ll probably find a fit with OpenSaaS or if you’re creating a more specific solution, an AI code generator can help you start quickly if nothing else fits.

Wasp CLI


By the way, if you haven’t already, give our repo some love! Open-source projects like Wasp can save us a ton of time and allow us to focus on the fun parts of building web apps!

By starring the repo on GitHub you're helping us continue to make web dev faster and easier for all devs!

⭐️ Give Wasp a Star! ⭐️


Try to do it (and make some mistakes)

Hands-on practice

Now, it’s time to get our hands dirty!

A fundamental skill for you to have as a programmer is searching. There’s content everywhere, we just have to find it. Start by breaking the task at hand into smaller problems:

Let’s use the example of a simple app that allows the user to input their name so that it appears on the screen/client:

  • How can I show my name on Python?
  • How can I store text in my code?

Every question you search and find content for will generate a few more questions that hopefully are more precise towards solving the problem. You’ll probably see for yourself that a task as simple as “Showing a user’s name on the screen” can go into any depth of complexity.

How do we input and save data on the app? How do we display that data correctly? These are questions that you'll attempt to answer, and likely, fail at times. As engineers, we must determine if these questions are relevant to the solutions we're developing, in addition to addressing any uncertainties the project may raise.

Iteration cycles

It's important to find a balance between seeking answers and recognizing when a topic is irrelevant. This process contributes to our professional growth. Oh, and let’s not forget our friend AI, like Chat-GPT, which can explain and even code for us.

Remember, part of coding, as with engineering in general, involves trial and error. We try, debug, and search for solutions every day. The more we experiment, the closer we get to the desired solution. Adapting to this process quickly is a huge step in the right direction for every engineer/programmer.

But, be warned, if you’re a complete beginner, try to search things by yourself first. AI is great and can help you a ton, but it can be imprecise, and only learning by yourself will give you the ability to spot the imperfections.

Reflect on Your Progress

A mountain with path to success

It's important to regularly reflect on what you have learned so far. This could be as simple as writing a summary of the new concepts you've learned at the end of each day, or even creating a blog post or tutorial about it, or just a simple tweet. This will not only reinforce your understanding but also serve as a reference for future use (you can learn more about the concept of building in public here, it’s great for companies and it can be great for your journey too!).

Reflecting on your progress also gives you the chance to assess your strengths and weaknesses, allowing you to focus on areas that need improvement. It's like a personal feedback loop, giving you a better understanding of how you learn and how you can become more efficient at it.

This is also a great time to self-promote and show others via portfolio, for example, what and how you have done your creation!

Challenges in Self-Learning Programming

Self-learning programming has its challenges. It requires discipline, patience, and the ability to troubleshoot and learn from mistakes. Additionally, without a structured curriculum, it's easy to feel overwhelmed or lost.

Yet, it's equally important to remember that self-learning does not mean learning in isolation. Engage with other learners, share your code, and seek feedback (you can check Wasp’s Discord or other communities to start engaging, for example). This can immensely help in enhancing your understanding and improving your coding skills.

For the curriculum part, you also don’t have to search everything blindly. You can use a developer roadmap to know what are the things you should be learning at each step of the way!

Benefits of Self-Learning Programming

Despite the challenges, there are numerous benefits to self-learning programming. It allows for flexibility, fosters creativity, and can be incredibly rewarding. But nothing it’s as amazing as the sensation that you can do anything, or, in other words, the confidence you’ll gain.

When you finally create something that you enjoyed creating and realize how much you’ve learned in the process, it’s great, but, the sensation that, given enough time you can learn and create any idea that comes to mind, it’s even greater. Also, you can go at your own pace and focus on the areas that interest you most. Build projects that excite you and share your progress with others. Keep learning, keep coding, and most importantly, enjoy the journey.

Conclusion

All images from the post combined into a cycle

In conclusion, self-learning programming is an empowering journey that can unlock countless opportunities. It may be challenging at times, but the possibilities you gain are endless.

Oh, and just in case you haven’t starred Wasp’s repository, I would recommend doing so! It’s a great full-stack framework for anyone looking to get projects done even faster and easier!

⭐️ Give Wasp a star! ⭐️

And lastly, the keys to a successful self-learning journey are consistency, patience, and a healthy dose of curiosity. Embrace challenges as opportunities to grow and don't be afraid to ask for help. You are not alone in this journey, and every programmer, no matter how experienced, started where you are now.

Comments 51 total

  • vincanger
    vincangerApr 16, 2024

    great advice. I always tell people "FIND SOMETHING THAT INTERESTS YOU AND GO TRY AND BUILD IT!" haha. But I like the way GeoHotz said it better :)

    • Mihovil Ilakovac
      Mihovil IlakovacApr 16, 2024

      Noice!

    • Lucas Lima do Nascimento
      Lucas Lima do NascimentoApr 16, 2024

      Absolutely! GeoHotz has that knack for making everything sound cooler, doesn't he?

      BTW, couldn't agree more with the mantra "FIND SOMETHING THAT INTERESTS YOU AND GO TRY AND BUILD IT!" hahaha!

  • Matija Sosic
    Matija SosicApr 16, 2024

    I agree with the main point here - you can watch tutorials all you want, but getting your hands dirty is ultimately the only way to learn and understand things.

    • Lucas Lima do Nascimento
      Lucas Lima do NascimentoApr 16, 2024

      Exactly! It's like watching cooking shows versus actually being in the kitchen. You've got to feel the ingredients and burn a few recipes to succeed and finally make some great dishes!

  • Jack Bridger
    Jack BridgerApr 16, 2024

    very handy!

  • Dimitrios Mastrogiannis
    Dimitrios MastrogiannisApr 16, 2024

    Top notch advice! The way to really learn is find a project that interests you. It's like building with LEGO, you can follow the instructions and build a copy or buy a bucket of them and build something that really interests you. The fun you have along the way will keep motivating you. It really helps to have the right tools too. For us Wasp was our first introduction with full stack, but it made everything 100 times easier!

    • Lucas Lima do Nascimento
      Lucas Lima do NascimentoApr 16, 2024

      Absolutely! Building with LEGO is the perfect analogy. Following instructions can be fun, but the real magic happens when you let your imagination run wild and create something unique. Having the right tools, like Wasp for full stack, is like having that extra-special LEGO piece that makes your creation shine even brighter.

      Really glad to see your comment @mastro!

  • Juraj
    JurajApr 16, 2024

    The best way to learn is by doing it yourself; great article!

    • Lucas Lima do Nascimento
      Lucas Lima do NascimentoApr 16, 2024

      Glad you enjoyed the article! Dive in, get your hands dirty, and let the learning adventure begin. After all, there's no substitute for hands-on experience! Happy coding!

  • Lucas Lima do Nascimento
    Lucas Lima do NascimentoApr 16, 2024

    Thanks🙌!

    Keep crushing those learning goals!

  • Borzoo Moazami
    Borzoo MoazamiApr 17, 2024

    Nice post. Thank you for sharing, specially the repo you shared for getting idea.

    • Lucas Lima do Nascimento
      Lucas Lima do NascimentoApr 17, 2024

      You're welcome! I'm glad you found the post helpful, especially the repository for project ideas.

      Don't hesitate to reach out if you have any questions or need further assistance!

  • Spandan Sehgal
    Spandan SehgalApr 17, 2024

    Well explained! The advice to do it yourself and commit some mistakes is the best! You cant learn something until you do it and commit some mistakes and finally rectifiy them!

    Thank you for sharing!

    • Lucas Lima do Nascimento
      Lucas Lima do NascimentoApr 17, 2024

      Thank you for your kind words!

      Learning often comes through trial and error. Embracing mistakes as part of the learning process is essential for growth. Keep exploring, and experimenting, and don't be afraid to make mistakes along the way.

      Happy coding! 😊👍

  • Mansour Malikzada
    Mansour MalikzadaApr 17, 2024

    I found it very useful topic since i have finished a curriculum based course of full stack development and i had small projects in front end but i am always striving in time how much time we should give is 4 hours enough a day for beginners?
    I really want to be a good programmer but i have some difficulties please motivate me.

    • Lucas Lima do Nascimento
      Lucas Lima do NascimentoApr 17, 2024

      It's fantastic that you found the topic useful!😊 Investing time in self-learning after completing a curriculum-based course shows dedication. Four hours a day is a great starting point for beginners, but finding a balance that works for you is essential.

      Consistency is key, so focus on making steady progress and celebrating your achievements along the way. Keep in mind that difficulties are a natural part of the learning process.

      Stay motivated by setting achievable goals (try to find more projects using the repo mentioned in the article and some real stuff too, like freelancing), finding support here in DEV.to or mentorship, and remembering your passion for programming.

      You've got this! If you're stuck on creating small projects, I would also recommend reading Creating a more than minor side-project: From planning to release. 🚀

  • Madhu Saini
    Madhu SainiApr 17, 2024

    Great blog

    • Lucas Lima do Nascimento
      Lucas Lima do NascimentoApr 17, 2024

      Thank you so much! I'm glad you enjoyed it. If you have any more questions or topics you'd like to see covered, feel free to let me know. 😊

  • Lucas Lima do Nascimento
    Lucas Lima do NascimentoApr 17, 2024

    That's fantastic to hear! Learning should indeed be an enjoyable and continuous journey. Keep up the great work!

  • Renan Ferro
    Renan FerroApr 17, 2024

    Caraca, muito legal ver mais um Brazuca aqui pela comunidade!

    Ótimo artigo man, amassou 😀🤘🏻

    • Lucas Lima do Nascimento
      Lucas Lima do NascimentoApr 17, 2024

      Pô, massa demais ver outro brasileiro por aqui, também hahahah!

      Fico feliz que tenha gostado do artigo e valeu pelo feedback mano! 😄👍
      Se precisar de mais alguma coisa ou tiver alguma dúvida, é só chamar!

  • Silvester
    SilvesterApr 18, 2024

    Awesome. I have been teaching myself data analysis/science with the hope of starting a career in those areas but I always felt like I am not making any progress. I will definitely check out those GitHub links you shared and see if I'll find interesting project that can motivate me. Cheers

    • Lucas Lima do Nascimento
      Lucas Lima do NascimentoApr 18, 2024

      That's a great initiative! Don't be too hard on yourself—learning data analysis and science is challenging, but it's also incredibly rewarding.

      Give a check on the projects on GitHub and try to find inspiration and motivation is a really good decision!

      Remember, progress takes time, so keep pushing forward and celebrating your achievements along the way. If you ever need assistance or guidance, feel free to reach out. Cheers to your learning journey! 🌟🚀

  • cuongnp
    cuongnpApr 18, 2024

    Thanks for good article! Love it!

    • Lucas Lima do Nascimento
      Lucas Lima do NascimentoApr 18, 2024

      You're very welcome! I'm thrilled that you enjoyed the article. If you have any questions or need further assistance, feel free to ask!

  • Rasel Mollik
    Rasel MollikApr 18, 2024

    Great article!

    • Lucas Lima do Nascimento
      Lucas Lima do NascimentoApr 18, 2024

      Thank you so much! I'm glad you enjoyed it.

      If you have any questions or topics you'd like to see covered in the future, feel free to let me know!

  • Meli
    MeliApr 18, 2024

    Great advice thank you very much

    • Lucas Lima do Nascimento
      Lucas Lima do NascimentoApr 18, 2024

      You're very welcome! I'm glad the advice was helpful to you. If you need more assistance or have any questions, don't hesitate to ask. Keep up the great work! 👍

  • Ebere Richard Emelike
    Ebere Richard EmelikeApr 18, 2024

    Nice article

  • Atai Barkai
    Atai BarkaiApr 18, 2024

    Great article and couldn't agree more-
    "the easiest way to learn is to find something that motivates you to do it."

    From my past life doing physics, i can attest this holds true even outside of software. if you actually try to solve a problem you care about, you will naturally learn 20x faster

    • Lucas Lima do Nascimento
      Lucas Lima do NascimentoApr 19, 2024

      Absolutely! That principle holds true across many disciplines, including physics and software development.

      When you're genuinely interested in solving a problem or exploring a topic, learning becomes more engaging and effective.

      It's all about finding that intrinsic motivation to drive your learning forward. Thanks for sharing your perspective! It was really enriching!

  • Tung Leo
    Tung LeoApr 19, 2024

    Great post!

    • Lucas Lima do Nascimento
      Lucas Lima do NascimentoApr 19, 2024

      Thank you! I'm glad you enjoyed the post. If you have any questions or if there's anything else you'd like to see covered in future articles, feel free to let me know! 😊📝

  • Florian
    FlorianApr 19, 2024

    Thanks for the great tips! Especially the fourth tip about reflecting on your own progress is something I hadn't paid much attention so far during my learning process.

    • Lucas Lima do Nascimento
      Lucas Lima do NascimentoApr 19, 2024

      You're welcome! I'm glad you found the tips helpful, especially the one about reflecting on your progress. It's often overlooked, but taking the time to assess how far you've come can be incredibly motivating and insightful. Feel free to reach out if you need more advice or have any questions. Keep up the great work! 😊👍

  • Đoàn Trương Gia Bảo
    Đoàn Trương Gia BảoApr 20, 2024

    Really quality topics !!! Respect <3

    • Lucas Lima do Nascimento
      Lucas Lima do NascimentoApr 20, 2024

      Thank you so much for your kind words! I'm thrilled that you found the topics valuable. If you have any questions or if there's anything else you'd like to see covered, feel free to let me know. Your feedback means a lot! 🙏

  • masonericd
    masonericdApr 21, 2024

    It sounds easier than done. Sometimes you do not really know what projects you want to start with. You might think you have interest in a specific area and get started, after some progress, you will notice that you have started a new project and leaving the previous incomplete. Just keep pushing.

    • Lucas Lima do Nascimento
      Lucas Lima do NascimentoApr 21, 2024

      You're absolutely right—it can definitely be challenging to choose the right project to start with, especially when your interests might shift along the way.
      It's okay, though, to start projects and discover they're not the right fit for you — it's all part of the learning process. The key is to keep pushing forward, learning from each experience, and refining your goals and interests along the way. Eventually, you'll find projects that truly resonate with you. Stay persistent, stay curious, and keep pushing—you've got this! 💪

  • Dev Sk
    Dev SkApr 24, 2024

    Thank you dude for your advice

    • Lucas Lima do Nascimento
      Lucas Lima do NascimentoApr 24, 2024

      You're very welcome! I'm glad I could offer some helpful advice. If you ever need more guidance or have any questions, feel free to reach out. Keep up the great work, and best of luck with your endeavors! 😊👍

  • Ruben Lozano
    Ruben LozanoApr 27, 2024

    I really like this article. I agree on this. I am a marketer that I am trying to learn programming and data skills and the best way I found myself motivated and willing to keep every day is because I am a project in mind, there is something I want to build and I am want to do it. In marketing is the same, you don't know Google Analytics 4 by just checking the tutorials, you need to have your website and play with all the metrics and dimensions to understand how that works and the meaning of the numbers.

    • Lucas Lima do Nascimento
      Lucas Lima do NascimentoApr 28, 2024

      Absolutely, I couldn't agree more!

      Having a project in mind is such a powerful motivator when learning new skills, whether it's programming, data analysis, or marketing. It's through hands-on experience and experimentation that we truly grasp concepts and deepen our understanding. Just like in marketing, where diving into Google Analytics and tinkering with real data on your own website provides invaluable insights.

      Keep up the great work with your learning journey, and never underestimate the power of hands-on projects! 🚀📈

  • Eri Irawan
    Eri IrawanMay 4, 2024

    Thanks for sharing!

  • danibassprod
    danibassprodMay 8, 2024

    This helped me quite a lot, I've been learning programming self-taught for a year and sometimes I feel overwhelmed but focused no matter what!

Add comment