DEV Community

Cover image for I Didn’t Stop Coding. I Just Started Coding Differently.
Congo Musah
Congo Musah

Posted on

I Didn’t Stop Coding. I Just Started Coding Differently.

Sometime in the middle of last year, I didn’t quit coding.

I leveled it up.

As a founder building across MERN, NestJS, Flutter, Dart, AJAX, PHP, and even jQuery when necessary, I was constantly context switching. Backend logic in the morning. Flutter UI at night. Database indexing somewhere in between.

The bottleneck wasn’t skill.

It was speed.

That’s when I discovered what I now call vibe coding.

And no — it wasn’t laziness.

It was leverage.

What Vibe Coding Really Is

Vibe coding isn’t copy-paste programming.

It isn’t blindly trusting AI.

It isn’t “generate and pray.”

For me, vibe coding means:

Using AI to accelerate execution while your fundamentals stay in control.

When I vibe code, I don’t outsource thinking.

I use the solid foundation I already have — database design, API structuring, async behavior, REST patterns — and then I let AI help me move faster through implementation.

I’m still coding.

I’m just not typing every character manually anymore.

Where It Started

Mid last year, I installed the Blackbox extension in VS Code.

At first, it felt like autocomplete on steroids.

Then I used it to build the first version of the AgriLync waitlist.

Simple stack:

MongoDB schema

Express endpoint

Email validation

Duplicate checks

Clean error responses

I described what I wanted.

It generated a base.

But here’s the key:

I didn’t accept the output.

I refactored it.

Adjusted validation flow

Optimized query handling

Cleaned error structures

Standardized responses

That’s when I realized something important:

AI wasn’t replacing my skill.

It was forcing me to sharpen it.

The Real Shift: From Typing to Directing

When I built Webarb later, I leaned more into vibe coding.

NestJS controllers?
Generated.

CRUD services?
Generated.

Flutter widgets?
Generated.

But architecture?

That was mine.

Database relationships?
Mine.

Auth flow decisions?
Mine.

Security assumptions?
Mine.

AI became an implementation assistant — not an architect.

And that difference matters.

Vibe Coding Pushed Me Into Prompt Engineering (Naturally)

One unexpected outcome?

I became better at giving instructions.

If you give AI vague prompts, you get vague code.

If you give AI structured, specific constraints, you get better output.

So I started learning:

How to structure prompts clearly

How to define constraints

How to specify architecture

How to instruct agents step-by-step

How to iterate responses instead of regenerating blindly

Without realizing it, I was learning prompt engineering in real time.

Not theory.

Practice.

I learned how to:

Instruct agents like junior developers

Break tasks into logical components

Guide outputs toward clean architecture

Refine rather than regenerate

Vibe coding improved my communication skills as an engineer.

That’s something no one talks about.
**
The Discipline Rule**

Let me be honest.

There was a short phase where I started accepting outputs too quickly.

And that’s when things broke.

Async issues.
Poor error handling.
Edge cases not covered.
Inefficient queries.

Not because AI failed.

But because I got lazy reviewing.

That moment taught me the most important rule of vibe coding:

Never ship what you don’t understand.

Now, every generated block goes through:

Refactoring

Cleanup

Naming standard alignment

Edge case review

Performance thinking

AI drafts.

I edit like a senior engineer.

The Pros (When You Use It Right)
1. Speed Without Losing Quality

When building across multiple stacks — MERN backend, Nest APIs, Flutter apps — cognitive fatigue is real.

Vibe coding reduces syntax fatigue.

It frees mental space for:

System design

Scaling considerations

Product thinking

2. Faster Iteration

As a founder, speed matters more than elegance in early phases.

Vibe coding allows:

Rapid prototyping

Fast feature validation

Quick refactoring cycles

You move from idea → working version quickly.

And that changes momentum.

3. It Forces Strong Fundamentals

Ironically, vibe coding exposed weaknesses in my own understanding.

If I couldn’t evaluate generated code confidently, I knew I had a gap.

So I studied more:

Async patterns

Indexing strategies

Security best practices

Architecture layering

Vibe coding didn’t weaken my fundamentals.

It tested them.

The Cons (If You’re Not Ready)
1. Illusion of Progress

You can generate a lot of code fast.

That doesn’t mean you’re building something stable.

If you don’t understand:

Event loops

Query optimization

State management

Error propagation

You’ll ship fragile systems.

2. Debugging Requires Real Skill

Generated code can introduce patterns you didn’t originally write.

If you don’t read and refactor it, debugging becomes painful.

You must review everything.

3. Architecture Drift

AI solves prompts.

It doesn’t protect long-term structure unless you instruct it to.

As a founder, that responsibility is yours.

What You Must Know Before You Start

If you’re a beginner reading this:

Don’t start with vibe coding.

Start with fundamentals.

Learn:

How REST works

How databases index data

How async functions behave

How state flows in your frontend

How authentication works

Then use vibe coding as a multiplier.

Not a crutch.

**
 **

I didn’t stop coding.

I still write code manually.

I still debug deeply.
I still design systems intentionally.

But now I build faster.

Cleaner.

More strategically.

Vibe coding didn’t make me less of an engineer.

It made me more of a technical director.

And as a founder shipping products, that shift matters more than typing speed ever did.

Top comments (0)