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 Rule: A Practical Approach to Embracing Non-Scalable Solutions in Development

In the realm of software development, we often hear the renowned advice from Paul Graham: “Do things that don’t scale.” However, the challenge lies in applying this principle effectively, especially in the context of coding. After spending eight months building my AI podcast platform, I’ve developed a straightforward framework: every unscalable solution has a lifespan of three months. After this period, it either demonstrates its worth and transitions into a robust build or gets phased out.

As engineers, we’re trained to create scalable architectures from the very start, crafting intricate designs aimed at supporting vast user bases. Yet, in the startup environment, aiming for scalable solutions can often lead to costly delays, addressing problems for users that do not even exist yet. Following my three-month rule compels me to write simple and straightforward code that actually delivers, allowing me to truly understand the needs of my users.

My Current Infrastructure Hacks That Highlight Strategic Decision-Making

1. Consolidated Operations on a Single VM

I’ve opted for a configuration where my database, web server, background jobs, and Redis all run on a single $40/month virtual machine. While this approach lacks redundancy and entails manual backup, it has yielded critical insights into my resource demands. In just two months, I’ve gauged that my “AI-heavy” platform peaks at 4GB RAM usage. The elaborate Kubernetes setup I nearly implemented would have catered to an empty system instead of what is actually required. Each crash (which has occurred twice) has provided me with unexpected yet valuable data, revealing the actual points of failure.

2. Hardcoded Configuration

In my code, configuration values are embedded directly:

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

I avoid using config files or environment variables, and any changes necessitate a redeployment. This method allows me to quickly search for configuration values across the entire code base, and each adjustment is documented in my version history. While developing a dedicated configuration service could consume around a week, I’ve only modified these values three times in three months, resulting in mere minutes of redeployment compared to extensive engineering hours.

3. Utilizing SQLite in Production

Yes, I am using SQLite for my multi-user

Leave a Reply

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