DEV Community

Cover image for The First Hurdle
Tushar
Tushar

Posted on

The First Hurdle

In my opinion, anyone who has only built small apps or coded alongside a tutorial eventually faces the same challenge when trying to build their first complete project from scratch:

Where do I even start?


This question becomes the biggest hurdle because it lays the foundation for everything that comes next. I had the exact same doubt. It's always a good idea to ask someone more experienced when you're stuck. But what if you don't have a senior to ask?

That was my situation.
Fortunately, I had AI as my senior.

AI as a Senior


This might sound like vibe coding, but it wasn't.

I never asked AI to write my project for me. Instead, I asked architectural questions:

  • What should I design first?
  • How should I structure my project?
  • Why is one approach better than another?

Understanding the why behind those decisions was much more valuable than simply getting code.

Solving the Hurdle

The biggest lesson I learned before writing any code was this:

Design first. Build later.

The first thing I designed was the database schema.

For my project, designing the database schema turned out to be a great starting point. Before writing any code, I planned what information my application would need to store. Having that clarity made it much easier to design the rest of the features because I already knew what data was available.

For example, the User schema contained fields such as:

  • fullname
  • username
  • email
  • password
  • avatar
  • thumbnail
  • createdAt
  • updatedAt

Once that was done, I designed the schemas for the remaining features as well—videos, comments, likes, subscriptions, playlists, and so on.

It felt a little slow and even boring at first, but it saved me a lot of time and prevented many design changes later in development.

My Learning

One lesson that has stayed with me is:

Before building features, design your database.

A well-thought-out database makes it much easier to design the flow of your application, connect features together, and avoid unnecessary refactoring later.

Top comments (0)