Embracing the 3-Month Rule: A Pragmatic Approach to Unscalable Coding
In the startup world, the advice from Paul Graham to “do things that don’t scale” often echoes. However, translating this wisdom into practical coding strategies can be a challenge. After eight months of developing my AI podcast platform, I’ve devised a straightforward framework: any unscalable workaround I implement is given a lifespan of three months. If it proves its worth within that timeframe, it earns the right to be developed further; if not, it gets scrapped.
The Startup Dilemma: The Trap of Scalability
As engineers, we tend to gravitate towards scalable solutions from the get-go. We envision intricate designs, microservices architecture, and distributed systemsΓÇöall optimized for an ever-growing user base. However, at a startup, focusing on scalability too early can be counterproductive, often leading to unnecessary complexity and expense while catering to hypothetical users. My 3-Month Rule encourages me to create straightforward, sometimes poorly designed code that facilitates immediate deployment, allowing me to better understand usersΓÇÖ actual needs.
Current Infrastructure Strategies: Smart & Simple
1. Consolidating on a Single VM
Currently, I’m running all my services╬ô├ç├╢database, web server, background tasks, and Redis╬ô├ç├╢on a single virtual machine for just $40 a month. While it may seem risky, this setup has proven invaluable. Within just two months, I’ve gained insights into my resource requirements that any capacity planning document couldn’t provide. For example, my AI platform peaks at just 4GB of RAM, which means the complex Kubernetes system I nearly set up would have simply managed redundant, unused containers. Plus, when crashes occur (and they have), I receive real data on what truly fails, often revealing surprises.
2. Hardcoded Configuration
My code features hardcoded constants like:
python
PRICE_TIER_1 = 9.99
PRICE_TIER_2 = 19.99
MAX_USERS = 100
AI_MODEL = "gpt-4"
No complex configuration files or environment variables to deal with. While some may see this as inefficient, it allows for swift searches across my entire codebase. Each price modification gets recorded in GitΓÇÖs history, and I conduct my own code reviews for updates. Setting up a configuration service could take a week, yet IΓÇÖve only changed these values three times in three monthsΓÇösaving hours of engineering time.











2 Comments
This post offers a refreshing perspective on balancing rapid experimentation with strategic infrastructure planning in a startup context. The 3-Month Rule acts as an effective heuristic to prevent over-engineering early on, allowing founders and engineers to validate assumptions with minimal overhead. I especially appreciate the emphasis on simplicityΓÇöusing a single VM and hardcoded constantsΓÇöto gain immediate insights without the friction of complex setups.
While this approach might seem risky or “hacky” at first glance, it aligns perfectly with the principle of building *just enough* to learn before scaling. As your data accumulates, you’ll be able to make informed decisions on whether to optimize or overhaul. It╬ô├ç├ûs a pragmatic reminder that immediate results and understanding often trump premature scalability, which can become a costly distraction early on.
Additionally, this framework encourages a culture of iterative, data-driven decision-making╬ô├ç├╢something that every startup should strive for. Have you considered, once the 3-month window passes, automating a transition plan to more scalable solutions based on actual usage patterns? That way, you’ll maintain agility early on while preparing for future growth. Thanks for sharing such practical insights into the startup engineering mindset!
This approach of implementing temporary, unscalable solutions with a clear expiration timeline is both pragmatic and aligned with lean startup principles. It reminds me of the concept of “progressive elaboration,” where initial implementations focus on delivering value quickly, then iteratively refining based on real-world feedback. Your decision to run everything on a single VM and use hardcoded configurations exemplifies the “quick and dirty” mindset╬ô├ç├╢prioritizing learning and iteration over premature optimization.
Additionally, your three-month window acts as a natural throttling mechanism that keeps technical debt manageable, ensuring that only viable ideas evolve into more robust systems. This method can also reduce cognitive load for the team and encourage experimentation without the fear of sunk costs.
In broader terms, I believe such strategies can foster a healthier, more adaptable engineering cultureΓÇöespecially in early-stage startupsΓÇöby emphasizing learning and flexibility over perfection. As your platform matures and scales, you can then gradually transition to more scalable and maintainable architectures informed by the insights gained during these initial phases.