Embracing the 3-Month Rule: A Pragmatic Approach to Non-Scalable Solutions in Tech
In the startup world, it’s often said to “do things that don’t scale,” a piece of advice credited to Paul Graham. While this concept is widely acknowledged, few delve into the practical application of it when it comes to coding and infrastructure development.
After eight months of developing my AI podcast platform, I have implemented a straightforward framework: any non-scalable solution is allowed a lifespan of three months. Following this period, these hacks either demonstrate their worth and are upgraded or eliminated entirely.
As engineers, we are instinctively trained to design for scalability. We think in terms of complex architecture—think microservices and distributed systems—tailored to handle vast numbers of users. This architecture works well for larger organizations, but in a startup, it can often lead to unnecessary complications and expenditures.
By focusing on solutions that allow for immediate learning and iteration, my 3-month rule encourages me to result in rapid development. I produce simplified, sometimes imperfect code that ships quickly and reveals what users genuinely require.
Smart Infrastructure Hacks That Help Me Learn
1. Consolidated Infrastructure on a Single VM
I have chosen to run my web server, database, background jobs, and caching on one $40-a-month virtual machine. There’s no redundancy, and all backups are performed manually to my local machine.
Why is this a clever approach? Within just two months, I have a clearer picture of my actual resource needs compared to numerous capacity planning documents. For instance, my “AI-heavy” platform peaks at just 4GB of RAM. The Kubernetes architecture I nearly set up would have involved managing idle resources.
Whenever the system crashes—twice so far—I gather genuine insights about what faults arise. Spoiler alert: it often isn’t what I anticipated.
2. Simple Hardcoded Configuration
python
PRICE_TIER_1 = 9.99
PRICE_TIER_2 = 19.99
MAX_USERS = 100
AI_MODEL = "gpt-4"
I’ve opted to hardcode configurations directly into my codebase without using config files or environment variables. This means changes require a redeploy.
The advantage? I can swiftly search my entire codebase for configuration values. Every pricing adjustment is logged in Git history, and each modification is reviewed—however simply, by me. Creating a configuration service could have consumed a week, but