System Design vs. Product Design: Why Thinking Like a Software Engineer Changes Everything

It’s 4:30 in the evening, and I already feel like sleeping… there’s a lot left in the day still, ahh leave all this, let me tell you about something I’ve known recently. Like, a few days ago, I started learning and exploring what the entire software engineering field looks like and stumbled upon one of the most important skills required in software engineering and almost the backbone of all the software that exists and why they exist. It is called System Design, and then I started to look at things a little bit differently… why? Well, because it is a mature skill as far as I know, and let me tell you what I got to know, and of course, my thoughts as well, no ChatGPT shit…
Well, I wanted to make real-world projects, ones that have some business utility, and ones that require thinking and planning. And this planning … this is what System Design is. But sadly, I took it some other way (Rookie Effect), so after all that happened, I got to know one thing:
Product Design is not System Design
And that’s exactly where things went wrong—like so wrong that I am not able to completely finish even a single project. And this happened mainly because I confused both these terms. Like, for example, I was planning to make a hospital management system, and obviously without any tutorial. That is, on my own, like to test how far and complex I can think. And then is when this struck me. Like, I started out with a pen and paper and started noting down what is to be made, thinking that I am doing system design, and this is exactly where i was wrong coz it is not system design, but how did i get to know? well when i was writing this hospital management system, then i started with -
Landing page where hospitals everything is displayed and things like is why it is good and what doctors and shit like that, and then i moved to thinking color schemes (yeah i was that stupid) and then i am thinking about sign in page that there should be multiple sign ins, like for doctors, for patients, for staff, for working staff, for out patients, then i kept thinking and now i am thinking that we can have things like you can’t directly book appointments with the main doctors and that first time patient registers for out patient and then they will be given a general appointment, with physicians of the hospitals, then these doctors will forward you to OPD’s that is out patient department that requires a different sign up and record will be maintained and that these physicians timestamps will be synced so that no appointment crashes, also the OPD appointments should not clash and that means these doctors schedule should be synced as well.
Then i started thinking about these other dashboards like one for patient for booking general appointment which will allot physicians with sync from their schedule and then this doctors dashboard where they will able to manage their appointments and keep track of their schedule and then the staff dashboard where they can manage the salaries, the hiring and other stuff and then the working staff dashboards where they can check what work is alloted to them today like which floor to clean and whom to serve tea and all… bla bla bla and it was so big and i kept on thinking for this project for almost 6-7 days, (not mentioning everything i thought, no one wants to hear me ranting for minutes), then is when i thought bruh this is so big of a project and started out to make this, and deciding the tech stack took me <1 minute and i should say i didn’t even think what tech stack and why so… and then i started coding, and as soon as i opened my editor the first question, what to make??
Bruh? i wasted 7 days thinking what to make and still i can’t code because i don’t know what to code and then eventually i started to realise bro there’s something wrong and that it needs to fixed. and then i wanted to share this problem with someone but i thought they’ll know how dumb i am and will not talk to me then, so i shared my feelings with this AI, chatGPT, and guess what it’s not that bad,
Although it did’mt help me much in finding the solution, but it dis surely help me to figure out what the problem is and what needs to be fixed… okay so one thing he told me really struck me, and it was that,
I am thinking like a product designer and not like a software designer.
Then is when i realise there’s a major gap in my thinking and it needs to fixed but how? System design can fill the gap and then i searched more what system design actually is, and damn… it was a game changer.
System Design isn’t about deciding color schemes or where the login button goes—that’s Product Design. It’s about how the system actually works. How does data flow? How do users interact with the system? What happens when thousands (or millions) of users are using it simultaneously? How do we scale, handle failures, and keep everything running smoothly?
I realized I had been focusing too much on the what rather than the how. And that’s why, despite all my planning, I was lost when it came time to code. I had ideas, but I didn’t have a structured approach to implement them.
So, what’s the fix?
Start with System Design – Before diving into UI/UX or front-end, map out the system architecture. Define databases, APIs, user authentication, and how different components interact.
Think in Terms of Scalability – Even if it’s a small project, consider how it would work with 100K users. Would it break? Where are the bottlenecks?
Break it Down into Components – Instead of thinking of the project as one giant thing, divide it into smaller, manageable services or modules.
Prototype Before Coding – Create a rough API structure, database schema, and component interactions before you touch a single line of code.
Bro, let me be honest, I was obsessed with what to make and never cared about how to make it. That’s why:
I didn’t give two flying shits about the tech stack.
I didn’t think about which database to use, how the APIs would work, or how authentication should be implemented.
I never considered scaling the authentication system for high-traffic days.
I never thought about what happens if the server goes down for an hour.
I never even considered microservices, caching, load balancing, or other real software design concepts.
but one thing is changed since i realised this, my mess and this feeling of overwhelm has come down certainly and then i decided to follow something i came up with, i will break the projects from now and this way i can come up with somethings or some working part of the project every week which will help me make things way faster and meaningful and filled with learning and also this is a standard production-approach, so it compliments me some other ways as well….
So currently i am working on a MVP for this and will share the progress in some other blog…
Thanks…
Subscribe to my newsletter
Read articles from Vansh Khanna directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by
