A Watershed Moment in Software Engineering: Embracing AI as the Ultimate Power Tool
AI can write code; only you can own it

Tom Cantwell, Software Engineer
Jul. 23, 2025
TL;DR: Like the printing press, CAD, and Photoshop, AI-assisted programming doesn’t erase craftsmanship—it redirects it. Used well, it shreds boilerplate and speeds greenfield work, freeing engineers for the hard stuff. Used carelessly—“vibe coding”—it leaks secrets, piles on tech debt, and spawns security bugs. Treat AI as a reviewed consultant: keep code modular, enforce standards, refactor often, and sharpen fundamentals. As the modern engineer takes on new roles to work with AI assistance, the ability to understand the code is paramount.
When Gutenberg unleashed movable type in the 15th century, scribes feared obsolescence—yet literacy exploded, and new careers from proofreaders to publishers emerged. In the 1980s, CAD software seemed poised to sideline draughtsmen but unlocked complex analyses and simulations; a decade later, Photoshop presets threatened to commoditize retouching yet freed designers to focus on brand storytelling and creative direction. These “productivity tools” didn’t replace craftsmanship—they reshaped it.

A bustling Renaissance print shop—typesetters, inkers, and pressmen turning one voice into thousands of pages. AI now scales software in a similar way.
Today, AI-assisted programming stands alongside those milestones—reshaping what we build and how quickly we can do it. While some worry that engineers will be replaced, history shows that tools amplifying our capabilities ultimately expand both the scale and ambition of our work.
Supercharging Development for Greenfield Projects
AI-assisted programming compresses stages that once took days—boilerplate models, controllers, routes, tests—all scaffolded in minutes. Granted, that initial scaffolding still comes with hours of refinement, correction and tweaking to get just right, but the savings for the initial timeframe are still very significant. From our recent experience with our new CookClub project, for instance, prompts tailored to generate specific boilerplate or UI changes proved to have the most impact on development speed.
Prompts like “Make the leaderboard routes and have the frontend hook into it” or “Move the notification bell to the corner,” etc. required very little human input to get working, freeing engineers from rote tasks. These rapid, boilerplate-level changes not only slash development hours but also cut labor costs and tighten budget forecasts, turning time saved into direct financial impact.

CookClub screens showing a user’s feed, a featured dish, and a leaderboard of top dishes with ratings.
Rapid prototyping shifts from laborious rewrites to iterative prompt refinement. Manual refinement of the code is still necessary as well, but the payoff is dramatic: MVPs land weeks earlier, bids become tighter, and teams can free up their most experienced engineers to tackle the project’s toughest challenges.
AI-Assisted Programming vs. “Vibe Coding”
Not all AI-driven workflows are equally sustainable. “Vibe coding”—the flow of velocity-first, trial-and-error prompts—can be exhilarating for greenfield exploration and fast client demos. It lets you sketch UI ideas or spin up proof-of-concepts without committing architecture. But without discipline, those throwaway bits can bleed into production, spawning hidden technical debt, unpredictable behavior, and even security exposures.
For example, AI assistants have been shown to regurgitate hard-coded secrets—like API keys or tokens—directly into generated snippets, creating a risk of credential leakage if those snippets make their way into shared or public repositories (GitGuardian). Moreover, because current LLM-based code generators frequently produce insecure or buggy code—and the models themselves can be vulnerable to attack or manipulation—they can introduce critical vulnerabilities (Study by CSET) into your software supply chain. Such incidents underscore how unstructured “vibe coding” can put both your data and intellectual property at risk as a project grows.
By contrast, true AI-assisted programming embeds AI suggestions into a structured development process: every snippet is mentally traced, peer-reviewed, and merged via pull requests—never rubber-stamped into production. Iterative refinement means crafting precise, context-rich instructions and curating outputs manually to align with your team’s security policies and style standards.
In practice, vibe coding remains useful for rapid idea exploration—especially in early stakeholder discussions. But as a project moves toward scale, maintenance, and the protection of sensitive data, a disciplined, review-backed approach isn’t just best practice; it’s essential for reliability, clarity, and security.
What Responsible AI-Assisted Programming Looks Like
Treat AI as a consultant, not an autopilot. Every AI suggestion should be reviewed, discussed, and integrated through standard processes—code reviews, pair programming, and pull requests.
A modular, component-based architecture further helps manage AI’s influence by containing its effects within well-defined parts of the system. For CookClub, we hit a Next.js router limitation—opening a page in a new tab reset history and treated it as the “/” route, kicking users off-site when using navigation buttons to try going back within the new tab. This was not a problem that the AI could solve on its own at first. By encapsulating a custom history-preserving router component (which stored path and URL together), we were able to then prompt the AI on each sub-problem, then stitch its suggestions into a human-vetted solution.
When code is broken into isolated components with clear interfaces and responsibilities, you can target AI assistance only where it’s most valuable—while keeping core business logic and critical pathways under tight manual control. This approach not only simplifies review and testing of AI-generated code but also makes future refactoring and security audits more straightforward.
Common Pitfalls
Even the best tools can backfire without the right precautions. Overreliance dulls critical thinking—blindly accepting “magic” fixes invites hallucinations and edge-case bugs. Even without those risks, inconsistent style and sparse documentation can quickly erode readability across a team. And remember: as AI accelerates coding, it can also accelerate misalignment with product goals or marketing needs unless engineers stay plugged into the broader context of what they’re building.
Guard against common pitfalls:
Blind trust: Don’t accept generated code without verification—AI can hallucinate, introduce bugs, or embed secrets. Letting AI modify existing code freely also risks introducing regressions.
Inconsistent style: Enforce coding standards and documentation to maintain readability.
Hidden debt: Schedule regular refactoring sprints and comprehensive regression tests to catch edge cases before they become problems.
As AI becomes more commonplace in the developer’s toolkit, it becomes more important than ever to have a solid grasp of coding fundamentals. Before AI, if you couldn’t understand your code, you probably couldn’t write it at all to begin with. That’s no longer the case, and as you spend less time actually writing the code itself, it becomes paramount to spend the extra effort to keep your knowledge and skills sharp so that you can effectively understand the AI output. Even if the code written by AI doesn't immediately break your project, you risk introducing code that is logically wrong, insecure, or wildly inefficient—and you’re the one accountable for catching that. If you can’t read and reason about what it produced, you can’t debug it, adapt it to new constraints, or trust it in production.
The Engineer as AI Manager & Debugger
Beyond writing code, today’s developers take on roles as prompt engineers, curators, mentors — and even partial product or marketing collaborators, helping shape features and messaging in real time. Senior individual contributors can lean into AI to explore solutions faster, and client-facing developers might even run live coding demos with stakeholders, iterating UI or business logic on the fly. By balancing AI-driven tasks with traditional, hands-on challenges, and by recognizing that each team member will adopt AI at a different pace and for different purposes, organizations can ensure everyone grows their skillset without losing sight of core responsibilities.

Like a trireme, real velocity comes from coordinated rowers and a steady helm—AI is the sail, engineers set the rhythm and course.
By embracing AI as a powerful co-pilot—guided by clear guardrails, rigorous reviews, and human judgment—we’re poised to build more, faster, smarter. Vibe coding will always spark creativity, but disciplined AI-assisted programming is what turns prototypes into production—and helps you punch through the non-technical frustration wall of fuzzy specs, misaligned stakeholders, and process gaps. Set the guardrails, align the team, then let AI amplify the craft. Let’s seize this watershed moment together.