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 (17)
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.
Great point!
You're absolutely right iteration and consistent practice are key to retaining any new skill, especially in coding. It’s like muscle memory; if you don’t use it, it can fade over time. I’ve found that building small projects or revisiting old codebases can help reinforce what I’ve learned, even if I’m not using a particular framework or language daily.
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.
yeees !
Build Small, Learn Small. Build Big, Learn None.' It’s such a great way to approach learning! Starting small not only makes the process less overwhelming but also allows for deeper understanding and repetition, which is crucial for retention.
I think learning a language and learning the problems for a domain specific solution are very different. There are things to learn about Node.js that have nothing to do with an e-commerce platform. There is also the hosting, styling, content, integrations. I would probably approach it from learning Node.js the language and then learning how to use it in different solutions, e.g. as an API, as a template driven server side rendered site, in a lambda/server/container, production considerations, scaling, auth, database connections, integrations, popular libraries. Also learning what the limits are and when to not use Node.js to solve a problem. Also learning the concepts but using something already put together can be a good use of time, it can save re-inventing the wheel. For example, it might be easier to get a serverless application with Baseline github.com/Baseline-JS/core instead of trying to spend the time figuring out how to get everything set up.
Honestly, I hadn’t heard of Baseline before either, but after looking into it, it sounds like an amazing tool! It’s always exciting to discover frameworks that can streamline development and let you focus on solving problems rather than reinventing the wheel.
As for Node.js projects, I think It’s all about finding the right balance between learning the language and applying it to real-world scenarios.
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.
While diving into the deep end can definitely lead to valuable insights and rapid growth, I personally lean toward a more gradual approach. For me, building a strong foundation through smaller, iterative projects helps solidify understanding before tackling complex environments. That said, I completely agree that failure is an incredible teacher.
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 😊
About PrestaShop and WooCommerce! I’ve heard similar complaints about their architecture—especially the messy database design and lack of testing. It’s impressive (and a little concerning) that they still manage to function as widely used e-commerce platforms despite these issues. 😅
You’re absolutely right that Node.js could offer some significant advantages in terms of performance, scalability, and handling concurrent users—especially when compared to older PHP-based systems.
That’s a valid concern! Node.js definitely has its strengths, but like any tool, it’s not a one-size-fits-all solution. For complex projects like e-commerce platforms, there are a lot of factors to consider—scalability, performance, and the ecosystem of libraries and tools available. While Node.js can handle e-commerce (especially with frameworks like Next.js or Nest.js), it might not always be the best choice depending on the specific requirements of the project.
If you could go back, what are some examples of projects that would be better to start with?
real-time chat application, serverless function for a specific task, static site generator, CLI tool
Yes, i get your point. I Also doch so, and Call iT weekend project.