4 comments

[ 3.1 ms ] story [ 22.5 ms ] thread
Someone still has to orchestrate. I read every decision the LMs make and will stop and pause it and test it's assumptions and output. Sure that will occur less and less, and the feedback loop may go up a few levels (I.e. it breaks in production and requires a team of investigators, a code detective, and a techno-theologist, perhaps), but the feedback from the real world (nature vs nurture) will still occur. The laws of thermodynamics and system equilibrium still apply, and the need for those to architect and orchestrate will still be needed.

In the future, I see a small percentage of benevolent system-thinkers, hackers, and architects still at the helm. And, even if 95% of the time they are the guy who feeds the dog that protects us from touching the machines, occasionally nature will force us to convene and tell the machines what to do (or at least bargain with them).

The rest of humanity will go back to the default state: digging potatoes out of the ground in a village of 200 down by the river.

    > …to refactor and improve the quality of a microservice.
    > …
    > It worked. It vastly improved the code base…
That sounds like an amazing learning opportunity!

Would you be up for sharing before refactor and after refactor versions of your experiment in a public repo?

Thanks in advance.

Because the autonomous agent deal is new to me, this thread's blog post piqued my interest. I thought about trying to replicate the experiment. But I'm lazy :)

Instead, I ended up getting a coding agent to run through a thought experiment [1] based on the method described in the blog post.

The AI's critique sounds kinda harsh to me. So, I'm quoting only a snippet of it here…

———

…Running this specific recursive loop without a higher-level architectural constraint or a "convergence metric" will likely result in a specific type of technical debt known as _Ravioli Code_ (the inverse of Spaghetti Code)…

The prompt provided optimizes for _local code metrics_ (file length, shallow SRP) at the expense of _global architectural cohesion_.

In your specific $A \to B(C)$ scenario: _$A$ stops being a class that "does something" and becomes a class that "configures things that do things_."

The eventual system is one where every piece is perfectly unit-testable, perfectly mockable, and adhering to strict SRP, yet the system as a whole is incomprehensible to a human reader because the "story" of the code has been shredded into a thousand paragraphs scattered on the floor…

———

Again, those are the words of the automaton; not mine. I simply pointed it at the blog post and this thread. I asked it what it thought of the approach and final results discussed in the blog post.

Then, in the vibe coders' vernacular, I "let it rip" ;)

Today I noticed a follow up blog post [2]. That one noted a number of things that resonate with my relatively lightweight experience with agentic coding

    > …
    > We're not there yet…
    > …
    > If you want the agent to tackle a
    > specific architectural smell, you
    > need to name it…
    > …
    > You need to give direction. The
    > refactoring principles are specific
    > to each project's goals and technology choices.
    > …



[1] https://g2ww.short.gy/TIL2Ralph

[2] https://frederic.vanderessen.com/posts/unsupervised-refactor...