Skip to main content
David Dew Mallick

David Dew Mallick

ProjectsExperienceSkillsBlog
Back to blog
vibe codingdeveloper workflowsoftware engineeringcareer growth

Vibe Coding Workflow for Engineers in Bangladesh

A practical look at the vibe coding workflow: how fast prototyping with AI editors changes daily engineering work in Dhaka.

Nov 24, 2025 · 5 min read · Updated Oct 11, 2026

AI editors can turn a day of scaffolding into an hour, but they can also fill a codebase with diffs nobody reviewed. The difference is not the tool. It is the workflow around it. Rapid prototyping is the visible win; review discipline is what keeps it from becoming technical debt. This guide describes a vibe coding workflow that keeps the speed while keeping the code reviewable, tested, and safe to ship.

What does vibe coding mean for a working engineer?

Vibe coding means describing the change you want in plain language, letting an AI editor produce the diff, and iterating on the result until it fits. The speed is real, but the risk is equally real: generated code arrives with confidence and without context about your domain rules, your data, or your production constraints.

Treat the assistant as a fast junior developer with perfect recall of syntax and no knowledge of your system. That framing decides everything that follows: what you delegate, what you review, and what you never accept without proof.

A workflow that keeps the speed without the mess

The workflow below fits any AI editor, from Cursor to Claude Code to the coding agents you can run through an OpenCode Go subscription. It is deliberately boring, because boring is what keeps generated diffs reviewable.

  1. Scope one change per prompt. "Add a rate limiter to the login route" is reviewable. "Improve the app" is not. Small scopes produce small diffs, and small diffs get reviewed.
  2. Give the model real context. Paste the file, the framework version, and the constraint that matters, such as "PostgreSQL 16, Laravel 12, no new dependencies". Models fill gaps with plausible defaults, and plausible defaults are how bugs enter.
  3. Read every diff before accepting. Not skim: read. Check imports, error handling, and whether the code does what the comment says. The review is the job; generation is only the draft.
  4. Run the tests before you trust the change. If the project has no test for the touched behavior, write one first or ask the assistant to write one, then verify it fails before the fix and passes after.
  5. Commit small. One logical change per commit keeps the history readable and makes a bad generation easy to revert.

Ask for the smallest possible diff. A prompt that says "change only this function, keep the public API stable" produces code you can review in two minutes instead of twenty.

Where AI editors actually save time

Generated code pays off most in work that is mechanical, well specified, and easy to verify. Four categories stand out.

TaskWhy it worksWhat to verify
Boilerplate and scaffoldingStructure is predictableNaming, wiring, and unused imports
Test scaffoldingArrange and assert patterns repeatThat tests fail without the fix
Unfamiliar APIsThe model recalls signaturesVersion compatibility and error paths
Mechanical refactorsChanges are local and repetitiveBehavior is unchanged

None of these categories removes the human step. They move your time from typing to checking, which is the correct trade for a senior engineer.

Where they quietly cost you

Generated code gets expensive in places where correctness depends on context the model does not have.

  • Security-sensitive paths. Authentication, authorization, and input handling need a reviewer who understands the threat model, not a plausible-looking snippet.
  • Business rules. A discount rule or a billing edge case lives in your team's head and your tickets, not in the training data.
  • Performance-critical queries. A generated query can be correct and still missing the index it needs. The concurrency pitfalls in PostgreSQL row locking are a good reminder that correctness and speed are separate checks.
  • Dependency upgrades. Version-specific behavior changes faster than model knowledge, so verify against official documentation before accepting.

The pattern is consistent: the closer the code gets to your domain and your production constraints, the more the review matters and the less the generation helps.

How to review a generated diff in five minutes

Review is a skill, and a fixed order makes it faster. Start with git diff --stat to catch scope creep: if the assistant touched files you did not ask about, stop and read those first. Then check new imports and dependencies, because a generated package is a decision you did not make.

Next, follow the error paths. Generated code often handles the happy path and treats exceptions as an afterthought. Then check every data access: queries, writes, and anything that assumes a shape the database may not guarantee. Finish with the tests, and make sure they would fail if the change were reverted. Five minutes is enough when the diff is small; if it is not small, the prompt was too broad.

When to leave the AI editor closed

There are situations where generation costs more than it saves. During an incident or a hotfix, the priority is a change you fully understand. When requirements are still ambiguous, a generated implementation locks in assumptions that are expensive to undo. On an unfamiliar production system, reading the code and the runbooks beats prompting. And for performance work, measure first: a plausible optimization without a profile is a guess with extra steps.

None of this makes the tool less useful. It makes the boundary explicit, which is what lets you move fast everywhere else.

A prompt pattern for reviewable diffs

Most disappointing generations come from underspecified prompts, not weak models. A short template fixes most of it:

Task: add pagination to the orders index endpoint.
Scope: app/Http/Controllers/OrderController.php only.
Constraints: Laravel 12, PostgreSQL, no new packages, keep the existing response shape.
Done when: the endpoint returns 25 rows per page and the existing tests still pass.
Ask before: changing any other file or adding a dependency.

The last two lines matter most. "Done when" gives the model a target it can reason about, and "ask before" stops it from quietly rewriting half the application while you are reading the first file.

The Bangladesh context

Engineering teams in Dhaka tend to run lean: small teams, wide ownership, and a constant stream of new frameworks to absorb. AI editors compress the learning loop, which is exactly why the review discipline has to be explicit. In a team where one engineer owns a service end to end, nobody else is going to catch an unreviewed generated diff.

The upside is equally real. Small teams can ship prototypes in days and spend the saved time on tests, observability, and the parts of the product that differentiate. The tooling is not the advantage; a developer workflow that survives deadlines is.

A checklist before you accept a generated change

Before accepting

Scope was one change. The diff was read line by line. Tests cover the behavior and passed locally. No new dependencies without a decision. The commit message explains why, not just what.

Run this checklist for a week on one repository. If the generated changes keep passing it, keep going. If they do not, tighten the prompts and the tests before you widen the scope.

Keep reading

If you want to go deeper on the two habits that make this workflow safe, start with why passing test suites still ship bugs and the career notes in the DORA metrics guide.

DD

David Dew Mallick

Intermediate Software Engineer

GitHubLinkedInEmail

More posts

  • Oct 28, 2026 · 8 min read

    Database Sharding: When One Postgres Stops Working

    A decision guide for when database sharding pays off, the failure modes that push you to it, and how to shard without breaking SQL joins and transactions.

  • Oct 28, 2026 · 7 min read

    Database Best Practices: Primary Keys That Scale

    Pick integer, UUID, or UUIDv7 primary keys using index size and write-rate thresholds, plus a reproducible test that shows how random UUIDs bloat B-trees.

On this page

  • What does vibe coding mean for a working engineer?
  • A workflow that keeps the speed without the mess
  • Where AI editors actually save time
  • Where they quietly cost you
  • How to review a generated diff in five minutes
  • When to leave the AI editor closed
  • A prompt pattern for reviewable diffs
  • The Bangladesh context
  • A checklist before you accept a generated change
  • Keep reading
Back to top

End of record

Back to top↑

David Dew Mallick

Dhaka, Bangladesh

Contact

  • david.dew.mallick@g.bracu.ac.bd
  • GitHub
  • LinkedIn

2026 David Dew Mallick

  • Privacy
  • Terms
  • Cookies