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 for Startups

In the world of startups, advice from industry veterans like Paul Graham rings true: “Do things that don’t scale.” Yet, there’s a notable gap when it comes to integrating this concept within the coding process. After eight months of developing my AI podcast platform, I have adopted a straightforward yet effective methodology: every unscalable solution gets a trial run of three months. At the end of that period, we either see its tangible benefits and refine it or let it go.

As engineers, we are often trained to prioritize scalable solutions right from the outset, focusing on architectures like microservices and distributed systems. While these approaches cater to large enterprises and their millions of users, they can prove to be costly distractions for startups. Focusing on scalability too early often leads to unnecessary complexity and delayed results.

My approach challenges this mindset by encouraging me to write simpler, direct, and sometimes “messy” code that delivers real insights into what my users truly need. Here are some of the unorthodox hacks I’ve implemented in my current infrastructure and the rationale behind them:

1. Consolidated Operations on a Single VM

I’ve opted to run my entire stack—database, web server, background jobs, and cache—on one $40/month virtual machine. While this may seem risky without redundancy and with manual backups, the reality is that it’s proven to be a wise move. In just two months, I’ve gained deep insights into my resource requirements, discovering that my AI-driven platform peaks at a modest 4GB of RAM. The complex Kubernetes architecture I almost designed would have only served to manage idle containers.

Each crash provides invaluable data on the actual points of failure, which often surprises me, revealing issues I never anticipated.

2. Hardcoded Configurations

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

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

Changing a configuration requires a quick redeployment, but the advantages are clear. I can quickly search the entire codebase to track any config value and monitor changes through Git history. In three months, I’ve made only three configuration changes, saving countless engineering hours.

3. Leveraging SQLite for Production

Yes, I currently use SQLite

Leave a Reply

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