Embracing the Three-Month Rule: A Pragmatic Approach to Coding for Startups
In the ever-evolving world of technology and startup culture, there’s a commonly cited piece of advice from Paul Graham: “Do things that don’t scale.” While many acknowledge this principle, few discuss practical ways to implement it within the realm of coding. After spending eight months developing my AI podcast platform, I’ve adopted a framework that I call the Three-Month Rule: every unscalable workaround is given a lifespan of three months. At the end of that period, if it hasn’t proven its worth, it’s time to let it go.
Rethinking Scalability
As engineers, we often enter projects with an emphasis on scalability—building robust architectures designed to support millions of users. This is essential in larger companies, but in the startup environment, pursuing scalability too early can lead to wasted resources. Instead of focusing on potential future users, my three-month strategy encourages me to write straightforward code that can be implemented quickly, allowing me to learn from real user interactions and needs.
Current Hacks That Are Actually Smart Solutions
1. Consolidated Infrastructure on a Single VM
For just $40 a month, I run my entire operation—including the database, web server, and background jobs—on a single virtual machine. While this setup lacks redundancy, it has provided invaluable insights. In just two months, I gained a clearer understanding of my resource needs, revealing that my platform peaks at 4GB of RAM. The complex Kubernetes system I nearly set up would have only served to manage unused containers.
When the system inevitably crashes, I receive concrete data about what fails—often unexpected elements—which informs my immediate troubleshooting.
2. Directly Hardcoded Configuration Values
Instead of cluttering my project with configuration files or environment variables, I have embraced hard-coded constants throughout my code. Updating a value requires a redeployment, but the benefits are significant. The simplicity allows me to search for any configuration change across my entire codebase in seconds. In three months, I’ve only adjusted pricing three times—saving me hours of engineering time with each minor update.
3. Utilizing SQLite in a Production Environment
Believe it or not, I’m using SQLite for a multi-user application, and my entire database is a mere 47MB. It handles up to 50 concurrent users effortlessly. This experience has revealed that my platform’s access patterns are overwhelmingly read-centric (95% reads vs