Embracing the 3-Month Rule: A Tactical Approach to Non-Scalable Solutions
In the tech industry, many know the phrase by Paul Graham: “Do things that don’t scale.” While this principle is frequently discussed, the practical application of it in software development is seldom explored. After dedicating eight months to building my AI podcast platform, I’ve identified a straightforward framework for integrating unscalable hacks into my workflow: I give each non-scalable solution a lifespan of three months. At the end of this period, I assess whether its value justifies a full build-out or if it’s time for it to go.
Rethinking the startup Approach
As engineers, our training often emphasizes the creation of scalable solutions from day one. With an emphasis on design patterns, microservices, and distributed systems, it’s easy to get caught in a mindset tailored for large organizations. However, in a startup setting, focusing prematurely on scalability can lead to unnecessary complexity and expense. My three-month rule compels me to prioritize simple, efficient coding that delivers results and helps me identify what users genuinely require.
My Current Infrastructure Hacks: Strategic and Insightful
1. A Single VM Powers Everything
By hosting my database, web server, background jobs, and Redis on a single $40/month virtual machine, I’ve eliminated redundancy and implemented manual backups to my local environment.
This approach has proven to be an invaluable learning experience. In just two months, I’ve gained insights into my resource needs that far exceed anything a planning document could offer. For example, my AI platform has revealed that it peaks at 4GB of RAM, which would have rendered a complex Kubernetes setup nothing more than a management task for idle containers. When the system crashed—and it has twice so far—I received firsthand data on what actually went wrong, which was often a surprise.
2. Hardcoded Configuration for Simplicity
Instead of utilizing configuration files or environment variables, I’ve opted for hardcoded constants throughout my codebase:
python
PRICE_TIER_1 = 9.99
PRICE_TIER_2 = 19.99
MAX_USERS = 100
AI_MODEL = "gpt-4"
While some might consider this an oversight, the efficiency it provides is remarkable. This method allows me to swiftly search for any configuration values and track changes through Git history. The three times I’ve changed values in three months cost me only 15 minutes of redeployment