Embracing the 3-Month Rule: My Approach to Non-Scalable Solutions in Tech
In the tech world, there’s a well-known piece of advice from Paul Graham: “Do things that don’t scale.” Yet, the practical implementation of this philosophy, particularly in software development, often remains under-explored. After eight months of developing my AI podcast platform, I have formulated a framework that I call the “3-Month Rule.” In essence, any non-scalable solution I create is given a trial period of three months. If it proves its worth, it’s refined and built out; if not, it gets discarded.
The startup Mindset vs. Scalable Solutions
As engineers, we are conditioned to prioritize scalable solutions from the get-go. We dream of intricate designs featuring microservices and distributed systems, capable of managing vast user bases. However, in a startup environment, such methods can quickly devolve into costly delays. Often, we spend time optimizing for potential users who may never materialize, focusing on issues that might not even exist. My 3-month timeframe compels me to produce straightforward, sometimes “imperfect” code that can be deployed quickly and provides real insights into user needs.
Insights from My Current Infrastructure Strategies
1. Consolidation onto a Single VM
Currently, my infrastructure operates on a single $40/month virtual machine, housing everything from the database to the web server and background jobs, with no redundancy. While this might seem risky, it has been a valuable learning experience. After just two months, I gained a clearer understanding of my resource requirements than any planned capacity documentation could offer. By places my platform under real stress, I learned crucial insights about performance limitations – typically not where I initially expected.
2. Hardcoded Configuration for Simplicity
In my code, configurations such as pricing and user limits are hardcoded as constants. There are no configuration files or environment variables to manage. While this may seem like a limitation, it allows me to quickly locate and track changes within my codebase. Over three months, I made only three configuration changes, saving extensive engineering time and minimizing deployment hassle.
3. Leveraging SQLite for Production Use
Interestingly, my multi-user web application is powered by SQLite and performs admirably with a mere 47MB of database size. This setup accommodates roughly 50 simultaneous users effortlessly. The takeaway? My access patterns revealed a majority of read requests, validating the decision to use SQLite over