Salve

Skip to content

Scriptum

What I Learned After a Year of Building with AI

What I Learned After a Year of Building with AI

This blog is for developers, creators, and entrepreneurs who want practical insights into AI-assisted coding beyond the hype. Whether you're a seasoned programmer exploring AI tools or a non-technical founder considering building your own products, these lessons will help you understand what actually works in 2025.

I've been using AI-based code editors for over a year now, experimenting with different tools and approaches. Recently, I started using Claude Code in Windsurf via the VS Code extension, and it's been a real game changer. Yesterday, I built a complete webapp in just an hour - frontend, backend, authentication, mobile responsive design, deployed to both Vercel and Fly.io. As an early adopter of Windsurf since its launch, I've watched these tools evolve from interesting experiments to genuinely productive development environments.

This shift represents something fundamental in how we approach software creation. Andrej Karpathy, the AI researcher who coined the term "vibe coding," captured this transformation perfectly when he described it as a new paradigm where you "fully give in to the vibes, embrace exponentials, and forget that the code even exists." His observation that "I'm building a project or webapp, but it's not really coding - I just see stuff, say stuff, run stuff, and copy paste stuff, and it mostly works" resonates with many developers experimenting with AI-assisted development.

But calling it "vibe coding" doesn't capture the full picture of how professionals should approach AI-assisted development. The term suggests a casual, throw-away approach that works for weekend projects but falls short of what's needed for serious development work. A better term is AI-assisted coding - a more deliberate approach that leverages AI while maintaining the principles of good software engineering.

The Reality of AI-Powered Development

The tools have reached a level of sophistication that's genuinely transformative. According to Anthropic's research, teams using these tools report significant productivity gains. As documented in their case studies, "at Intercom, it enables us to build applications we wouldn't have had bandwidth for - from AI labeling tools to ROI calculators for our Sales team. Its ability to handle complex, multi-step tasks sets it apart from alternatives."

The effectiveness comes from the underlying models' capabilities. Anthropic notes that "every single leading GenAI-powered IDE (Cursor, Windsurf, Zed, Copilot etc) favor this model" when referring to Claude's performance in coding tasks. This isn't coincidental - the models have become sophisticated enough to understand project context, maintain coding patterns, and generate solutions that actually work within existing codebases.

However, the real value emerges when you understand how to work with these tools effectively rather than against their limitations. The most successful approach involves treating AI as a thought partner rather than a code generator. As Anthropic's internal teams discovered, "Claude Code works best when you focus on the human workflows that it can augment. The most successful teams treat Claude Code as a thought partner rather than a code generator."

Five Practical Lessons from Real Development

Through extensive use of these tools, several patterns have emerged that consistently improve outcomes. These aren't theoretical best practices but lessons learned from actual development work.

Always maintain redundancy in your AI toolkit. Don't rely on a single AI editor. When Claude Code hit context limits during my recent project, I seamlessly switched to Windsurf's Cascade feature. Running both tools in parallel prevents the frustrating debugging loops that occur when one tool gets stuck or loses context. This redundancy has become essential because each tool has different strengths and weaknesses in how they handle context, generate code, and maintain project understanding.

Start with the minimum viable product approach. AI tools excel at handling smaller, focused projects but struggle with complex, large-scale builds. Rather than writing extensive specification documents, break your idea down into the smallest working version first. The tools perform better when they can focus on specific, well-defined problems rather than trying to architect entire systems from scratch. This approach also allows you to iterate quickly and validate ideas before investing significant time in development.

Adopt a microservices mindset for AI-assisted development. Build core features separately, then connect them together. AI struggles with large codebases but excels at focused, isolated components. This mirrors what professional development teams have learned: smaller, focused repositories work better for AI indexing and understanding. When you keep components isolated, the AI can better understand the context and generate more accurate solutions.

Debug through scenarios, not generic commands. When something breaks, resist the urge to repeatedly ask the AI to "fix this." Instead, think through what might be interfering with your solution. In frontend development, for example, another component might be hiding your changes, or CSS specificity rules might be overriding your styles. Ask the AI to check specific scenarios instead of making generic fix requests. This approach leads to faster resolution and helps you understand the actual problem rather than just applying band-aid solutions.

Set clear intentions and embrace the experimental nature. Whether you're prototyping an MVP, testing ideas, or learning new technologies, have a clear purpose for each development session. AI-assisted coding has limitations for production applications that require extensive testing, security reviews, and long-term maintenance. However, it's excellent for experimentation and rapid iteration. Understanding these boundaries helps you choose the right tool for the right job and avoid frustration when the AI reaches its limits.

The Broader Implications for Software Development

What we're witnessing goes beyond just faster coding. As Anthropic's teams discovered, "agentic coding isn't just accelerating traditional development. It's dissolving the boundary between technical and non-technical work, turning anyone who can describe a problem into someone who can build a solution." This democratization of software creation has profound implications for how we think about product development and technical teams.

The tools work because they understand context in ways that previous generations of development tools couldn't. Anthropic's documentation emphasizes that "Claude Code maintains awareness of your entire project structure, can find up-to-date information from the web, and with MCP can pull from external datasources like Google Drive, Figma, and Slack." This comprehensive understanding allows the AI to make suggestions that fit within existing patterns and architectural decisions.

However, this capability comes with important caveats. As industry experts note, the approach requires careful consideration of code quality and maintainability. Professional development still requires understanding the code you're shipping, testing it thoroughly, and ensuring it meets security and performance requirements. The AI assists with these tasks but doesn't replace the need for engineering judgment.

Looking Forward

The gap between having an idea and building a working product continues to shrink. These tools aren't perfect, but they're rapidly becoming sophisticated enough to handle real development work rather than just simple scripting tasks. The key is understanding how to work with them effectively.

Success with AI-assisted coding requires adapting your development workflow to leverage the AI's strengths while compensating for its weaknesses. This means maintaining multiple tools, breaking projects into appropriate sizes, debugging thoughtfully, and setting realistic expectations about what these tools can and cannot accomplish.

For developers, this represents an opportunity to focus more on architecture, user experience, and business logic while delegating routine implementation tasks to AI. For non-technical founders and creators, it opens possibilities for building products that previously required hiring development teams. In both cases, the most important skill becomes knowing how to effectively communicate with AI systems and structure problems in ways they can solve.

The technology is here, it works, and it's only getting better. The question isn't whether AI will change software development - it already has. The question is how quickly we can adapt our processes and expectations to take full advantage of these capabilities while maintaining the quality and reliability that professional software requires.

Finis.