The 3-Month Rule: A Pragmatic Approach to Building Your Startup
In the startup world, the phrase “Do things that don’t scale,” popularized by Paul Graham, is often repeated but rarely dissected in detail, especially from a technical perspective. After eight months of developing my AI podcast platform, I’ve come to adopt a unique framework I like to call the “3-Month Rule.” This principle allows unscalable hacks to thrive for three months, after which they either demonstrate their worth and evolve into permanent solutions, or they’re discarded.
The startup Mindset: A Shift from Scalable Solutions
As software engineers, we’re often conditioned to prioritize scalable solutions right from the outset. With architectural patterns like microservices and distributed systems, it’s easy to get caught up in the allure of managing millions of users. However, in a startup environment, this approach can lead to inefficiencies as you’re essentially preparing for an audience that may not be there yet. My 3-Month Rule encourages me to write straightforward, albeit “imperfect,” code that allows for rapid deployment and critical user feedback.
Current Infrastructure Hacks: Lessons Learned
1. Unified Infrastructure on One VM
Instead of spreading resources across multiple servers or services, I’ve opted to run everything—from databases to web servers—on a single $40/month virtual machine. While this may seem risky, it has taught me invaluable lessons about my actual resource requirements. For example, I’ve found that my platform’s peak memory usage is just 4GB. Had I built a complex Kubernetes environment, I would have wasted resources managing containers that weren’t being utilized effectively.
Crashes (which have happened twice) provide crucial insights into real failure points, surprising me every time.
2. Hardcoded Configurations for Simplicity
I have opted for hardcoded values for configurations like pricing and limits, eliminating the need for complex config files or environment variables. This makes updates a breeze—just a quick redeploy, as opposed to the extensive time and effort that would come with building a configuration management service. In three months, I’ve adjusted configuration settings only three times, saving significant engineering hours.
3. SQLite: Surprisingly Effective
Surprisingly, I’ve employed SQLite for a web app that accommodates up to 50 concurrent users with impressive performance. By discovering that my app’s database access pattern consists of 95% reads, I now understand that starting with a more complex database solution like Postgres would have introduced unnecessary