Listicle: Does AI Need Craft?
Agentic coding should be judged by safe delivery, not generation speed
Has Craft become irrelevant?
There are, unsurprisingly, bursts of hyperbole in social media declaring that craft, process, tests, taste, quality, experience, or some other reason for hiring professional developers is no longer needed now that “coding is solved by AI”1
This is a perfectly reasonable assertion to make, a great start to a debate, but is it true? We shouldn’t just assume that AI is so perfect that it transcends all the limits and principles of software design.
It’s been my understanding that when code is easy to read and understand, people are less likely to misunderstand it. While that goes to some basic naming and style, those are less important in human development than many other factors (see the 8 Code Virtues which are non-subjective.
Yet, here we are, with people claiming that agents don’t need the same “help.”
So, what evidence do we have?
This listicle is not presented as proof positive that the claims are wrong, but are merely collections of studies and papers, of varying degrees of authority, that might offer directions for further study.
Names carry intent
I’ve been studying naming of classes, functions, variables and modules for some time, and wrote not only the Clean Code chapter on naming, but also a book on the topic.
I am pleased to find evidence that naming is valuable, but I am also aware the that the evidence is mixed. I’d like to see more research here.
Duplication hides missing concepts
Duplicated rules, validations, and error handling are not merely stylistic problems; They open the opportunity for divergent representations of the same intent.
A lot of duplicated code phrases also represent scattered or distributed semantics - code in many places may be restating guards or operations that a human or agent would have to discover and rationalize, and might possibly repeat again.
Simplicity reduces future risk
Tests preserve behavior
Tests describe the semantics and rules for a component (class, function, module). Are they read and understood as a basis for further development by agents? Do they protect against agentically-induced defects?
Context must be accurate
The most obvious documentation in a codebase is literally documentation.
How can documentation be best presented to agents, so that it informs decisions but does not overwhelm the context window?
Review is part of the work
Where do we stand on code reviews? Are they still necessary, and how may we best conduct them, and are humans even necessary in the review process?
Sooner, not faster
Here we have some articles (some by me) commenting on the famous slowdown some companies have reported.
The most important idea here is that task completion (closing a ticket, generating code) is less important than whether the completed work can be promoted to production without “bouncing back” from CI or testing for rework.
The claim isn’t settled
Today, there are still differnet points of view and studies that seem contradictory.
I am going to continue pursuing higher degrees of the 8 Code Virtues for better representation of knowledge in software until this shakes out one way or another; it’s my bet.
Please feel free to offer additional studies, even contrary studies, in social media.
Footnotes
an oft repeated phrase among ai vendors↩︎