Comment by cadamsdotcom

7 days ago

A better term is agentic coding, agentic software engineering, etc. rather than being vibe based.

My process starts from a Claude Code plan, whose first step is to write a spec. I use TDD, and enforce my "unspoken rules of code quality" using a slew of generated tools. One tiny tool blocks code which violates our design system. Another tool blocks code which violates our separation of layering - this forces the HTTP route handler code to only access the database via service layer. Watching the transcript I have to occasionally remind the model to use TDD, but once it's been reminded it doesn't need reminding again until compaction. Claude 4.5 is far better at remembering to do TDD than 4.1 was.

Code reviews are super simple with TDD due to the tests mirroring the code. I also create a simple tool which hands the PR and spec to Gemini and has it describe any discrepancies: extra stuff, incorrect stuff, or missing stuff. It's been great as a backup.

But ultimately there's no substitute for knowing what you want, and knowing how to recognize when the agent is deviating from that.

The opposite of "garbage-in garbage-out" is quality in => quality out.

I spent some time trying to think of a better term because I also think "vibe" detracts from the intent, and I think you nailed it with "agentic coding". Ill do my part by using that term now, hopefully it catches on : D

  • I was writing up some recommendations to my team for using Github Copilot in its different modes + Roo Code/Cline and tried so hard to avoid using “vibe coding” in a professional context. For sake of clarity I ended up including it once in a “you may have heard the term…” style reference but it just comes across as so deeply unserious and felt ridiculous being forced to use it at all.

    I also landed on “agentic coding” FWIW. It’s a bit clunky but didn’t feel like an embarrassment to the entire software industry typing it so I’ll happily use it over the alternative.

> Another tool blocks code which violates our separation of layering - this forces the HTTP route handler code to only access the database via service layer.

Is that an llm agent or some other type of tool (e.g. language service or build toolset)?

  • When I say "tool" I really mean a python script. This particular one is ~100 lines of python with a main() method, that Claude Code wrote in a single shot, that I then committed to the repo in a scripts/ directory. That lets me include it in pre-commit hooks, run it when I run the tests, and have it run during CI.

    A 100 line script finishes in milliseconds and burns no tokens. So you can run it hundreds of times per day.

    The mindset is: will you need repeatability? If so, have the LLM write code, because code gives you determinism.

> remind the model to use TDD

I don't know how vibe coding works, but how does this work - is the agent actually engaging in the red-green-refactor loop, or does it just generate the result all at once?

  • if you ask it to, claude code can definitely write tests, then write code, then try to modify one or the other to make them pass in a loop, yes.

    if you don't ask, it's much more likely to just one shot the whole thing, and may or may not get it right first time.

I agree, “vibe” continues the idea of “going on vibes” rather than facts. This form of engineering is scrupulous and complete. It doesn’t fit.

> A better term is agentic coding, agentic software engineering, etc. rather than being vibe based.

I prefer slop-coding.