Embracing the 3-Month Rule: A Pragmatic Approach to Building Unscalable Solutions
In the tech world, one piece of advice often rings true: “Do things that don’t scale.” While this guidance from Paul Graham is widely acknowledged, the practical application, especially in coding, can be elusive. After spending eight months developing my AI podcast platform, I’ve crafted a streamlined framework that has significantly impacted my development approach: every unscalable technique has a lifespan of three months. At the end of this period, each method must either demonstrate its value and be properly implemented or be retired.
The Challenge of Scalable Architecture
As software engineers, we are conditioned to prioritize scalable solutions from the outset. We often gravitate towards complex design patterns, microservices, and advanced distributed systems—architectural choices designed to cater to millions of users. However, such high-level thinking can lead to inefficiency in startups, where scalability may, in fact, equate to costly delays. My 3-month rule encourages the creation of straightforward, sometimes “messy,” code that can be deployed quickly, allowing me to better understand user needs and preferences.
Innovative Infrastructure Hacks
Here are some of my current infrastructure hacks—methods that may seem rudimentary but are actually insightful and effective:
1. All-in-One Virtual Machine
My entire setup, which includes the database, web server, and background jobs, operates on a single $40/month VM. Admittedly, this approach lacks redundancy and relies on manual backups.
Why It Works: In just two months, I’ve gathered more information about my resource requirements than any planning document could offer. Surprisingly, my so-called “AI-heavy” platform peaks at only 4GB of RAM. The elaborate Kubernetes architecture I nearly implemented would have simply managed idle containers. When the system does crash—twice so far—I receive valuable insights into the actual cause.
2. Hardcoded Values
Instead of complex configuration files and environment variables, I use hardcoded values throughout my codebase:
python
PRICE_TIER_1 = 9.99
PRICE_TIER_2 = 19.99
MAX_USERS = 100
AI_MODEL = "gpt-4"
The Advantage: This method allows for rapid tracking and alteration of configurations. Modifying any value necessitates a redeployment, but this has only happened three times in three months, saving me significant engineering time.