A place where you get stuck when you go from one tutorial to another building basic projects while not gaining confidence to build one on your own.
Well, we all come starry-eyed to the world of programming, looking for the good old tutorial. But most get stuck in the constant loop of trying out beginners tutorials. Probably you are switching languages or learning another framework you want to try out. One beginners' tutorial after another, you feel like you are not going ahead.
The problem with learning programming with beginners' tutorials is that they start from the rock bottom. And while it is a good thing for beginners, once you have learned some fundamentals in a tutorial, it's counterintuitive to go back to another and learn the same thing all over again.
This happens with experienced programmers as well. Suppose you are experienced with C++ but would now like to learn Java, its frustrating to go through tutorials that explain fundamentals that you already know at a snail's pace.
I was once, a long time ago, a tutorial junkie. While I loved programming and building projects, in a matter of another language or framework always caught my attention. Then I meticulously scraped through stackoverflow, reddit and medium posts to figure out the best resources and the best tutorials and trying out multiple of them. And after learning the bare minimum and building the prescribed project, I moved along. Pouring so many hours and having learnt no more concepts than I previously had known frustrated me. I only got out of the rut and finally moved ahead when I spoke to other developers.
This is what I learned.
This is pretty simple but something most people don't.
If you are just beginning learning to code, pick out a tutorial, book, a lecture, anything you are comfortable learning with. But for the sake of yourself, try to finish it. I am not saying you need to go down the rabbit hole of trying to learn everything before you deem something as complete. Go through as much as you can, find interesting or as much as would help you build a simple end to end project. This lets you cover the fundamentals. Fundamentals are important and are used everywhere in one way or the other. Say you are learning web development and you learnt about the MVC architecture. This knowledge will be relevant in any MVC framework that you learn.
Getting hands on experience is the best thing that you can do to consolidate what you have learnt. This is my go to approach to when I suddenly need to work with a new language or a new framework or a new technology altogether. Creating a neat little project get's you going.
Some developers swear by building blogs or shopping apps to warm up.
Experience of building projects while learning is something akin to building muscle memory. Nothing else helps in your learning journey better than this.It makes you comfortable with the concepts while also allowing to help you create a codebase of the nice and nifty tools that you built along the way.
I have had tremendous help with this. For example: having the code for authentication handy is always useful when you are building a project that requires user login.
This one is important.
Reading the docs is a key skill and one of the most important habits of a good programmer. When you are good with the fundamentals, it save a tremendous amount of time in learning new concepts and good coding practices.
Here is something that will help you make a habit of this:
* If you are a learning to code via a tutorial, keep checking out the official documentation for the concepts that you just learned.
* Whenever you find a solution for a problem, lets say on stackoverflow or dev.to, look up the docs and read about the library functions, classes or modules to learn what it is actually capable of.
* If you don't understand the docs, maybe ask someone or look it up on a forum(again, stackoverflow, dev.to or anything that you fancy). When you get it, come back and bask in the glory of the doc.
* Reading what you specifically need for your project and solving it yourself is tremendously faster than watching an entire video lecture series before gathering up the courage to go try it out yourself.
Nobody knows everything about anything. So you're not alone, it's perfectly fine to ask. People are more than willing to explain and honestly, there is a treasure trove of programming questions on the internet that have already been asked(probably something that you exactly need). The noob syndrome should not hold you back.
This one is a gold mine. There is a ton of code of code available for everyone to see, go read what you like.
* Reading other's people's code gives you insight on how people think. You can learn multiple approaches to the same problem see through other people's eyes.
* A programmer spends a lot of time reading code. In my case I probably read more code than I write.
Some other tips for the beginner:
- Learn git (https://git-scm.com/docs/gittutorial)
- Learn markdown (https://guides.github.com/features/mastering-markdown/)
- Learn to write documentation (https://www.writethedocs.org/guide/writing/beginners-guide-to-docs/)
- Teach (teach a friend, teach yourself on a piece of paper or write answers on stackoverflow etc)
- Learn how to use a debugger