Embracing the 3-Month Rule: A Pragmatic Approach to Unscalable Solutions in Tech
In the world of tech startups, Paul Graham’s famous advice to “do things that don’t scale” often resonates with founders and engineers. However, the implementation of this philosophy, especially in coding and development, remains under-discussed. After eight months of building my AI podcast platform, I’ve crafted a straightforward framework: every unscalable solution is given three months to prove its worth. If it doesn’t demonstrate clear value, it gets discarded.
As engineers, our instinct is to design scalable solutions from the outset—think of intricate design patterns, microservices, and distributed systems tailored for millions of users. This mindset, while essential for larger organizations, can lead startups astray. The reality is, scalable solutions can sometimes translate into costly delays, as we become overly focused on accommodating future users and hypothetical challenges. My three-month rule encourages me to create simple, even “imperfect” code that gets launched, allowing me to gain insights into user needs swiftly.
Current Infrastructure Insights: My Strategic Hacks
1. Consolidated Resources on a Single VM
At the heart of my platform’s infrastructure is a single virtual machine where everything coexists: the database, web server, background jobs, and Redis. This setup may sound reckless, yet it has afforded me invaluable insights into my resource requirements. In just two months of operation, I discovered that my “AI-heavy” platform peaks at a mere 4GB of RAM. The extensive Kubernetes architecture I nearly implemented would have only managed empty containers. Each crash (which has occurred twice) has delivered unexpected lessons about system behavior and weaknesses—lessons I wouldn’t have gleaned otherwise.
2. Direct Configuration in Code
Instead of utilizing configuration files or environment variables, I’ve opted for hardcoded constants throughout my codebase, such as:
plaintext
PRICE_TIER_1 = 9.99
PRICE_TIER_2 = 19.99
MAX_USERS = 100
AI_MODEL = "gpt-4"
This approach may appear rudimentary, but its efficiency is remarkable. Changing values necessitates a simple redeployment, while allowing me to swiftly track modifications via git history. Creating a dedicated configuration service would take considerable time. In three months, I’ve only altered configuration values three times, resulting in mere minutes of redeployment instead of extensive engineering hours.