I realized I'm actually decent at Valinna JS since I'm pretty good at Java and Python since I've been coding in those since high school. You're right I can sometimes write code even without tutorials but after deploying it I feel like I don't know shit
I guess spending 2-3 years on a strong technical team with real projects is the only way to learn programming.
Many beginners think that the programmer's goal is to make things work, but it's not actually true. Yeah, it's applicable for money sites and some simple systems, but not for real products with $M+ investments.
You need to make things work and reduce time to production for future features. It means that you should understand architectural patterns, know common mistakes and solutions.
The best way to learn is to participate in a real project, do, and pass code reviews.
So if you are aiming to build a web dev career, start searching for a job (not solo freelance, but a real job). You'll be able to choose whatever you want after.
If you want to just make some money on Fiverr/Upwork, and don't care about growing into an Architect/CTO or just a strong senior, start doing a project about whatever you're interested in.
Speaking about React, it's a wonderful library/framework. But the biggest problem is that there are no two identical projects because React doesn't force you to have any strict architecture. So it's not the best choice for a beginner. I would suggest you switch to Angular for the front end and Nest for the back end. They have a pretty similar Dependency Injection (DI) based architecture, the same as Java Spring.
Whatever you choose (React/other framework), start making a serious project. Not something like to-do apps or a simple blog grid. Something that has a lot of logic and common "components" like:
- Registration/Authentications: Learn how to work with cookies/tokens (both BE and FE). You'll learn how to manage different layouts on the front end.
- Create a simple CRUD for some products: Learn how to validate input and handle server errors.
- Create a grid/table of products with filtration/pagination.
- Build some page that gathers data from multiple BE endpoints.
- Connect sockets: Build, for example, a feature that allows you to use only one device.
- Setup site localization
- Integrate payments (you're able to use dev accounts for paypal or stripe)
- Make some checkout processes
- Make sure that everything you've developed is easy to scale, but components are not coupled with each other. Try different store managers, learn about inbuilt and custom hooks. But don't dive too deep into details; focus on architecture and general solutions.
Last, but the most important: find a good developer who will be able to review your code and your solutions.