Embracing the 3-Month Rule: A Pragmatic Approach to Development in Startups
In the world of entrepreneurship, Paul Graham’s advice to “do things that don’t scale” resonates strongly. However, the implementation of this philosophy, particularly in coding, often goes unexplored. After dedicating eight months to building an AI podcast platform, I’ve adopted a straightforward yet powerful framework: every non-scalable solution earns a three-month trial period. At the end of this period, we either scale it properly based on its demonstrated value or simply retire it.
Challenging the Scalable Mindset
As engineers, we are conditioned to prioritize “scalable” solutions from the get-go, focusing on sophisticated architectures like microservices and distributed systems designed to handle massive user bases. However, for startups, this approach can lead to costly delays, as it often focuses on theoretical users who may never materialize. By applying my three-month rule, I can create straightforward, even “imperfect,” code that actually functions and, more importantly, helps me understand user needs firsthand.
Key Infrastructure Strategies That Are Surprisingly Effective
1. Consolidating on a Single VM
I’ve opted for a minimal setup, with my database, web server, background jobs, and caching running on a single $40/month virtual machine. This approach comes without redundancy, relying on manual backups to my local machine.
The brilliance here lies in the insights gained about my actual resource consumption. Within just two months, I learned my “AI-heavy” platform only peaks at 4GB of RAM. The Kubernetes environment I initially considered would have only complicated things with unnecessary container management.
When crashes occur—and they have twice so far—I’m able to gather real data on what truly fails. Unsurprisingly, it’s rarely what I anticipated.
2. Emphasizing Hardcoded Configurations
Instead of utilizing configuration files or environment variables for settings like pricing tiers and user limits, I’ve adopted a hardcoded constants approach within my files. Modifying any value requires a redeployment.
This method allows for quick searches throughout the codebase, facilitating rapid updates without complex configurations. In three months, I’ve made just three changes, translating to a mere 15 minutes of redeployment rather than weeks of development.
3. Leveraging SQLite for Production Use
Yes, you read that right. I’m using SQLite for a web application with multiple users, managing a mere 47MB database that