Embracing the 3-Month Rule: A Practical Approach for Building in Startups
In the realm of startup development, one piece of advice stands out: “Do things that don’t scale,” a concept popularized by Paul Graham. While this mantra is widely acknowledged, the practical implementation of it, especially in the world of coding, often remains uncharted territory.
After dedicating eight months to the development of my AI podcast platform, I’ve created a straightforward framework that I like to call the “3-Month Rule.” This approach allows any unscalable hack I devise a lifespan of just three months. After this period, the hack must either demonstrate its usefulness and be developed further, or it is phased out entirely.
As engineers, we often find ourselves striving to create scalable solutions from the outset, gravitating towards intricate design patterns, microservices, and distributed systems aimed at accommodating millions of users. However, such big-picture thinking can be a pitfall in startup environments, where the focus instead should be on immediate user needs. By adhering to my 3-month rule, I am compelled to write straightforward, sometimes imperfect code that actually gets completed and reveals what users truly require.
Current Infrastructure Hacks: Ingenious Simplicity
1. A Single VM for Everything
My infrastructure operates on a singular $40/month virtual machine (VM) that hosts the database, web server, and background jobs—all without redundancy. Although it might sound reckless, this setup has enabled me to gain unprecedented insights into my resource requirements in just two months.
I discovered that my platform, which I initially anticipated would be resource-intensive, only peaks at 4GB of RAM. The elaborate Kubernetes configuration I considered would have involved managing empty containers. Each time the system crashes—twice already—I gather invaluable data regarding the actual failures, which are often surprising.
2. Hardcoded Configurations
All my configurations are hardcoded directly into the code. For example:
python
PRICE_TIER_1 = 9.99
PRICE_TIER_2 = 19.99
MAX_USERS = 100
AI_MODEL = "gpt-4"
No lengthy configuration files or environment variables—just constants sprinkled throughout. The advantage? A swift search through my entire codebase reveals any configuration within seconds. This method allows for efficient tracking of price changes through version history. Since I’ve only needed to alter these values three times in three months, the