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 Strategic Approach to Prototyping in Software Development

In the realm of software engineering, there is a well-known principle articulated by Paul Graham: “Do things that don’t scale.” While this advice is commonly referenced, the practical implementation—especially in coding—remains less explored. After eight months of developing my AI podcast platform, I’ve embraced a unique approach: my “3-Month Rule.” Each unscalable solution I create is granted a three-month lifespan. Within this period, it must demonstrate its utility, or it faces removal.

Typically, as engineers, we are conditioned to develop scalable solutions from the outset. We lean towards intricate designs involving microservices or distributed systems that are capable of supporting vast numbers of users. However, this “big company” mindset often leads startups to engage in costly procrastination, concentrating on scalability while overlooking the immediate needs of existing users. With my 3-Month Rule, I focus on crafting straightforward, albeit imperfect code that allows for rapid deployment and immediate feedback on user needs.

Current Infrastructure Hacks: Embracing Simplicity for Insight

1. Consolidated Resources on a Single VM

I operate my database, web server, background jobs, and Redis on a single $40/month virtual machine. While this design lacks redundancy and depends on local manual backups, the insights I’ve gained over the last two months have been invaluable. I’ve discovered that my AI-centric platform typically utilizes only 4GB of RAM during peak times. The complex Kubernetes architecture I nearly implemented would have led to managing idle resources.

When the system has crashed (which it has twice), I’ve received concrete data about the actual points of failure—highlighting issues I never anticipated.

2. Hardcoded Configuration Values

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

Rather than using configuration files or environment variables, I’ve opted for hardcoded constants throughout my files. Though any change necessitates a redeployment, this method has a powerful advantage: I can swiftly search my entire codebase for any configuration value, and alterations are tracked in Git history. Given that I’ve modified these values only three times in three months, this approach saves me a significant amount of engineering time—15 minutes for redeployment instead of 40 hours for building a configuration service.

Leave a Reply

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