Embracing the 3-Month Experiment: A Framework for Non-Scalable Coding
In the tech community, Paul Graham’s famous adage, “Do things that don’t scale,” frequently resurfaces as valuable advice for startups. However, the methodology for implementing this principle in the coding process is seldom explored. Over the past eight months, while developing my AI podcast platform, I’ve adopted a straightforward framework: any non-scalable approach is given a trial period of three months. At the end of that timeframe, decisions are made—either the idea proves its worth and is refined into a sustainable solution, or it is discarded.
The startup Mindset vs. Scalable Solutions
As engineers, we often gravitate toward solutions designed for scalability from the very beginning. Concepts like microservices, intricate architecture, and systems capable of managing millions of users are inherent to our technical training. However, this “big company” mentality can be a hindrance for startups. Focusing on scalable solutions can lead to expensive delays, as we invest time in preparing for potential problems that may never arise. My three-month rule compels me to produce straightforward, even imperfect code that directly addresses users’ needs—resulting in faster learning and adaptation.
Current Infrastructure Hacks: Smart Choices
1. Consolidated Operations on a Single Virtual Machine
I host my database, web server, background jobs, and Redis on a single $40/month virtual machine, sacrificing redundancy and relying on manual backups. Far from being a reckless choice, this setup has provided critical insights into my actual resource needs. Within just two months, I’ve assessed that my platform, heavier on AI than I anticipated, rarely peaks above 4GB RAM usage. Building a complex Kubernetes infrastructure would have meant managing idle resources. Plus, I’ve gained invaluable data on what truly fails during crashes—often not what I had predicted.
2. Hardcoded Configurations
My code is cluttered with constants like:
python
PRICE_TIER_1 = 9.99
PRICE_TIER_2 = 19.99
MAX_USERS = 100
AI_MODEL = "gpt-4"
This may appear inefficient—no separate configuration files or environment variables—but the benefits are substantial. I can quickly search my entire codebase for any of these constants, and changes are tracked via Git history. Over three months, I’ve only adjusted these values three times, minimizing deployment time to mere minutes instead of weeks