The 3-Month Experiment: A Pragmatic Approach to Learning Through Unscalable Solutions
In the startup realm, the advice from Paul Graham to “do things that don’t scale” resonates strongly, yet the practical application of this wisdom in tech often goes overlooked. After eight months of developing my AI podcast platform, I’ve established a guiding principle: every temporary solution I implement has a lifespan of three months. At the end of this period, it either demonstrates its worth and transforms into a fully-fledged feature, or it gets the axe.
Understanding the startup Mentality
As engineers, we often prioritize scalable solutions right from the outset. We discuss intricate architectures, advanced design patterns, and distributed systems — all crafted for handling millions of users. However, this mindset often places us at a disadvantage in the startup world.
In a nascent company, focusing excessively on scalability can lead to costly delays. We end up optimizing for hypothetical users and solving issues that may never arise. My three-month rule compels me to write straightforward and, yes, sometimes subpar code that gets delivered quickly, enabling me to identify what users actually need.
My Approach: Infrastructure Hacks That Make Sense
Here are the infrastructure strategies I’ve employed that illustrate the practical wisdom behind my approach:
1. Single VM for Everything
My entire setup—from the database and web server to background jobs and caching—resides on a single $40/month virtual machine. There’s no redundancy, and I conduct manual backups.
Why is this smart? It has allowed me to gauge my actual resource needs far more effectively than any theoretical capacity planning document could. I discovered that my “AI-heavy” platform peaks at just 4GB of RAM—had I opted for a complex Kubernetes arrangement, I would have been managing idle containers for no reason. Each time my server crashes, I gather valuable insights into failure points, which are rarely what I expect.
2. Hardcoded Configuration
In my code, configuration values are hardcoded like this:
python
PRICE_TIER_1 = 9.99
PRICE_TIER_2 = 19.99
MAX_USERS = 100
AI_MODEL = "gpt-4"
This means every adjustment requires a redeployment, but there’s an upside: I can search my entire codebase for configuration values in seconds. Given that I only made three configuration changes in the past three months, this saves me significant engineering time compared to setting up a