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,
One Comment
This approach beautifully underscores the value of rapid iteration and real-world testing in early-stage product development. The 3-month trial period for non-scalable solutions acts as a disciplined mechanism to validate assumptions without overinvesting upfront—allowing founders and engineers to pivot quickly based on actual user feedback and system behavior.
I particularly appreciate the emphasis on simplicity—using a single VM and hardcoded configs—to gain deep insights into resource needs and operational challenges. These practical, hands-on experiences often reveal bottlenecks and opportunities that theoretical planning might overlook.
In the long run, integrating this pragmatic methodology with strategic scalability planning can create a lean foundation that adapts as the product grows. It’s a reminder that sometimes, focusing on what truly matters now—rather than over-optimizing for the future—can accelerate learning and reduce wasted effort. Thanks for sharing this thoughtful framework!