AI Art Bad, Code Good
If you were in an art community before generative AI, you almost certainly hate it.
Watching this anti-ai video from
a YouTube channel I like inspired this thought:
Why hasn’t the programming community pushed back as hard as the art community?
These are my unfiltered thoughts that’ll I’ll refine over time.
Skill Issue
The unfortunately reality for some folks in the software industry is that they
struggle to code. They scrape by with Stack Overflow, leaning on others on their
team, and bashing against the problem until it’s solved. Sometimes they code
they work on is very narrowly focused, or programming isn’t their primary duty.
These are the people who don’t know what code quality is and the code is “done”
the first time they get it to work.
If you’re not a skilled developer, coding agents are a godsend. They write
better code faster. What’s not to love?
Code Quality is the Wrong Metric
As developers, many of us care a great deal about “code quality”. This is a
nebulous quality with a constantly-churning definition. For the most part,
sales and “product” folks do not care about “code quality”. If the features are
there without bugs, the “quality” of the code doesn’t matter. The marketplace
only cares about the end result. Maybe “code quality” was only ever about
satisfying programmers?
Code is “good” if it does the job well. Code is “bad” if it doesn’t do everything
it needs to.
For programmers, code can be beautiful, or elegant, or clever, or simple, or
maintainable. However, that’s not how code is judged outside of the few who
read and write it. The idea of “maintainable” code is beginning to lose its
meaning as LLMs are becoming more proficient.
For some, “code quality” has little meaning anymore. It seems like more and more
developers are adopting the idea that it’s the end result that really matters.
LLMs claim to get you to that success criteria faster.
Time Investment
- Pinnacle projects take years of investment that typically raises the bar quite
high for a project to be worth investing in. It can take a long time before the
projects bear fruit. More “bad” ideas can be tried now, potentially revealing
untapped potential.
Breadth of Application
- Programmers require many many different skills. There are some convergent skills,
but there’s a fair amount of specialization. In art, a good artist can quickly
adapt between mediums. In programming, it can take a master of one area weeks
or more to ramp up in a different area. For “small” changes this isn’t worth
it. But with AI, there’s little ramp-up time. A hardcore low-level person can
quickly whip up a servicable website. A front-end person can easily dip down
into native code.
- AI output can be refined by hand or iterated by follow-up promps
Code is not a Competition, Code is not Content
- Software is not competing for eyeballs. Historically there’s been less
external validation or teaching.
- Non-artists are taking up “space” where “true” art should be. Programmers share
ideas and tools. Even poorly made tools can inspire programmers.
- Code is not “content” in the same way art is. Most programmers already monetize
their skill at a job. Programming outside of work (most often) is for fun. That
instrinsic motivation is unaffected by AI. Where that programming is done for
the output (either to start a business or personal desire for a tool), AI is
helpful. If the problem is already well-solved you don’t need the output. If
you’re doing it for fun, the it doesn’t matter than others are using AI.
- There’s a lot of scut-work and boilerplate and configuration in programming
that AI helps address
AI is Tech-Native
- AI is “from” the programming sphere, it’s not an incursion.
AI Slow Boil
- There’s a on-ramp to using AI for programmers. First as a better search engine,
then writing a few simple functions or explaining a snippet of code, then
explaining a complex error, writing a test, running the test, automatically
fixing the code as a result of a failed test, then taking care of higher-level
workflows.
Extension of Programmer Behavior
- Programming was already all about abstracting behavior
- People were already pulling code from stackoverflow
Exceptions
On the other hand
- Frontier software development requires deep insight into how things are
constructed at a low level. New and out-of-model ideas requires understanding
concepts that can often only come from writing it by hand. This is well-known
from before AI as the “Ironies of Automation”.
- Human authored code implicitly brings in much more context that allows for
improved correctness/verifiability/security. Humans have a sense for where to
generalize or make things more concrete that’s often only implicit. Humans
get this wrong all the time, but there is reason based on their
understanding of the problem.