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 Imperfection: The 3-Month Rule for startup Development

In the entrepreneurial world, one recurring piece of advice resonates from Paul Graham: “Do things that don’t scale.” While this wisdom is popular among founders, the challenge often lies in its practical application—especially in the realm of coding.

After dedicating eight months to developing my AI podcast platform, I’ve crafted a straightforward yet effective strategy: every unscalable hack gets a three-month lifespan. By the end of this period, each method must either demonstrate its value, leading to a more robust implementation, or face the axe.

The Shift in Engineering Mindset

As engineers, we’re conditioned to construct scalable solutions right off the bat. We dream of design patterns, microservices, and distributed systems—spectacular architectures intended to support millions of users. However, such big-company thinking can be counterproductive for startups.

In a nascent environment, over-engineering scalable code is often a costly delay. By optimizing for users who may never arrive, we risk solving non-existent problems. My three-month rule compels me to write straightforward, even ‘messy,’ code that actually gets deployed, allowing me to uncover genuine user needs.

Practical Hacks: My Current Approach

1. Consolidated Resources on One VM

Currently, my entire stack—database, web server, background jobs, and Redis—runs on a single $40/month virtual machine. While this setup lacks redundancy and relies on manual local backups, it’s been illuminating.

After two months, I’ve gained better insight into my resource requirements than any capacity-planning document could provide. Remarkably, my “AI-centric” platform peaks at around 4GB of RAM, meaning a complex Kubernetes setup would have required maintenance of nearly empty containers. When things do crash (which they have twice), I gather valuable data regarding actual failure points—which are rarely what I anticipate.

2. Hardcoded Configurations

Constants such as:

python
PRICE_TIER_1 = 9.99
PRICE_TIER_2 = 19.99
MAX_USERS = 100
AI_MODEL = "gpt-4"

act as my configurations, spread throughout the codebase—the absence of separate config files certainly simplifies things. While changing these values requires redeployment, the benefit lies in the speed of access. I can instantly search for any configuration, and every price adjustment is tracked in Git history

Leave a Reply

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