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 Pragmatic Approach to Development for Startups

In the world of startups, the prevailing advice from influential figures like Paul Graham is to “do things that don’t scale.” However, when it comes to implementation in the realm of coding, specific guidance can often feel scarce. After eight months of developing my AI podcast platform, I’ve crafted a straightforward framework that I like to call the “3-Month Rule.” This approach allocates a lifespan of three months for any unscalable workaround, after which it must either prove its worth or be phased out.

Rethinking Scalability

As engineers, our instinct is to design scalable solutions from the outset. We’re well-versed in utilizing design patterns, microservices, and distributed systems—architectural choices that are adept at managing extensive user bases. But in the startup environment, pursuing scalability too early can often translate into costly delays. It’s all about anticipating future users and addressing issues that may never arise. My 3-month rule encourages me to produce simpler, more direct code, focusing on delivering a product that meets the immediate needs of users.

Current Infrastructure: Unconventional Yet Strategic

1. Consolidated Operations on a Single VM

By hosting my database, web server, background jobs, and caching on a single $40/month virtual machine, I prioritize simplicity over redundancy. The benefits? I’ve gained more insights regarding my resource needs in a mere two months than I could have from extensive documentation. Interestingly, my platform’s peak resource utilization stands at just 4GB RAM, which means that extensive setups like Kubernetes would have only created unnecessary overhead.

When my system experiences crashes—twice thus far—I acquire invaluable data about the actual breakdown points. Notably, these issues seldom align with my initial expectations.

2. Hardcoded Configuration Values

With constants directly embedded in the code—such as pricing tiers and user limits—changing configurations mandates a redeployment. While this may seem rudimentary, it has its advantages. I can swiftly search my entire codebase for any configuration, ensuring thorough tracking and review of all updates. Instead of investing a week building a configuration service—an endeavor I would have undertaken if following a more complex path—I can accomplish necessary changes with minimal effort.

3. Utilizing SQLite in a Multi-User Environment

Interestingly, my multi-user web application leverages SQLite, with a database size of just 47MB. This

Leave a Reply

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