Home / Business / The 3-Month Rule: My Technical Framework for Doing Things That Don’t Scale

The 3-Month Rule: My Technical Framework for Doing Things That Don’t Scale

Embracing the 3-Month Rule: A Practical Approach to Non-Scalable Solutions in Tech Development

In the tech landscape, particularly within startups, the conventional wisdom espoused by industry leaders like Paul Graham—”Do things that don’t scale”—often goes unexamined in terms of execution. As a developer who has spent the past eight months constructing a platform for my AI podcast, I’ve devised a straightforward framework: every unscalable method is given a lifespan of three months. After this period, it either proves its worth and undergoes proper development, or it’s relegated to the sidelines.

Understanding the Challenges of Scaling

As engineers, we often feel the pressure to engineer scalable solutions from the outset, focusing on sophisticated architectural frameworks like microservices and distributed systems designed for large-scale user bases. This approach, while beneficial in big company settings, can turn into an expensive form of procrastination at a startup. By dedicating time to solutions that cater to potential users who may never materialize, we often overlook the immediate needs of our current base.

The 3-Month Rule: A Framework for Experimentation

My methodology prioritizes actionable insights derived from writing straightforward, intentionally imperfect code. Below, I detail my current infrastructure strategies and the valuable lessons they impart.

1. Centrally Located Services on a Single VM

All components—database, web services, background jobs, and caching—operate on a single $40/month virtual machine. Although this setup lacks redundancy and relies on manual backups, it’s proved incredibly insightful. In just two months, I’ve gained clarity on my platform’s actual resource requirements: it turns out that I rarely exceed 4GB of RAM. The complex Kubernetes cluster I was considering would have involved managing idle resources.

When crashes occur, they reveal specific vulnerabilities, often contrary to my predictions, allowing for data-driven improvements.

2. Simplified Hardcoded Configurations

My configuration approach is rudimentary: values like pricing tiers and user caps are hardcoded directly into the application. Altering any of these parameters entails a simple redeployment rather than a complicated configuration overhaul. This streamlined method allows for quick searches across my codebase, tracking changes effortlessly via version control.

Over the past three months, I’ve only adjusted these constants a mere three times, illustrating that extensive setups can frequently be more cumbersome than beneficial.

3. Utilizing SQLite for Production Environments

Remarkably, I’ve integrated SQLite into my multi-user web application—my database

Leave a Reply

Your email address will not be published. Required fields are marked *