Embracing the 3-Month Rule: A Pragmatic Approach to Unscalable Solutions in Tech
In the world of startups, the mantra of “doing things that don’t scale” echoes across the halls of innovation. While many have heard the wisdom of Paul Graham on this topic, few delve into how to effectively apply it in a technical context. I’ve spent the past eight months developing my AI podcast platform, and through trial and error, I’ve crafted a straightforward framework: every unscalable workaround gets a trial period of three months. If it proves its worth, it gets a proper build; if not, it’s discarded.
As engineers, we are often conditioned to focus on scalable solutions from the onset. We envision intricate architectures featuring microservices and distributed systems capable of managing millions of users. However, that type of thinking is better suited for large corporations. In the agile environment of a startup, pouring resources into scalable solutions can become expensive procrastination, optimizing for a future that may never materialize. My three-month rule prioritizes developing a simple, albeit “bad,” code that helps ship a product and clarifies user needs.
My Ingenious Infrastructure Hacks
1. Consolidated VM Infrastructure
For my platform, I operate everything from a single $40/month virtual machine, integrating my database, web server, background jobs, and Redis. While some might view this as reckless, this approach has provided invaluable insights into my resource requirements. In just two months, I’ve determined that my platform peaks at 4GB of RAM. The complex Kubernetes framework I considered would have resulted in managing containers that sat idle. Each crash—happening twice so far—has revealed useful information about what actually fails, which was often surprising.
2. Hardcoded Configuration Settings
Instead of using configuration files or environment variables, I’ve opted for constant values within the codebase:
python
PRICE_TIER_1 = 9.99
PRICE_TIER_2 = 19.99
MAX_USERS = 100
AI_MODEL = "gpt-4"
While this may seem primitive, it allows rapid searches through my code when any value needs modification. I’ve changed configurations a mere three times in three months, which translates to minimal redeployment time compared to the lengthy process of establishing a configuration management service.
3. SQLite for Production Use
Yes, my multi-user web app runs on SQLite, and it’s performing exceptionally well with just 47
One Comment
This post offers a compelling balance between pragmatism and experimentation, especially in the early stages of a startup. The “3-Month Rule” provides a tangible framework that encourages rapid iteration without being paralyzed by so-called “best practices” that are more suited for mature organizations. I particularly appreciate the emphasis on learning through real-world use—like your consolidated VM and SQLite setup—which can yield invaluable insights while minimizing unnecessary complexity and cost.
One point worth considering is how to gracefully transition from these unscalable solutions once your product gains traction. Establishing clear metrics to identify when a move to more scalable infrastructure is warranted can keep this pragmatic approach sustainable. Moreover, documenting these interim solutions can also serve as valuable engineering lessons for future scaling efforts.
This approach underscores that sometimes, the most valuable insights come from simply *doing* and iterating, rather than over-planning from the outset. Thanks for sharing these practical insights!