Stop Over-Engineering Your Apps

Published on
3 mins read
--- views
Morocco adventure

Introduction

One thing I've learned after programming for four years is that not everything needs to be over-engineered. Sometimes, the simplest solution is often the best.

The development world is full of advice about "best practices" and "proper architecture", but here's the truth: speed matters. Shipping matters. And your ability to get things done efficiently is what makes you valuable in the industry.

This post will cover practical strategies for avoiding over-engineering:

  1. Choose the Right Tool for the Job: when to use website builders vs. custom code
  2. Smart Coding Practices: leveraging AI and existing solutions
  3. Tech Stack Selection: picking a stack with a strong community support and that AI loves.

Choose the Right Tool for the Job

For marketing websites, e-commerce stores, and mostly static page sites, drop the ego and use a website builder. From simple, out-of-the-box options like Squarespace to highly customizable tools like Webflow, or even niche platforms like Shopify for e-commerce, if it fits your needs, just use what works.

These platforms usually come with SEO built in and designs that look great out of the box. If a website builder can get you 80% of the way there in 20% of the time, that's often the right choice. Free yourself to focus on what actually matters.

Smart Coding Practices

When it comes to MVPs, don't be afraid to "vibe code" or use an AI website builder tool like Lovable.dev or Bolt.new. Spin up boilerplate quickly, use AI to get past the project initialization.

During development, If you're not using a tool like Cursor (or any kind of AI code completion agent), start now, but don’t depend on it. I pay the $20/month on my Cursor subscription and I never looked back, it tripled my productivity at work. More productivity = more value.

Another massive time saver: search GitHub before you code from scratch. Nine times out of ten, you'll find exactly what you're trying to build. And don't shy away from forking projects, it's one of the fastest ways to get a project / feature up and running and it’s great to also learn how other developers think and write code.

Tech Stack Selection

As for tech choices, stick with what has a strong community behind it. This isn't about chasing what’s trending but rather about ensuring you'll find answers quickly when you get stuck.

Personally, I lean into technologies that AI tools love. For example, here’s the stack that Lovable.dev builds with, the same one I use :

  • Vite for builds
  • React for frontend
  • Tailwind for styling
  • Shadcn/ui for UI

Doing so means that if things go wrong, not only do I have documentation and community support to rely on, but also the LLM models that are vastly trained on the stack that I’m conveniently using.

Conclusion: Shipping is Everything

At the end of the day, speed matters. Shipping matters. And your ability to get things done efficiently is what makes you valuable. The most elegant architecture in the world is useless if it never sees production.