Vibe Coding vs AI-Assisted Engineering

Understanding when to "give in to the vibes"
and when to apply engineering discipline

Introduction

https://www.zainfathoni.com/about

  • ๐Ÿ“ Jember โžก๏ธ Bandung โžก๏ธ SG โžก๏ธ
    Jogja
  • ๐Ÿ› ๏ธ Backend โžก๏ธ Manager โžก๏ธ Frontend
  • ๐Ÿค– AI-assisted development practitioner

Agenda

  1. What is Vibe Coding?
  2. Three Developer Personas
  3. When Vibe Coding Works
  4. When Vibe Coding Fails
  5. AI-Assisted Engineering Approach
  6. Core Principles

What is Vibe Coding?

"Fully give in to the vibes and essentially forget the code exists" โ€” Simon
Willison

  • โšก Rapid AI code generation
  • ๐Ÿ”ฎ Minimal code review
  • ๐Ÿงช "Just see what happens"
  • โœจ Playful, experimental process
  • ๐Ÿ„ Accepting changes without reading diffs

The Vibe Coding Philosophy

๐Ÿ‘‹ Democratizing Development

Positive aspects:

  • ๐Ÿ”“ Lowers barriers to software development
  • ๐Ÿ“š Helps learn through experimentation
  • ๐Ÿ’ก Builds intuition about AI capabilities
  • ๐Ÿ› ๏ธ Enables non-technical people to create tools

But with caveats...

Three Developer Personas

๐Ÿ‘ฅ Who are you?

  1. โœจ "Vibe Coders" - Rely heavily on AI, minimal review
  2. ๐Ÿค  "Rodeo Cowboys" - High-risk, fast-paced coding
  3. ๐Ÿ”’ "Prisoners" - Overly constrained, risk-averse

Goal: Balance between speed and discipline

When Vibe Coding Works

โœ… Low-Stakes Scenarios

  • ๐ŸŽจ Weekend projects - Personal experiments
  • ๐Ÿ’ก Rapid prototyping - Quick proof of concepts
  • ๐Ÿ† Hackathons - Speed over perfection
  • ๐Ÿ”ง One-off scripts - Throwaway automation
  • ๐Ÿงญ Learning experiments - Building coding intuition

Key: Low stakes, no production impact, learning-focused

Safeguards for Vibe Coding

๐Ÿ›ก๏ธ Stay Safe When Vibing

Even in low-stakes projects, be cautious with:

  • ๐Ÿ”‘ Secrets handling - API keys, credentials
  • ๐Ÿ”’ Private data - Personal or sensitive information
  • ๐ŸŒ Network requests - Unexpected API calls
  • ๐Ÿ’ฐ Financial implications - Payment processing

When Vibe Coding Fails

โŒ High-Stakes Disasters

  • ๐Ÿ”’ Security vulnerabilities - Exposed credentials, SQL injection
  • ๐ŸŒ Performance issues - Unoptimized queries, memory leaks
  • ๐Ÿ Unmaintainable code - No structure, inconsistent patterns
  • โ“ Lack of understanding - Can't debug or extend
  • ๐Ÿ’ฃ Production incidents - Real-world consequences

Real-World Disasters

๐Ÿ™ˆ Learning from Failures

The Cost of Vibe Debugging

๐Ÿ•ต๏ธ "Like Archaeology"

When vibe coding reaches production:

  • ๐Ÿ“‰ Performance issues - Queries work in dev,
    crash in production
  • ๐Ÿ”’ Security bugs - Inverted logic, hidden vulnerabilities
  • ๐Ÿ Maintainability nightmare - "Middleware scattered across six
    files"
  • ๐Ÿ”„ Cascading failures - Minor changes break
    everything
  • ๐Ÿ—‘๏ธ Complete rewrites - Often the only solution

๐Ÿšซ Not an excuse to Skip Engineering

The Critical Distinction

โŒ Vibe Coding โ‰  AI-Assisted Engineering

"AI can accelerate development, but it cannot replace fundamental software
engineering principles." โ€” Addy Osmani

Vibe coding: Great for learning and exploration Production software:
Requires engineering discipline

AI-Assisted Engineering

โš™๏ธ Structured Approach for Production

  • ๐Ÿ›ก๏ธ Human oversight - Review and verify all code
  • ๐Ÿ“š Engineering principles - Architecture, patterns, standards
  • ๐Ÿงช Rigorous testing - Unit, integration, E2E
  • ๐Ÿ” Code review - Same standards as human-written code
  • ๐Ÿค AI as collaborative tool - Not replacement

Spec-Driven Development

๐Ÿ“ Best Practices for Production

  1. ๐Ÿ“‹ Start with clear specifications
  2. ๐Ÿค Collaborate with AI on design
  3. ๐Ÿงช Write tests first (TDD)
  4. ๐Ÿ”„ Iterate in testable increments
  5. ๐Ÿ‘€ Maintain human oversight
  6. ๐Ÿ” Review and understand all generated code

Treat AI Like a Junior Developer

๐Ÿง‘โ€๐Ÿซ Supervision Required

  • โœ… Review all code thoroughly
  • ๐Ÿงช Implement rigorous testing
  • ๐ŸŽจ Maintain clear architectural intent
  • ๐Ÿ“š Ensure understanding, not just acceptance
  • ๐Ÿ‘ฅ Apply same standards as human developers

AI needs guidance and verification

The Spectrum of AI-Assisted Development

Aspect Vibe Coding AI-Assisted Engineering
๐ŸŽฏ Use Case Learning, experiments Production systems
๐Ÿ›ก๏ธ Risk Low stakes High stakes
๐Ÿ” Review Minimal Rigorous
๐Ÿงช Testing Happy path only Comprehensive

When to Vibe Code

๐Ÿ„ Low-Stakes Scenarios

  • ๐ŸŽจ Personal projects and learning
  • ๐Ÿงช Throwaway prototypes
  • ๐Ÿ’ก Exploring new ideas
  • ๐Ÿ›ก๏ธ Always with proper safeguards

When to Apply Engineering Rigor

โš™๏ธ High-Stakes Scenarios

  • ๐Ÿ—๏ธ Production applications
  • ๐Ÿ’ผ Client/business projects
  • ๐Ÿ‘ฅ Team codebases
  • ๐Ÿ”’ Anything security-sensitive

Core Principles

๐Ÿง‘โ€โœˆ๏ธ You are the Pilot

  • Know which mode you're in
  • Verify based on stakes
  • Stay accountable

Key Takeaways

  1. ๐Ÿ„ Vibe coding has value - Great for learning and experimentation
  2. ๐Ÿ”“ Democratizing development - Lowers barriers, builds intuition
  3. ๐Ÿ›ก๏ธ Know the stakes - Low-stakes vibes, high-stakes discipline
  4. โš™๏ธ Production needs rigor - Specs, tests, reviews, understanding
  5. ๐Ÿง  Understand your mode - Match approach to consequences

Conclusion

The tools and methods are evolving, but accountability, craftsmanship, and collaboration remain paramount in the age of AI-assisted engineering. โ€” Addy Osmani

โš–๏ธ The Balance

Embrace vibe coding for learning, apply engineering discipline for production

Demo 1: Vibe Coding

๐Ÿ„ Rebuild with Bolt.new

Project: https://centuries.zavi.family/

  • Better editing experience
  • Add database storage
  • New repository, rapid iteration
  • See what happens!

Demo 2: AI-Assisted Engineering

โš™๏ธ Fix Mobile View

Project: https://github.com/zainfathoni/book-of-centuries

  • Spec-driven approach
  • Write tests first
  • Review and verify changes
  • Production-ready

๐Ÿ™ Thank You

๐Ÿ–ฅ๏ธ https://zainf.dev/vibe-coding-vs-ai-assisted-engineering

๐Ÿ”— https://github.com/zainfathoni/zainf

Questions?

References