Blog

My Experience with Vibe Coding Left Me with More Questions Than Answers

I built an entire flight school management system in under a week using AI agents. Every line of code, frontend, backend, infrastructure, was AI-written. Here's what I learned.

Over Thanksgiving break, my company's CEO generously grants all employees the entire week off. It's typically a moment to spend with family here in the US, especially Thursday, where I take pride in preparing my Gordon Ramsay-inspired turkey.

But for a tinkerer like myself, the rest of the days are fair game. So I decided to pursue a "quick" project: building a flight school management system.

If you know anything about aviation, you know that some of the existing systems are less than stellar, or at least they don't adapt well to the specific needs of my other endeavor, a flight school. Being the stubborn engineer that I am, I decided to build my own.

The Multidisciplinary Challenge

Building a system like this is inherently multidisciplinary. You need to be well-versed in frontend, backend, and infrastructure. As a software engineer, my expertise lies primarily in backend systems and infrastructure. Frontend development? That's something I've historically had very little interest in pursuing.

In the interest of time, and having extensive experience with agentic models and patterns, I decided to hire a few "contractors" to help. I had less than five days to get an MVP into production, and Claude provided those agents at the reasonable price of $17/month.

Where Experience Becomes the Differentiator

I started with plan mode to define all functional and non-functional requirements for the system. This is when I realized how critical experience is when working with AI agents effectively.

AI agents can certainly guide a junior engineer from idea to implementation, but having years of experience dramatically shortens that path. This became abundantly clear when comparing my frontend work to my backend work.

Backend development was a breeze. Clear requirements, established patterns, data modeling executed to near-perfection, not because I'm an exceptional data modeler, but because I know what good models look like. AI filled in any gaps I may have missed.

Frontend was a different story. It became more of an attrition game. My lack of experience in frontend design resulted in significantly more back-and-forth conversations with AI and considerably more tokens consumed. The feedback loop was longer, the iterations more frequent, and the path to a working solution far less direct.

Beyond the basics, experience surfaces everywhere. Testing, SEO, security, caching, TTLs, certificate management. These are areas junior engineers often overlook, not due to lack of ability, but lack of exposure. Testing might be an exception, as any respectable computer science curriculum includes software testing. But SEO? That's a practice requiring knowledge rarely found in academic coursework.

Consider scalability: knowing when to introduce a caching layer like Redis between the frontend and backend database, identifying which endpoints see the heaviest traffic, understanding the ratio of reads (GETs) versus writes (POSTs and PUTs). Which endpoints benefit from a TTL? Which require fresh data on every request? These are query and caching optimizations that come from years of operational experience.

Then there's security: certificate management, penetration testing, proper authentication flows. All of these aspects were addressed in the development of AviatorFlow, and in each case, my experience allowed me to guide the AI toward the right implementation rather than discovering gaps after deployment.

AI agents as a feature, not just a tool. Perhaps the most forward-looking aspect of this project was implementing an AI agent that interfaces directly with the backend API. This conversational assistant helps users accomplish common tasks within the platform: scheduling aircraft and instructors, finding open slots in the calendar, reviewing certificate progress, and answering questions about training requirements. Building this feature required understanding how to expose API endpoints safely to an LLM, how to structure prompts for reliability, and how to handle edge cases gracefully. Again, experience with agentic patterns made this implementation straightforward, something that would have been a significant research project for someone encountering these concepts for the first time.

The Result: AviatorFlow

Despite the challenges, the outcome of this exercise was genuinely eye-opening. It culminated in AviatorFlow, a complete flight school management system where every single line of code in the frontend, backend, and infrastructure was purely AI-written.

AviatorFlow Dashboard

I made the architectural decisions. I defined the technology stack: FastAPI for the backend, Next.js with Tailwind CSS for the frontend (AI suggested Next.js; I added Tailwind), Kubernetes for orchestration, and GitHub Actions for CI/CD.

AviatorFlow Scheduling Interface

Working locally with hot reload and simply pushing and tagging to deploy to production was seamless. The developer experience was remarkably smooth for a system built almost entirely through conversation.

Questions About the Future

This entire exercise left me contemplating the future of software engineering.

It's no surprise that companies are increasingly seeking senior engineers. Senior engineers leveraging AI agents can become 10x, perhaps even 100x, more productive. Those who refuse to adopt these tools will inevitably be left behind.

Junior developers now face a genuine dilemma: how do you gain experience when AI agents can readily perform entry-level tasks? Yet this same dynamic opens enormous opportunities for entrepreneurship. Junior engineers can use AI to bridge expertise gaps, deploying MVPs in weeks, or even days, rather than months.

The future of software engineering is certainly uncertain. But drawing from past experiences with industry-transforming technologies, I believe the industry will ultimately require more developers and engineers, working symbiotically with AI agents to accelerate software delivery and productivity.

Code quality, especially test coverage, will benefit enormously from AI assistance. This means systems can become increasingly complex while maintaining reliability. Humans will gradually transition into AI managers: orchestrating, reviewing, and directing rather than writing every line by hand.

Cautious Optimism

I'm cautiously excited about the future of software development. The productivity gains are real and substantial. But with those gains will come challenges, ethical, organizational, and technical, that we'll need to address as they emerge.

For now, I have a working flight school management system, built in under a week, and a head full of questions about where this all leads.