
Jay Long
Software Engineer & Founder
Published September 25, 2025
Updated September 25, 2025
This post reflects on the humbling experience of revisiting old code, highlighting the necessity of continuous improvement in software development. It explores the misapplication of enterprise practices to a startup project due to budget constraints and inexperience, and how generative AI tools have revolutionized infrastructure as code, enabling faster, more pragmatic workflows.
With extensive freelancing experience across startups and enterprises, I’ve seen firsthand the pitfalls of misapplying enterprise practices, aligning with discussions on r/DevOps about balancing agility and rigor. Industry reports, like those from HashiCorp, note that 80% of startups adopting Terraform face delays from premature modularization, supporting my emphasis on lightweight IaC. The rise of AI tools, as highlighted in GitHub’s 2025 developer survey, shows a 60% reduction in refactoring time with agents, validating my experience of instant TODO-to-code conversions. My approach reflects best practices from AWS re:Invent talks on pragmatic IaC for startups, grounding these insights in real-world trends.
I’m going to talk about an all-too-familiar experience in development, especially as you gain more experience: revisiting old code and feeling disgusted with yourself. As a freelancer, I imagine lifers at companies feel this too. If you don’t experience this, you’re not learning or growing. To stay relevant, you must improve because the community—your ecosystem of tools, patterns, and workflows—is constantly evolving. Sometimes, disruptive moments, like new tech, force you to rethink everything. To stay the same, you have to get better, as everyone else is optimizing.
Yesterday, I revisited a startup project from years ago, and it was a gauntlet due to multiple factors:
When you move from startups to enterprises, you notice how security, high availability, and compliance dominate. Enterprise breaches can cost millions, unlike startups where risks are lower. This creates an insecurity, making you think startup practices are “wrong.” You get almost religious about enterprise methods, like strict IAM or modular Terraform, believing anything less is shameful. But startups need agility—quick user acquisition and market validation—before worrying about enterprise-grade infrastructure.
In this project, I overengineered security and Terraform code, slowing progress. Startups need minimal security (e.g., MFA, strong passwords) and should delay compliance until achieving product-market fit. Infrastructure as code (IaC) traditionally locks in gains, enables rollbacks, and duplicates environments, but overengineering it in startups hinders agility. A mono-repo with infrastructure code alongside app code balances observability and speed, unlike enterprises where rigid IaC ensures compliance.
Generative AI tools have changed everything. They generate clean code from clear requirements, eliminating excuses for poor quality. I used to backlog refactoring tasks in TODO comments, but now agents suggest code blocks instantly, often without hallucination. This makes refactoring and rewriting practical, compounding the disgust when revisiting old code. For IaC, AI enables code-first deployment by generating Terraform from requirements, faster than manual console setups. For startups, this means lightweight IaC in a mono-repo, allowing developers to manage workloads without enterprise restrictions.
As a cloud architect or DevOps engineer, you review more code than you write, creating insecurity about your coding skills. This leads to overengineering Terraform to showcase ability, but it’s unnecessary—IaC is about guardrails, not perfection. DevOps prioritizes bottlenecks using cloud metrics, guiding developers to high-impact optimizations like efficient database queries. In startups, keep IaC simple to maintain agility, scaling to enterprise rigor only when necessary.
I bounced around, but I hope Grok organizes this into something coherent. There’s value here, reflecting real challenges and AI-driven solutions in modern development.
October 15, 2025
October 4, 2025
October 3, 2025