Embracing the 3-Month Rule: A Practical Framework for Non-Scalable Solutions
In the startup world, there’s an invaluable piece of wisdom from Paul Graham: “Do things that don’t scale.” However, the practical implementation of this concept in software development is often overlooked.
After 8 months of working on my AI podcast platform, I’ve established a straightforward yet effective framework: any unscalable solution I implement will only be utilized for a maximum of three months. The idea is simple: at the end of this period, the solution must either be validated for its worth and refined into a scalable format or be abandoned entirely.
The startup Mindset
As engineers, we’re often conditioned to think about scalability from the very beginning—focusing on intricate design patterns, microservices, and distributed systems tailored for a massive user base. However, in the startup environment, this inclination can lead to unnecessary complexity and procrastination. My approach, guided by the 3-month rule, encourages creating straightforward, sometimes “imperfect,” code that actually goes live and reveals user needs in real-time.
Current Infrastructure Hacks: A Lean Approach
1. Consolidated Operations on One Virtual Machine
All my essential operations—database, web server, background jobs, and caching—run on a single virtual machine costing just $40 monthly. This lack of redundancy means that I do manual backups to my local storage.
Why This Workaround Works: Within a couple of months, I’ve gathered invaluable insights on my resource usage. My AI-centric platform peaked at just 4GB of RAM, indicating that my ambitious plans for a Kubernetes setup would have resulted in unnecessary overhead managing idling services. Each crash has provided insights into specific failure points, which have often surprised me.
2. Simplistic Hardcoded Configurations
Instead of complex configuration files or environment variables, I utilize constants defined directly in the code:
python
PRICE_TIER_1 = 9.99
PRICE_TIER_2 = 19.99
MAX_USERS = 100
AI_MODEL = "gpt-4"
This approach allows me to locate and alter configurations with ease, streamlining my deployment process.
The Advantage: I’ve only updated these constants three times in three months, which required a mere 15 minutes of redeployment instead of weeks of engineering on a configuration management service that wouldn’t offer significant value.
3. Leveraging SQLite for Production
I’m currently