Then came Node.js.
And I mean really understanding it this time.
I personally had to let go of the idea of doing things the "proper" way from the beginning. Instead, I allowed myself to experiment with amateur setups to become comfortable with individual tools. As I discovered better approaches, I gradually incorporated them into each new project.
The most important lesson I learned throughout this experience was that doing is learning. Even if you struggle initially, it's still part of the learning process.
Mastering the fundamentals of any new topic requires time, experimentation, and skill. Beginners shouldn't feel like failures for not immediately jumping onto the latest libraries or reactive patterns of the week. It took me weeks to grasp Babel and React, and even longer to understand Isomorphic JS, WebPack, and all the surrounding libraries. Start with simplicity and build upon that foundation.
As you progress, don't be afraid to make mistakes. It's through these mistakes that you truly learn and grow. Take the time to reflect on your code, identify areas for improvement, and iterate on your solutions. Strive for clarity, readability, and maintainability in your codebase.
While it's tempting to chase after the latest trends and popular libraries, remember that they are just tools. It's essential to understand the underlying principles and concepts behind them. Prioritize learning the "why" rather than blindly following the "what." This will enable you to adapt and embrace new tools and frameworks as they emerge without feeling overwhelmed or lost.