Home / Business / The 3-Month Rule: My Technical Framework for Doing Things That Don’t Scale

The 3-Month Rule: My Technical Framework for Doing Things That Don’t Scale

Embracing the 3-Month Rule: A Practical Guide for Startups

In the startup ecosystem, innovation often stems from unconventional methods. One such philosophy echoes the sentiments of Paul Graham: “Do things that don’t scale.” Yet, how do you effectively implement this principle within a coding framework? Over the past eight months, while developing my AI podcast platform, I’ve adopted a straightforward yet powerful strategy: every unscalable hack is given a three-month evaluation period. At the end of this timeframe, each approach either justifies its existence through demonstrated value or is retired.

It’s important to recognize that, as engineers, we frequently prioritize building scalable solutions from the inception of a project. This leads us into the realm of complex design patterns, microservices, and distributed systems—ideal for handling millions of users. However, this line of thinking often overlooks the realities of startups, where focusing too heavily on scalability can lead to wasted resources and delayed progress. My three-month rule has prompted me to embrace simple, direct, albeit “imperfect” code that allows for rapid deployment and real user insights.

Ingenious Infrastructure Hacks That Promote Learning

1. Centralized Operations on a Single VM

Currently, my entire operational setup—including the database, web server, background jobs, and Redis—resides on a single virtual machine costing approximately $40 per month. While this approach lacks redundancy and necessitates manual backups, it has provided invaluable insights. In just two months, I’ve gathered more data regarding my resource demands than any capacity planning documents could offer. I learned that my “AI-heavy” platform peaks at only 4GB of RAM, negating the need for the extensive Kubernetes architecture I had initially considered.

2. Simplified Hardcoded Configurations

I’ve adopted an approach where all configurations—like pricing tiers and user limits—are hardcoded within the application. This results in no configuration files or environment variables; instead, constants are embedded throughout the code. While changing a variable requires a redeployment, it allows for rapid searches of configuration values and clear tracking of changes through version control history. This method saves immense engineering hours; I’ve made only three adjustments in three months, effectively taking just 15 minutes for redeployment instead of investing 40 hours in creating a sophisticated configuration management system.

3. Utilizing SQLite for Production

Yes, I’ve chosen SQLite for my multi-user web application. Surprisingly, my entire database is just 47MB and can support up to 50 concurrent users seamlessly

Leave a Reply

Your email address will not be published. Required fields are marked *