Embracing the 3-Month Rule: A Practical Approach for Startups
In the startup world, advice like Paul Graham’s mantra to “do things that don’t scale” often resonates deeply. However, the challenge lies not in understanding this concept, but in effectively implementing it within the realm of coding.
Over the past eight months of developing my AI podcast platform, I’ve adopted a straightforward yet valuable strategy: any unscalable solution is permitted a lifespan of three months. After this period, it must demonstrate its worth or face elimination.
As engineers, we frequently find ourselves caught up in the pursuit of “scalable” solutions from the get-go, focusing on elaborate design patterns, microservices, and distributed systems. However, in the context of a startup, this mindset can often lead to overengineering and unnecessary complexity. The reality is that we may be optimizing for users who have yet to arrive, addressing challenges that may never materialize.
My three-month framework compels me to craft straightforward, even rudimentary, code that can be deployed quickly. This not only promotes a rapid feedback loop but also unveils genuine insights into user needs.
My Current Infrastructure Hacks: Pragmatic Choices
1. Unified Virtual Machine
I have consolidated everything—a database, web server, background jobs, and caching—onto a single $40/month virtual machine. It’s a setup free from redundancy, with manual backups executed to my local machine.
Why is this a smart approach? In merely two months, I have gained a clearer understanding of my actual resource requirements than any extensive capacity planning could have provided. I discovered that my so-called “AI-heavy” platform peaks at just 4GB of RAM. I almost initiated a complicated Kubernetes setup that would have only required the management of dormant containers. Each time it crashes—twice so far—I gather invaluable data about what truly falters. Curiously, it’s never what I anticipated.
2. Hardcoded Configuration
In my code, configurations are hardcoded:
python
PRICE_TIER_1 = 9.99
PRICE_TIER_2 = 19.99
MAX_USERS = 100
AI_MODEL = "gpt-4"
There are no configuration files or environment variables—just constants interspersed throughout the files. Altering any value necessitates a redeployment.
The advantage? I can swiftly search my entire codebase using grep to locate any configuration value. Each price