
365 Days of Stories – Day 7: From Learning to Building – The Start of Product Development
With the core foundation in place, it was time for product development.
Since this was a high-volume system, I knew scalability had to be a key focus from Day 1.
So, I followed a structured approach:
1️⃣ Requirement Documentation 2️⃣ Design (UML – Class Diagram & ERD – Database Design) 3️⃣ Coding
This wasn’t just another CRUD-based application—it involved complex design decisions that had to be done right from the start.
Instead of worrying about design issues and ride-matching complexities, I decided to take it step by step.
Step 1: Documenting the Requirements I documented product requirements, focusing on features and system behavior without worrying about feasibility.
🔹 Clarity increased as I documented features. 🔹 Key system challenges became visible. 🔹 Design decisions became more structured.
This process took just 2 days, but the impact was huge.
Step 2: Designing the System Class Diagram – Building the Domain Model I created a class diagram, focusing on entity relationships to visualize the architecture.
Database Design – The Core of the System At NCST, I had worked on a Railway Reservation System as a project. My partner, Parwez Mohammad, was my biggest support system.
🔹 He grasped new languages fast, then taught me. 🔹 We worked in sync—he coded first while I shadowed, then he handed over coding to me.
💡 This was pair programming, a technique I later discovered was a big part of Thoughtworks development approach.
🔹 NCST forced us to deliver every project in groups, making collaboration key.
One core learning from NCST:
⚡ If ERD is perfect, coding is easy. If ERD is messy, handling every scenario becomes complex.
So, I spent a lot of time ensuring my ERD was solid, as my system would handle billions of ride data points.
Step 3: Choosing the Right Tech Stack I took a minimalistic approach, selecting only essential technologies to keep the learning curve small.
One of the biggest decisions was where to store ride data.
A ride in my system is a collection of GPS points at 5-50 meter intervals.
For example, a 10 km ride would generate ~200 data points.
🔹 If my system had 1M rides/day, it would store 1B+ points in just 5 days!
To handle this: ✔ Relational DB for structured data. ✔ Horizontally scalable NoSQL DB for ride points. ✔ Geospatial Indexing for efficient ride matching.
After evaluating multiple databases, I chose MongoDB (cloud version) for its: ✔ Horizontal scaling support ✔ Built-in spherical indexing for location-based searches
Next Up: Cracking the Core Logic – Ride Matching Algorithm With design decisions locked, it was time to tackle the real challenge— 🚀 How to match ride partners?
Have You Ever Built a Scalable System from Scratch? Would love to hear your thoughts on designing for scale and handling large datasets!
hashtag#365DaysOfStories hashtag#Day7 hashtag#StartupJourney hashtag#PersonalBrand hashtag#ElevateIdea