The overengineering problem
[2025-11-30]

"They didn't do it from the start but they ended up being forced to do it later" ~ Gehazi Jenda
The MVP#
When building a minimum viable product, devs skip the "minimal" part by comparing it to an existing app. For instance, if I am building an e-book-like app for West-African books, I would look at Amazon Kindle's architecture. But the issue with looking at Amazon's architecture is that they have 300k+ users, and I have none.
The decisions they made when they were building the architecture for Kindle should be different. If I am lucky, my E-book app will have 10k users in my first year. This is not even enough to have load balancers like the Amazon team. Having most of these components is cool, but they just waste your development time. The art of copy-pasta should be made only if you dig through and it shows that your product will run into the same issues. For instance, for our e-book app, we will obviously meet people who will try to pirate the books. This means we need to think of tools that protects the books before hand.
Decisions made for an evolved product should be different for an MVP.