Embracing the 3-Month Rule: A Practical Approach to Non-Scalable Solutions
In the entrepreneurial landscape, advice from industry leaders, like Paul Graham’s encouragement to “do things that don’t scale,” is often echoed but less frequently explored in the context of technology and coding. Over the past eight months, while developing my AI podcast platform, I have established a straightforward framework that guides the implementation of non-scalable hacks: my 3-month rule. Each solution can only persist for three months; if it hasn’t proven its worth by then, it’s time for it to go.
The startup Mindset: Prioritizing Immediate Needs Over Future Possibilities
As engineers, we often dive into building scalable systems from the onset. We employ concepts such as design patterns, microservices, and distributed systems—all designed to accommodate millions of users. However, this is a perspective more aligned with established enterprises than startups. In a startup environment, focusing heavily on scalability can sometimes lead to inefficient procrastination, where we optimize for hypothetical futures rather than addressing current user demands.
By embracing my 3-month rule, I prioritize crafting straightforward, albeit imperfect, solutions that are deployable and provide real insights into user behavior and needs.
Current Infrastructure Strategies: Insightful Breaches of Tradition
1. Consolidated Resources on One VM
Currently, I run my entire tech stack—database, web server, background jobs, and Redis—on a single virtual machine costing just $40 a month. Although this approach lacks redundancy and relies on manual backups, it’s proving invaluable. This tight setup has taught me more about my actual requirements than any extensive planning document could. The realization that my “AI-heavy” platform only reaches 4GB of RAM usage informs my future scalability decisions without the need for an overly complex architecture.
2. Simplifying Configuration Management
I’ve opted for hardcoded configurations throughout my codebase. Think constants rather than configuration files or environment variables:
plaintext
PRICE_TIER_1 = 9.99
PRICE_TIER_2 = 19.99
MAX_USERS = 100
AI_MODEL = "gpt-4"
This method, though rudimentary, allows me to quickly search and track changes across my code. In just three months, I’ve found that I’ve only needed to adjust these values three times, saving significant engineering time that would have been spent developing a dedicated configuration service.