Embracing the 3-Month Experimentation Rule: A Framework for Scalable Learning
In the world of entrepreneurship, there’s a well-known mantra from Paul Graham: “Do things that don’t scale.” While this advice resonates with many, the implementation of such an approach in programming is often overlooked.
Over the past eight months, while developing my AI podcast platform, I’ve created a straightforward framework: every unscalable solution receives a trial period of three months. If it proves its worth, it gets transformed into a robust system; if not, it gets ditched.
The Dilemma of “Scalability” in Startups
As engineers, we are conditioned to prioritize scalability from the outset. Concepts like design patterns and microservices often dominate our thinking, aiming to accommodate millions of users from day one. However, in a startup environment, focusing on scalable solutions can lead to expensive delays. It is often an exercise in futility, addressing challenges that may never manifest. My three-month framework compels me to write straightforward, even “messy,” code that actually gets deployed and sheds light on what users genuinely require.
Effective Infrastructure Hacks: Learning from Simplification
Here are some of my current non-scalable hacks that are surprisingly smart:
1. Consolidated Operations on a Single VM
I’ve opted to run everything—database, web server, background jobs, and Redis—on a single $40/month Virtual Machine (VM), without any redundancy.
This decision has yielded enlightening insights about my actual resource needs. In just two months, I discovered that my AI-focused platform peaks at 4GB RAM. A complex Kubernetes cluster would have involved unnecessary overhead, managing containers that were largely idle. Each crash provides valuable data about the real points of failure—often surprising and never what I anticipated.
2. Hardcoded Configuration Variables
Instead of using config files or environment variables, I rely on hardcoded constants throughout my code, such as:
python
PRICE_TIER_1 = 9.99
PRICE_TIER_2 = 19.99
MAX_USERS = 100
AI_MODEL = "gpt-4"
This approach allows me to quickly query my entire codebase for configuration values. With changes being infrequent, I find that the time spent on redeployment (approximately 15 minutes) far outweighs the engineering effort required to set up a dedicated configuration management service (which would take about 40 hours).