Embracing the 3-Month Rule: A Practical Approach to Non-Scalable Solutions in Engineering
In the entrepreneurial landscape, one piece of advice rings true: “Do things that don’t scale.” Traditionally offered by industry leader Paul Graham, this concept is often easier said than done—especially when it comes to coding.
Having dedicated eight months to developing my AI podcast platform, I’ve created a straightforward framework: every prototype or non-scalable hack is allotted a mere three months to prove its worth. If it doesn’t demonstrate value within that time, it’s time to let it go.
The Challenge of Scalability in Startups
As engineers, we are typically inclined to design robust, scalable solutions right from the outset. We’re trained to think in terms of design patterns, microservices, and distributed systems—architectures that are tailored for handling vast numbers of users. However, in a startup environment, this scalable mentality can often become a hindrance rather than a help.
Focusing on scalability too soon may lead to costly delays as we optimize for hypothetical users who may never exist. My three-month rule encourages me to embrace simpler, more straightforward coding approaches that generate actual products while teaching me more about user needs.
My Ingenious Infrastructure Hacks
Here are some of the unconventional approaches I’m using that not only save time and resources but also provide valuable insights:
1. One Virtual Machine for Everything
I operate my database, web server, background jobs, and Redis—all on a single virtual machine costing $40 per month. While this may seem reckless, it has provided invaluable insights into my platform’s resource consumption. After two months of operation, I discovered that my “AI-heavy” platform uses just 4GB of RAM. If I had moved straight to a more complex infrastructure like Kubernetes, I would have wasted time managing unnecessary resources.
2. Hardcoded Configuration
Instead of using config files or environment variables, I’ve opted for hardcoded constants throughout my code, such as:
python
PRICE_TIER_1 = 9.99
PRICE_TIER_2 = 19.99
MAX_USERS = 100
AI_MODEL = "gpt-4"
This may sound primitive, but it allows me to quickly locate any configuration value with a simple command. Each time I adjust these values, I spend just 15 minutes on redeployment instead of investing 40 hours building an elaborate configuration service.