Embracing the Unscalable: A 3-Month Framework for Startups
When it comes to building a successful startup, many entrepreneurs heed the advice of Paul Graham: “Do things that don’t scale.” Yet, implementing this idea effectively can be a challenge—especially in the realm of software development. After eight months of working on my AI podcast platform, I’ve established a practical framework: every unscalable hack or workaround has a lifespan of just three months. At the end of this period, it either demonstrates its worth through real results or it gets the axe.
The startup Perspective
As engineers, we are often conditioned to design scalable solutions right from the start. We are drawn to the latest design patterns, microservices, and robust distributed systems—architectural feats that cater to millions of users. However, this type of thinking often suits larger organizations better. In the early stages of a startup, focusing on scalable code can lead to unnecessary complexity and costs, as you might be preparing for a user base that doesn’t exist yet.
My three-month rule compels me to develop straightforward, albeit “bad,” code that delivers quickly and reveals the true needs of my users. This approach transforms my understanding of the operational necessities and fosters a learning environment rather than a purely engineering one.
A Look at My Current Infrastructure Strategies
1. Single Virtual Machine Setup
I run my entire application—including the database, web server, background jobs, and caching—on a single virtual machine (VM) that costs $40 per month. There’s no redundancy and I manage backups manually.
Why is this a strategic decision? In just two months, I’ve gained invaluable insights into my resource requirements that no planning document could provide. It turns out that my “AI-heavy” platform only peaks at 4GB of RAM usage. The complex Kubernetes architecture I had considered would have only been managing empty resources. Each time the system crashes, I receive real data about deficiencies I hadn’t anticipated.
2. Hardcoded Configurations
In my codebase, you’ll find constants like this scattered across files:
python
PRICE_TIER_1 = 9.99
PRICE_TIER_2 = 19.99
MAX_USERS = 100
AI_MODEL = "gpt-4"
No configuration files or environment variables—just straightforward constants. While this might seem counterintuitive, it allows me to swiftly search my code for any configuration value.