How to Plan my First Project

I’m creating my first full stack application by myself, without any tutorials, etc. I am using the MERN stack with Passport-JWT for authentication. For an idea of complexity, it’s something like a social network. I was wondering if anyone had any tips to help me develop a clear roadmap of individual tasks? I’ve never planned something quite like this before, and it’s a bit daunting. Thanks in advance!

1 Like

There are several ways to do this. I’ll share a couple I find valuable.

Walking backwards
Start with the minimum viable results you want to achieve and then decompose. For example, if I was making a social network I might want an account, individual walls, friends, and a feed (may be more things, but that’s a good start for an example). Taking just one of those things we can start decomposing and figuring out what needs to happen to make that possible:

In order to have friends, need a capability to connect accounts -> need to have accounts -> need to define what represents an account (username, password, etc)-> need forms to register and login -> need to design a db schema to represent users and another schema for friends/connections

Following that exercise you start compiling a list of pieces you can work independently and you might find some pieces that will be used in multiple places so you can focus on making those pieces easily consumable by other pieces of code.

From there you could probably put together Entity Relationship diagrams to understand how your data will flow and what “entities” need to be represented–relationship_model

Once you have a pretty good conceptualization of what it all looks like you could start designing your code using class diagrams

These all help you decompose it into pieces that make it easy to digest and easier to plan. Others will have different approaches and that’s fine too - project planning isn’t 100% science. There’s definitely a bit of art to it. For larger scale projects like this, I like to run through the above exercises. The walking backwards exercise, I find helpful even for smaller projects. If you jump right into the technical implementation without first having looked at where you want to go and what it’ll take to get there, you’ll find you implement things that aren’t necessary.

It doesn’t have to be perfect as you’ll make many changes throughout the project, but an investment in early planning like this will help you identify major considerations, relationships, and other requirements you may not have thought of. That’s why you want to focus on what’s the minimum viable product (mvp). It forces you to focus on what’s absolutely necessary - everything else is icing on the cake and often makes the planning more difficult. After you have an MVP, adding the extra features is much easier to manage.

My 2 cents at 2AM :stuck_out_tongue: