Remix.run Logo
skydhash 5 hours ago

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.