Embracing the Non-Scalable: The 3-Month Rule for Rapid Learning in Startups
In the tech world, particularly among startups, the phrase “Do things that don’t scale,” originated by Paul Graham, often resonates deeply. While this advice is widely acknowledged, few address the practical implementation of this concept in software development.
After dedicating eight months to developing my AI podcast platform, I’ve discovered an effective strategy: every unscalable hack I implement is given a lifespan of just three months. At the end of this period, I evaluate its effectiveness – either it will become a fully developed solution, or it will be phased out.
Rethinking Scalability
As engineers, our initial instinct is to craft scalable architectures from the outset. We often emphasize robust designs like microservices and distributed systems, reflecting the mindset of larger organizations. However, in a startup environment, chasing scalability too early can lead to wasted resources as we attempt to anticipate the needs of users who might not even exist yet.
My three-month rule encourages me to prioritize practical solutions that enable rapid learning while delivering direct feedback on user needs. Here are some of my current unconventional approaches to infrastructure:
Current Infrastructure Hacks
1. Single VM Setup
My entire stack – including the database, web server, and background jobs – operates on a single virtual machine costing $40 per month. While this lacks redundancy and relies on manual backups, the benefit has been invaluable.
In just two months, I’ve gained keen insights into my resource requirements, discovering that my AI-based platform peaks at a mere 4GB of RAM. The Kubernetes architecture I once considered would have only led to managing unused resources. Each time the system fails (which has happened twice), I collect real data pertaining to what truly crashes the system, often surprising me with unexpected insights.
2. Hardcoded Configuration
Though unconventional, my configuration approach involves hardcoded values scattered throughout the codebase. Variables like price tiers and user limits are simply constants. While this may seem primitive, it allows for streamlined tracking and rapid redeployment when necessary.
The effectiveness of this method is evident; in three months, I’ve only made three configuration changes. With just 15 minutes of redeployment versus an anticipated 40 hours of development, I achieve more with less.
3. SQLite Usage in Production
Surprisingly, my choice of SQLite for a multi-user application has proven to be a strategic advantage. With a modest database size of