1.5 years ago, I set out to learn Node.js by building a fullstack e-commerce app using the MERN stack. It sounded like the perfect project at the time—challenging, practical, and impressive on a
portfolio. But looking back, I regret it.
Don’t get me wrong: the project wasn’t a waste of time. I learned a lot about Express, MongoDB, and API integrations. I even gained some experience with payment gateways and inventory management. But here’s the problem: I wasn’t trying to become an e-commerce expert. I was trying to learn Node.js.
Instead of focusing on mastering Node.js fundamentals, I spent most of my time debugging e-commerce-specific features. The complexity of the project became a distraction, pulling me away from my original learning goals.
What I Should Have Done Instead
In hindsight, I should have started with smaller, more focused projects that aligned with my goal of learning Node.js.
These projects would have allowed me to deeply understand Node.js without getting bogged down by unnecessary complexity. Once I had a solid foundation, I could have gradually taken on more ambitious projects, like an e-commerce app.
Lessons Learned
This experience taught me two important lessons:
Start Small
It's tempting to jump into big, flashy projects, but mastering the basics is far more important. Small, focused projects allow you to build a strong foundation before tackling complexity.Align Projects with Learning Goals
Choose projects that directly help you learn the skills you’re targeting. If your goal is to learn Node.js, don’t let yourself get distracted by features or technologies that aren’t relevant to that goal.
Final Thoughts
While I don’t regret the effort I put into the e-commerce app, I do regret not being more intentional about my learning journey. It’s a reminder that growth comes from focused, deliberate practice—not just ambitious projects.
What about you? Have you ever started a project that didn’t align with your learning goals? What did you do differently afterward? Let’s chat in the comments!
Top comments (8)
mhm... I think the main challenge for learning new coding skills is the iteration to keep using it. I always learn new skills, frameworks, codings. The thing is once you don't always use it over and over again, you still lose it. like learning languages.
I back this, wholeheartedly. I have found, also, by building small you can build more repetitively and get to know these languages. Build Small, Learn Small. Build Big, Learn None.
Well, looking at the rol of AI currently playing in the dev environment. I think really being able to understand complex environments and knowing how to debug is getting more valuable. And sometimes trowing yourself into the deepend provides more value insights then gradually dipping your tows in. But it is never a waist. You learn by failure.
If you could go back, what are some examples of projects that would be better to start with?
Okay, you had to learn Node.js
But I do not know if it is the best for a complex project such as an e-commerce :(
Prestashop and WooCommerce are built (pretty badly I've to say) with PHP.
Based on the last time I've checked on them, the former has a hell of a mess in the table relationships, duplicated information across entities, questionable algorithms within its methods... And the latter treats the DB as a dumpster quite literally and to say the least. None of them have any unit, integration or e2e test.
Despite these they still work... kind of... so I'll assume Node would give a bit of an advantage in performance, amount of concurrent users served and so on. If you don't mess it up badly with the rest... Why not?
It will also probably outperform python and many other scripting languages as well nowadays.
In my experience, I can say that working with JavaScript/TypeScript, however versatile they are, the complexity of the project tends to increase and they are not robust enough to support the structure.
Confirm what you say about WooCommerce and Prestashop, they are quite confused and full of code.
This is my personal opinion: I come from the environment. NET for backend development and when I worked a bit with Node.js I didn’t feel so comfortable.
How's your architecture the languages fault? 😅
If you like the default .NET thingies just replicate them when using JS/TS 😊