9
What I learned from my last Programming Project
For the last few days, I've been studying Next.js, and to compliment my learning journey, I decided to create a project (a blogging website where users can create account, write blogs, read other's blogs, etc.). My intent for starting that project is to better learn Next.js by doing, and also for fun, but it turns out that I learned more than what I am expecting. I discovered more flaws of my knowledge and skills, and I am writing those down here.
Before that Next.js journey, I just know React.js, Firebase, and a little bit of some other technologies (like express.js, GraphQL, etc.). So I decided to expand my knowledge and started the #100DaysOfChallenge and shared my progress in my twitter account.
Fast forward on the last 3 days, I decided to take on a project that's been brewing in my mind while reading things about Next.js. But before I do any coding, I did some planning, and designed my blogsite in Figma, and oh, I also did specified some basic requirements or features I want to implement (turns out I haven't implemented all of 'em) and just throw them all into my kanban board (yah, I don't know how to use it properly, yet).
Even though I know how important a good plan is, I'm just too anxious to jump straight into coding, because these ideas just keep flooding in my head, so long story short is, I did just code right away (with fingers crossed things will work out as I intended to, but you know what happened), and yeah, here is when I encountered all sorts of problem.
Fast forward again to today, I just finished the first iteration of the project, I reminisced of the things I did and reflected on all of my mistakes ('cause man that codebase is so unorganized, messy, and buggy, not to mention hard to maintain, so yeah, THAT SHOULD NOT HAPPEN AGAIN... hopefully). I'm not going to write it creatively, and I'll just throw a list of my realizations.
So I'll put it this way:
"If I'm going to do the blog site again, what whould I do (before jumping straight into coding)?"
- Must clearly define the software requirements
- USER STORIES
- Utilize the V-Model (Verification and Validation Model)
- Should have a product roadmap
- Agile Methodology, and Software Development Lifecycle
- Should have learned and used Docker and DevOps
- Should have used CSS pre-processor (SCSS) too.
- I should have designed first the Data-Model of my database (it's on firebase-firestore, yah, the NO-SQL thing), because it turns out I got a hard time retrieving data in my project from firestore, especially the relational ones.
- I saw where I can use things like Dynamic Programming, Divide and Conquer, etc. on my code base, but, yeah, I haven't did that.
So this are just the things at the top of my head, and this blog have no edits or drafts, I just write what comes to my head.
These are the reflections of many of my mistakes and failures, and I'll use this learning to better manage and develop my future projects.
Till' next time!