First of all I’d like to tell you that programming is hard, especially when you are beginning! I know sometimes it can be very discouraging, but don’t make less of yourself and you have to make sure you know that all those freelancers and other people you see building nice stuff have started somewhere and in the beginning didn’t know much as well - and probably felt really lost.
Don’t be so hard on yourself. It seems that you have already learned a lot. Try looking back a while ago and compare to what you knew back then. You will surely see advance. If you focus on your achievements so far rather than the difficulties you will realize that you have already learned a lot and that is awesome!
And our industry needs people! We have a lot of demand and many opportunities lying ahead. Of course, sometimes it is not always easy to reach them, especially when starting, but with persistence I am sure you will be able to!
Ok, so my tips for you are:
- There are no better or worse languages, just languages that are better for some occasions depending on what you are trying to achieve! My only advice would be: focus on one (or two since you are going full stack!) and try and become good at it.
With those two you can surely do amazing things!
- I do believe that we learn better from practicing. Sure, it is nice to know principles and learn about things like Object Oriented Programming, Functional Programming, Design Patterns and else. But I think you would benefit better from learning on the way.
Start a personal project. Search for common architectures and patterns used on the language/framework you are using in it and try to apply them to your project. And on the way you will certainly encounter many things you don’t know (which is ok!) and then you will be able to look for them and try to understand more. But always remember that you do NOT have to know everything! Nobody does.
I also believe this way is much better for you to retain information, since you will understanding not only the concepts but how they actually apply in a development scenario!
- Start with very simple applications, maybe just a TO DO List project. And then when you feel comfortable you can start adding complexity to the projects. Be creative and think about things you’d like to build! When we are building something that we like it is certainly much more motivating.
- There are many amazing resources online - like FreeCodeCamp - and you probably already know some of them. Udemy, Pluralsight, Youtube and many more. Just go for them as much as you can, complete courses and follow tutorials; you can also use those courses/tutorials to build things as your personal projects.
- If you like it, books are also usually a very nice option, we have many amazing books in our industry and I think it is an amazing way of learning. Since you are looking to get better at your developer game I’d recommend “Clean Code” which is a nice book regarding best practices for developers.
- About your portfolio just show everything that you build - and be proud of it! In the beginning you won’t have much to show, maybe nothing at all. So you can build some personal projects to add there as well, this way you will learn a lot and also show the world the amazing things you are build and what you are learning from them.
- About the steps to becoming a full-stack developer I think you are at it already! You are already learning programming and most important of all: you are really interested and trying to be better! Don’t be afraid to look for help and ask questions, just have you mind that you (and everyone else) is always learning and also always have something to teach others.
I hope I was able to help you somehow and I also hope that you achieve the goals you set for yourself!
Best regards from someone that has been in the industry for six years now and has quite some experience, but also do not know a lot of things, is always learning and most importantly has also been where you are now!