So Recently I've been working on a FullStack MERN Webapp. Just to give an idea I have done a few mini projects and even worked collaboratively while I was interning. And it's almost been a year since I've started web development. However, I had not built a full-scale app yet.
But at the starting of this month, I promised myself that I'll start my project and finish it by the end of the month.
Fast forward to 15th February, I started to notice that I was having a hard time keeing track of things and decided that I should write whatever I encounter as a problem and keep in mind not to repeat when I recreate new stuff.
So here are some of the mistakes that I made while building an Webapp and probably you should avoid too.
Mistake 1: Didn't Plan the Project beforehand.
My first mistake was not having a proper guideline or context to what I wanted in my app, what designs should I adopt, how do I manage my states, how to write my APIs. Nothing, Nada.
That's essentially because I thought, since I've already worked on a collaborative workspace and have an idea how that project was build, I can easily do it on my own here.
Short answer, you can't. Even the previous project that I mentioned has been thoroughly planned, and I was a part of that too, which in turn made me overconfident and loose track of what I wanted to build.
Solution:
Always plan ahead before creating any large scale app.
Mistake-2: Not using advanced concepts such as ContextAPI or Redux for state management.
I'll admit, I knew about the concepts but didn't bother to put much thought to it until much later. By then I had already created essential parts and UIs of the app, it was functional as well. So when I made changes and added new things, the existing ones started to break. I had hard time again to manage the various states and side-effects of the app.
Solution:
Use Advanced state management systems to build large webapps.
Mistake 3: Not using libraries or packages when needed.
I don't think of this as a huge mistake but a mistake regardless. What I did was to write my own css and error displaying methods.
I eventually changed the error displays using a package but it would have been much easier if I adopted it at the start of the project. The CSS could not be refactored so I couldn't do anything about it, but still I'm proud of it that the app looks good to me and is responsive.
Solution:
Take help of packages when needed. But don't overdo it, because then the app is not yours, it belongs to those packages and libraries.
Mistake 4: Time Management
This was the one of the most essential thing that I learned while building the app.
Had I planned the app before hand I would have a rough idea, how much time each component or modules will take to be built.
I had to rush into a lot of things in the second half of the month and I could see that doing that messed my code up more than I was building. I did stress over a lot of stuff which was fairly easy.
Solution:
Manage time properly so that you get enough time to relax and rebuild stuff.
So these are the 4 essential mistakes that I learnt and will be using the solutions for my next project in the month of March. If it helps in any way do let me know! and follow my Twitter and LinkedIn.
Top comments (12)
Nice point of view there friend, but I disagree with the 3rd one.
In my opinion you should avoid libraries and packages when you can and use them when you need to save time.
Actually coding your own solution will help you better understand how this particular solution works and also you do not depend on someone elses code, which I consider a very big PLUS.
Long story short, I personally use packages and libraries only to save time, but on personal projects where the goal is to LEARN, I avoid them.
Anyway, nice post!
Oh yeah, I agree. The reason i did not want to use any packages or libraries was solely for the purpose of learning. But eventually it started to fire back, as I had hard time keeping track of where everything was.
So I reckon we can use packagaes/libraries to save some time and make our code be tad bit cleaner.
I think this is one of those marks of maturing as a developer; Developing a sense of nuance around when to use a library and when to avoid it.
I second this.
If you need to prototype mobile app quickly: Flutter + Dart;
If you need to prototype web app quickly: Svelte + TailwindCSS;
If you need to prototype desktop app quickly: Electron (if you already know web technologies) or C# etc.
Thanks for taking out time and explaining it. Tbh I'm still a beginner in Web development. So jumping right into huge frameworks or working with multiple different libraries doesn't really seem that productive to me.
However, the points that you have written will help me eventually and I will make my way to become better at it.
Also I do know Postgres and have worked with server side rendering, it truly is a work of art xD
Biggest mistake is not using a fullstack framework like RedwoodJS.
I will definitely check it out. Thanks for the suggestion
I agree with point 1, 3 ,and 4.
I would say it takes 1-2 years to build a solid application with everything from unit test to deployment (CI/CD), etc....
You should read clean architecture.
Well it was a project for educational purposes. So it doesn't really have to scale that high. But I agree, it definitely needs time to get everything into a structure.
And thanks for the suggestion. I will definitely read it.
I agree. The concepts won't really change. I'll switch it up a little and try to learn Rails
I see. What would you suggest for let's say a MERN app?
Also I meant the project design and workflow
Sorry but can you explain it a bit?