The 3-Month Principle: A Pragmatic Approach to Building What Matters
In the startup world, the belief that “you should do things that don’t scale” is a well-known mantra popularized by Paul Graham. Yet, the practical implementation of this advice, particularly in the realm of coding, remains largely unexplored. After dedicating eight months to developing my AI podcast platform, I’ve crafted a straightforward methodology: every non-scalable solution is granted a trial period of three months. At the end of this timeframe, it must either demonstrate its value and be further developed or face removal.
The reality is that as engineers, we are often conditioned to design scalable solutions from the outset, focusing on complex architectures like microservices or distributed systems. However, this type of thinking frequently aligns with the modus operandi of larger organizations, rather than the needs of an agile startup. In many cases, striving for scalability translates to procrastination—optimizing for future users that do not yet exist and concocting solutions for problems that may never arise. My three-month principle encourages me to focus on simpler, more direct code that actually gets deployed, allowing me to discover what users genuinely require.
Current Infrastructure Strategies and Their Value
- Consolidated Operations on a Single Virtual Machine (VM)
Everything from the database to the web server and background tasks operates on a single VM that costs just $40 per month. This setup lacks redundancy and requires manual backups to my local machine.
Here’s the brilliance in this approach: in just two months, I’ve gained crucial insight into my resource needs—far beyond what any capacity planning document could provide. My “AI-focused” platform peaks at 4GB of RAM, revealing that an elaborate Kubernetes configuration would have merely been an exercise in managing unused containers. Each time my system crashes, it provides invaluable data about the real points of failure, which are often unexpected.
- Hardcoded Configurations
python
PRICE_TIER_1 = 9.99
PRICE_TIER_2 = 19.99
MAX_USERS = 100
AI_MODEL = "gpt-4"
My code is filled with hardcoded constants instead of configuration files or environment variables. While this might seem counterintuitive, it has a distinct advantage: I can effortlessly search my entire codebase for any config value within seconds. Changes to pricing or settings are logged in Git history,