It's funny, but I think the accidental complexity is through the roof. It's skyrocketing.
Nothing about cajoling a model to write what you want it to is essential complexity in software dev.
In addition when you do a lot of building with no theory you tend you make lots and lots of new non-essential complexity.
Devtools are no exception. There was already lots of nonessential complexity in them and in the model era is that gone? ...no don't worry it's all still there. We built all the shiny new layers right on top of all the old decaying layers, like putting lipstick on a pig.
Bro it's fine everyone's doing it get to the program. We all just need to use multiple agents with memory and skills and orchestrate them, connect them to ticketing systems with workload federation and let them create lambdas to push artifacts from a CI that has audit logs and snyk scanning, let them spin up a few kubernetes clusters per commit, then write the test suites with headless chrome and simulated agents that run A/B testing with multiple backups, regional HA, SSO, vertical and horizontal autoscaling, otel agents that rewrite what they collect based on other agentic processes that also run via lambdas that monitor datadog and splunk and sentry, automated PRs and red teaming. If you don't think about all of that even when you sleep do you even care about the customer?
We need a better term. There's nothing accidental about having to smack the parrot until it delivers an acceptable squawk.
> like putting lipstick on a pig.
More like building a house in a bottomless swamp. The moment you finish it starts sinking, so you build a new floor, but it just makes it heavier, and speed up the sinking speed.
I think a reasonable and sensible goal is for us to not mix the accidental and the essential. If we let AI handle what's accidental (as in not central to the solution of the essential problem) developers can focus on the essential only. The current threat is that both types become intertwingled in a code-base, sometimes irreparably.
Fortran made that distinction clear. The compiler handled the accidental complexity of converting instructions to code, but never really obscured the boundary.
Take VB as an example from wayback. For the purposes of presenting a simple data-entry dialog, it removed the accidental complexity of dealing with Windows' message loop and resource files etc., which was painful. The essential complexity was in what the system did with the data. I suppose that the AI steering that needs to happen is to direct the essential down the essential path, and the accidental down the accidental path, and let a dev handle the former and the agent handle the latter (after all, it's accidental).
But, that'll take judgement - deciding in which camp each artifact exists and how it's managed. It might be a whole field of study, but it won't be new.