Remix.run Logo
maxbond 6 hours ago

I don't think we should be making this distinction. We're still engaged in software engineering. This isn't a new discipline, it's a new technique. We're still using testing, requirements gathering, etc. to ensure we've produced the correct product and that the product is correct. Just with more automation.

ssgodderidge 6 hours ago | parent | next [-]

I agree, partly. I feel the main goal of the term “agentic engineering” is to distinguish the new technique of software engineering from “Vibe Coding.” Many felt vibe coding insinuated you didn’t know what you were doing; that you weren’t _engineering_.

In other words, “Agentic engineering” feels like the response of engineers who use AI to write code, but want to maintain the skill distinction to the pure “vibe coders.”

zx8080 3 hours ago | parent | next [-]

> “Agentic engineering” feels like the response of engineers who use AI to write code, but want to maintain the skill distinction to the pure “vibe coders.”

If there's such. The border is vague at most.

There're "known unknowns" and "unknown unknowns" when working with systems. In this terms, there's no distinction between vibe-coding and agentic engineering.

simonw 3 hours ago | parent [-]

My definition to "vibe coding" is the one where you prompt without ever looking at the code that's being produced.

The moment you start paying attention to the code it's not vibe coding any more.

Update: I added that definition to the article: https://simonwillison.net/guides/agentic-engineering-pattern...

zx8080 3 hours ago | parent [-]

What if you review 50%? Or 10%? Or only 1%, is it not vibe coding yet?

Where is the borderline?

simonw 3 hours ago | parent | next [-]

I think the borderline is when you take responsibility for the code, and stop blaming the LLM for any mistakes.

That's the level of responsibility I want to see from people using LLMs in a professional context. I want them to take full ownership of the changes they are producing.

zx8080 an hour ago | parent | next [-]

Sounds good, however the bar is probably too far and far too idealistic.

The effects of vibecoding destroys trust inside teams and orgs, between engineers.

Toutouxc an hour ago | parent | prev | next [-]

And are you not seeing that level of responsibility?

simonw an hour ago | parent [-]

I'm trying to demonstrate that in my own work, but from the comments I see in places like Hacker News there are a lot of people who aren't.

I wrote a note about that here: https://simonwillison.net/guides/agentic-engineering-pattern...

maxbond 3 hours ago | parent | prev [-]

I don't blame the agent for mistakes in my vibe coded personal software, it's always my fault. To me it's like this:

80%+: You don't understand the codebase. Correctness is ensured through manual testing and asking the agent to find bugs. You're only concerned with outcomes, the code is sloppy.

50%: You understand the structure of the codebase, you are skimming changes in your session, but correctness is still ensured mostly through manual testing and asking the agent to review. Code quality is questionable but you're keeping it from spinning out of control. Critically, you are hands on enough to ensure security, data integrity, the stuff that really counts at the end of the day.

20%-: You've designed the structure of the codebase, you are writing most of the code, you are probably only copypasting code from a chatbot if you're generating code at all. The code is probably well made and maintainable.

Toutouxc an hour ago | parent [-]

I feel like there’s one more dimension. For me, 95%+ of code that I ship has been written (i.e. typed out) by a LLM, but the architecture and structure, down to method and variable names, is mine, and completely my responsibility.

000ooo000 3 hours ago | parent | prev [-]

Have to consult the Definition Engineers to find out

2 hours ago | parent | prev [-]
[deleted]
an hour ago | parent | prev | next [-]
[deleted]
simonw 6 hours ago | parent | prev | next [-]

Yeah, I see agentic engineering as a sub-field or a technique within software engineering.

I entirely agree that engineering practices still matter. It has been fascinating to watch how so many of the techniques associated with high-quality software engineering - automated tests and linting and clear documentation and CI and CD and cleanly factored code and so on - turn out to help coding agents produce better results as well.

skydhash 6 hours ago | parent | prev | next [-]

My preferred definition of software engineering is found in the first chapter of Modern Software Engineering by David Farley

  Software engineering is the application of an empirical, scientific approach to finding efficient, economic solutions to practical problems in software.
As for the practitioner, he said that they:

  …must become experts at learning and experts at managing complexity
For the learning part, that means

  Iteration
  Feedback
  Incrementalism
  Experimentation
  Empiricism
For the complexity part, that means

  Modularity
  Cohesion
  Separation of Concerns
  Abstraction
  Loose Coupling
Anyone that advocates for agentic engineering has been very silent about the above points. Even for the very first definition, it seems that we’re no longer seeking to solve practical problems, nor proposing economical solutions for them.
simonw 5 hours ago | parent | next [-]

That definition of software engineering is a great illustration of why I like the term agentic engineering.

Using coding agents to responsibly and productively build good software benefits from all of those characteristics.

The challenge I'm interested in is how we professionalize the way we use these new tools. I want to figure out how to use them to write better software than we were writing without them.

See my definition of "good code" in a subsequent chapter: https://simonwillison.net/guides/agentic-engineering-pattern...

skydhash 5 hours ago | parent [-]

I’ve read the chapter and while the description is good, there’s no actual steps or at least a general direction/philosophy on how to get there. It does not need to be perfect, it just needs to be practical. Then we could contrast the methodology with what we already have to learn the tradeoffs, if they can be combined, etc…

Anything that relates to “Agentic Engineering” is still hand-wavey or trying to impose a new lens on existing practices (which is why so many professionals are skeptical)

ADDENDUM

I like this paragraph of yours

We need to provide our coding agents with the tools they need to solve our problems, specify those problems in the right level of detail, and verify and iterate on the results until we are confident they address our problems in a robust and credible way.

There’s a parallel that can be made with Unix tools (best described in the Unix Power Tools) or with Emacs. Both aim to provide the user a set of small tools that can be composed and do amazing works. One similar observation I made from my experiment with agents was creating small deterministic tools (kinda the same thing I make with my OS and Emacs), and then let it be the driver. Such tools have simple instructions, but their worth is in their combination. I’ve never have to use more than 25 percent of the context and I’m generally done within minutes.

simonw 5 hours ago | parent | next [-]

> there’s no actual steps or at least a general direction/philosophy on how to get there

That's what the rest of the guide is meant to cover: https://simonwillison.net/guides/agentic-engineering-pattern...

justboy1987 3 hours ago | parent | prev [-]

[dead]

esafak 4 hours ago | parent | prev [-]

You can do these things with AI, especially if you start off with a repo that demonstrates how, for the agent to imitate. I do suggest collaborating with the agent on a plan first.

archagon 3 hours ago | parent | prev [-]

Actually, if you defer all your coding decisions to agents, then you're not doing engineering at all. You don't say you're doing "contractor engineering" when you pay some folks to write your app for you. At that point, you are squarely in the management field.

maxbond 2 hours ago | parent [-]

If you're producing a technological artifact and you are ensuring it has certain properties while working within certain constraints, then in my mind you're engineering and it's a question of the degree of rigor. Engineers in the "hard engineering" fields (eg mechanical engineers, civil engineers) a rule don't build the things they design, they spend a lot of time managing/working with contractors.

Peritract 42 minutes ago | parent [-]

> If you're producing a technological artifact and you are ensuring it has certain properties while working within certain constraints, then in my mind you're engineering

This covers every level of management in tech companies.