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

The 3-Month Experiment: A Practical Approach to Unscalable Solutions

In the startup world, the well-known mantra from Paul Graham—“do things that don’t scale”—often doesn’t receive enough practical application, especially when it comes to engineering. After eight months of developing an AI podcast platform, I have crafted a straightforward yet effective framework: any unscalable hack gets a lifespan of three months. At the end of this period, it either proves its worth and is refined into a robust solution, or it gets retired.

As engineers, we typically emphasize building scalable solutions from the outset—repositories filled with elegant design patterns, microservices, and distributed systems capable of serving millions. However, this approach is often rooted in the mindset of larger corporations. In a startup context, investing time in building scalable infrastructures can sometimes feel like postponing the inevitable. We are often preemptively optimizing for potential users who may never materialize and addressing challenges that might not even exist.

My three-month rule compels me to create straightforward, albeit “imperfect,” code that is operational and reveals the true needs of my users.

Current Infrastructure Hacks That Make Sense

1. Single VM Setup

I have deployed my entire environment—a database, web server, background processes, and Redis—on a single $40/month virtual machine without redundancy and rely on manual backups.

This approach has its merits; within two months, I gained more insight into my resource requirements than any extensive capacity planning document could provide. For instance, my “AI-heavy” platform consistently peaks at just 4GB of RAM, indicating that the complex Kubernetes setup I almost implemented would have simply managed empty containers.

When the server crashes—and it has, twice—I obtain valuable feedback about what goes wrong, and it’s usually not what I anticipated.

2. Hardcoded Configurations

Instead of utilizing configuration files or environment variables, I use hardcoded constants spread throughout my code:

python
PRICE_TIER_1 = 9.99
PRICE_TIER_2 = 19.99
MAX_USERS = 100
AI_MODEL = "gpt-4"

Making any changes means redeploying, but this simplicity allows me to quickly search my entire codebase for configuration values and keeps a history of all adjustments through Git. Replacing configuration services with this method saved me considerable engineering time—I’ve only changed these values three times in three months!

3. Using SQLite in

Leave a Reply

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