Embracing the 3-Month Rule in Tech: My Strategy for Non-Scalable Success
When it comes to startup advice, Paul Graham’s famous phrase “do things that don’t scale” frequently makes the rounds. However, the conversation often stops short of practical implementation, especially in the realm of coding. After dedicating eight months to developing my AI podcast platform, I’ve crafted a straightforward strategy: any unscalable solution I implement is given a lifespan of three months. At the end of that period, it either justifies its existence and is rebuilt, or it’s discarded.
As engineers, our instinct both in training and practice is to create scalable solutions right from the start. We immerse ourselves in sophisticated design patterns, microservices, and robust architectures designed for millions of users. However, that mindset is frequently more suited to larger organizations than to agile startups.
In many ways, attempting to scale prematurely can lead to costly delays. We often find ourselves optimizing for hypothetical user bases and addressing problems that may never arise. The 3-month rule encourages me to focus on writing straightforward and functional code that gets shipped and, ultimately, reveals genuine user needs through real experience.
Current Infrastructure Hacks: Smart Choices with Short Lives
1. Consolidating Resources on a Single VM
I’ve streamlined my setup to operate on a single $40/month virtual machine that hosts the database, web server, background operations, and Redis, without redundancy and with manual backups to my local machine.
This decision has proven invaluable. Within two months, I’ve gained a deeper understanding of my resource requirements than any capacity planning document could provide. For instance, my so-called “AI-heavy” platform maxes out at just 4GB of RAM. The complex Kubernetes architecture I nearly implemented would have seen me managing empty containers instead of addressing real issues. When crashes occur—and they have—I receive immediate feedback on failure points, which often surprises me.
2. Hardcoded Configurations
Consider my configurations:
plaintext
PRICE_TIER_1 = 9.99
PRICE_TIER_2 = 19.99
MAX_USERS = 100
AI_MODEL = "gpt-4"
Rather than relying on configuration files or environment variables, I choose to hardcode constants throughout. This means any changes necessitate a simple redeployment.
The real benefit here is the ease of searching my entire codebase. Adjusting price points is quickly traceable within version control. Each change