Embracing the 3-Month Rule: A Pragmatic Approach to Building Unscalable Code
In the entrepreneurial landscape, one phrase resonates with many: “Do things that don’t scale.” This invaluable advice from Paul Graham is well-known, yet the practical application of this philosophy in software development remains largely unexplored.
Over the past eight months, as I’ve been developing my AI podcast platform, I’ve implemented a straightforward framework: every unscalable solution is given a three-month trial period. After this time, it either validates its worth, meriting a robust implementation, or it gets phased out.
As engineers, we often consider ourselves trained to prioritize scalability from the outset. We admire sophisticated design patterns, microservices, and distributed systems—architectures capable of supporting millions of users. However, this type of thinking is often more suitable for large enterprises than it is for startups.
In the early stages of a startup, concentrating on scalable code frequently serves as a costly delay. We spend time accommodating imaginary users, addressing potential problems that we may never encounter. My 3-month rule compels me to develop straightforward, albeit imperfect code, which not only gets released but also clarifies user needs more effectively.
My Current Infrastructure Hacks: Pragmatic Choices for Growth
1. Unified Virtual Machine
All components—database, web server, background jobs, and caching—reside on a single $40/month virtual machine. Yes, there’s no redundancy, and backups happen manually.
This approach has proven astute: I’ve gained insights into my actual resource demands in just two months—insights no planning document could provide. My AI-focused platform’s peak resource usage is a mere 4GB of RAM—a far cry from the complex Kubernetes environment I nearly adopted that would have simply occupied space with idle containers. When the system crashes (and it has twice), I gather valuable data on issues I hadn’t anticipated.
2. Hardcoded Configuration
Variables like:
python
PRICE_TIER_1 = 9.99
PRICE_TIER_2 = 19.99
MAX_USERS = 100
AI_MODEL = "gpt-4"
are scattered throughout my code without the convenience of configuration files or environment variables. Updating these values necessitates a redeployment, but here’s the hidden advantage: I can swiftly search my entire codebase for any variable, and changes are auditable via git history. In just three months, I’ve made