Embracing the 3-Month Rule: A Pragmatic Approach to Unscalable Solutions
In the world of startup development, the question isn’t just about building products but also about effectively applying well-known advice. One gem that resonates in our industry is Paul Graham’s famous quote: “Do things that don’t scale.” However, there’s often a missing conversation on how to translate this into actionable steps, particularly in the realm of coding.
Over the past eight months, I’ve been diligently working on my AI podcast platform. Throughout this journey, I’ve devised a straightforward yet effective framework: every unscalable solution is granted a three-month trial period. After this time frame elapses, I evaluate its impact—either it proves valuable and earns a proper implementation, or it’s phased out.
As software engineers, we are commonly trained to prioritize scalable solutions from the outset. Concepts like design patterns, microservices, and distributed systems are revered for their potential to handle vast amounts of users. However, this mindset often doesn’t align with the realities of a startup environment, where investing in scalability can turn into a costly delay. By adhering to my three-month rule, I focus on crafting simple, straightforward, and “imperfect” code that sees the light of day and genuinely addresses user needs.
Simplified Infrastructure Hacks: Smart Strategies for Growth
1. Consolidating into a Single VM
Currently, my entire setup, including the database, web server, and background jobs, operates on a single VM costing just $40 per month. While it lacks redundancy and requires manual backups, this approach has proven invaluable. Within two months, I’ve gained significant insights into my resource requirements—more so than any capacity planning document could provide. My platform’s actual peak RAM usage is just 4GB. The overcomplicated Kubernetes infrastructure I almost pursued would have just managed empty containers.
Each time the system experiences a crash (which has happened twice), I gather real data about its failures—often revealing surprises about what truly needs attention.
2. Hardcoded Constants Across the Codebase
With values like PRICE_TIER_1 = 9.99
and MAX_USERS = 100
hardcoded throughout the code, I’ve sidestepped complex configuration files. While this means redeploying for changes, the benefit is enormous: I can quickly search for constants across my entire project, and every adjustment is meticulously tracked in version control. Over the past three months, I’ve made only three changes—a mere