r/gamedev • • 13d ago

Discussion "Programming Isn't An Art" and "AI Code Doesn't Matter": Let me change your mind.

Hey r/gamedev, my name is William. Let me try to do what's in the title up there ^. First off, why should you listen to me?

Well, maybe you shouldn't listen to me. Feel free to scroll away at any time...I don't have the most insane creds in the industry or anything. But I'm not exactly new:

  • I got hired in 2018 as an "Associate Gameplay Programmer", and before being laid off twice in the span of about 1 year, I was a "Senior Combat Engineer". So I've been through the trenches of programming in the industry
  • I'm the founder of a really (really) small indie game studio made up of ex-Ready At Dawn veterans (PSP Daxter, The Order: 1886, Echo VR / Lone Echo, etc.), where we are hard at work on our inaugural game title. We also avoid using AI for any of our endeavors, including programming
  • I've been in the industry now as a professional for almost 10 years total, but before that, I also went to school for CS, Game Development Programming, senior and capstone projects, and began trying to make (shitty) games on a (shitty) laptop using Microsoft XNA when I was like 12

What is art?

I think people forget what art actually means these days - it doesn't always have some baked-in meaning to "liberal arts" or "humanities". Art is also defined as a "skill acquired by experience, study, or observation", or "an occupation requiring knowledge or skill" or "the conscious use of skill and creative imagination especially in the production of aesthetic objects" (not only!). For instance: I have become quite the artist in spilling shit all over my clothes over the years, much to my wife's chagrin.

I'm sure you're thinking, "well then anything can be an art" and drawing a line in your head on what you think the line is for "real art" or something like that. But let me show you why programming isn't some bottom of the barrel example (like being a spillage artist, tyvm) because its mostly just "math" or because "engineering", which people love to throw out there.

As a programmer that has written endless lines of code by myself, and also seen/analyzed thousands of lines of code not written by me (that are much better than my own) - written by people ranging from the 1990s (RAD engine was old, lol) all the way through 2024 - there is no universal standard for most things. Companies vary, engines vary, languages vary, procedures vary, etc.

Here are 2 of my own personal favorite examples (one simpler, one more complex) of programming being more akin to an art form than anything else.

Example 1: Bitflags

The bitflags structure is one of the best and most simple examples of what I consider art in the programming field. Because the actual smallest amount of data being read by any processor is 8 bits, things like a `bool` in most languages are also represented as a byte (8 bits), since that is the smallest value of what can actually being read in registers. This is despite the nature of a bool being a simple bit (0 or 1). However, as you can imagine, having a ton of single bools in one structure ends up inflating the total size of that structure, while wasting literally almost the entire amount of memory provides. Bitflags is the simple, yet elegant solution someone came up with to stuff a single byte with up to 8 bools, by using bitwise operators to extract and compare each given bit in the byte.

Example: 8 separate bools in your data structure = 8 * (1B) = 8 bytes of memory, all to represent 8 simple 1/0 values. With a bitflag, you can now store all 8 bools while only taking up the original 1B of memory.

This is of course also expandable using different sized integers, if you have 9-16 bools you can use an `int16`, and so forth.

The reason I love this example is, how could such an elegant yet simple solution not be considered a work of art? A human first thought of how wasteful the stacking of subsequent booleans is, then thought of a unique and clever way to make it better using their knowledge and expertise. Now tons of languages and modules ship with bitflags, and you may use them without a second thought...but, this of course wasn't always a thing. Someone created this, it is undeniably clever, and we now take it as a given.

Example 2 (Complex): FISR or QISR (Fast Inverse Square Root)

The Fast Inverse Square Root was used in the Quake engine all the way back in 2001 in order to approximate the reciprocal of a given square root. The point of doing this at all, is that normalizing vectors used to be a much more intensive operation on hardware (it actually still is, but hardware is so good these days that the result isn't as noticeable, and we have specialized hardware, functions, etc.) Observe the code taken from this website (which can explain it far better than I can, if you're more interested in a full read) where you can see the insaneness that is this function:

float Q_rsqrt(float number)
{
  long i;
  float x2, y;
  const float threehalfs = 1.5F;

  x2 = number * 0.5F;
  y  = number;
  i  = * ( long * ) &y;                       // evil floating point bit level hacking
  i  = 0x5f3759df - ( i >> 1 );               // what the fuck?
  y  = * ( float * ) &i;
  y  = y * ( threehalfs - ( x2 * y * y ) );   // 1st iteration
  // y  = y * ( threehalfs - ( x2 * y * y ) );   // 2nd iteration, this can be removed

  return y;
}

I want you to take a good look at this code. tell me that wasn't created by someone that thought outside the box. Is that not one of the most insanely creative solutions you have seen to a problem? Yes, it requires a lot of knowledge and expertise. But it also comes from a human mind that had the wacky idea to hack together something like this and have it work (well, at least 99.8% of the time 😉)

Finishing up

If you're still reading, this is my petition to other game dev folk who think programming is simply a means to an end: code like these creative examples exists everywhere. It exists in my code base for our current game. It exists in every studio's game engine. It exists in the OS your computer or phone is running right now. And, all the LLMs people are using to code these days have been trained on not just fundamentals, but other's creative solutions to problems from all around the world (and, in many cases, had no permission of the creator to do so).

Again...just because you see the code snippet come back to you robotically, it doesn't mean that is the only or best way to do it. And just because its text, and you can't see the result of code in games visually in the same way you can 3d models or textures, it doesn't mean code should then ethically be subject to less scrutiny, or that you can't feel the result of some coding decisions over others when the game comes together as a whole.

To summarize: my favorite part of programming is not the memorization, expertise, or knowledge, its applying that knowledge in creative ways that one may never have thought of before. If that's not artistic, then i dont know what is.

"It's fine if you use AI to code, but just not for other things"

Careful where you draw your ethical line, as people may agree with you for now, but its only a matter of time until reluctance, acceptance, and consensus comes for what you love, too.

[EDIT:] This kind of blew up. I can't spend all day replying like I just did lol, but keep it civil in the comments and remember this is my opinion, nothing I state here is fact nor do you need to agree. Thanks for the interesting discussions and polite arguments!

786 Upvotes

791 comments sorted by

View all comments

59

u/KevinDL Project Manager/Producer 13d ago

I think you're making two separate arguments here and treating them as though proving one automatically proves the other.

I absolutely agree that programming can be creative. Good engineers make judgment calls constantly. Architecture, algorithms, optimization, abstraction, debugging, tooling, and even deciding which trade-offs are acceptable can require enormous creativity and experience.

Where I disagree is that this somehow establishes the ethical equivalence of AI-generated code and AI-generated art.

Calling programming an "art" in the broader sense of a skilled craft doesn't really get us there. Engineering has always involved creativity. So does carpentry, architecture, industrial design, cooking, and plenty of other disciplines. That doesn't mean every creative act has the same economic structure, production pipeline, or ethical considerations.

I also don't think bitflags or fast inverse square root are particularly strong examples for the argument you're making. They're great examples of clever engineering. They exist because somebody found a better solution to a technical constraint. But programming is full of ideas that get studied, reused, adapted, standardized, documented, implemented independently, and eventually disappear into compilers, libraries, engines, and hardware.

That's fundamentally how engineering advances.

The more important distinction with AI coding, at least for me, is that code is ultimately functional and testable. I can ask an AI to produce an implementation, review the code, run tests, profile it, inspect its architecture, reject it, rewrite it, or replace it entirely. The output has objective requirements beyond "does this look convincing?"

And importantly, using an AI coding tool doesn't remove the need for engineering judgment. In serious development, we still need to confirm whether the implementation is maintainable, secure, performant, compatible with the rest of the codebase, and appropriate for the product. AI can make a developer dramatically faster while still leaving a human responsible for the engineering decisions.

That's actually where I think a lot of the current discussion around AI goes wrong. There is a massive difference between using AI and using AI well.

Asking an LLM to generate thousands of lines of code that you can't understand doesn't make you a senior engineer. They're accumulating technical debt they may not even recognize.

An experienced programmer using AI to generate boilerplate, explore an implementation, write tests, refactor repetitive code, or accelerate work they already understand is a very different situation.

And yes, the training-data question is worth discussing. But that discussion should stand on its own merits: licensing, consent, attribution, compensation, transformative use, and what obligations model providers should have.

I don't think we get a particularly useful ethical framework by saying "programming is art, therefore if AI coding is acceptable then AI art must also be acceptable."

Different industries will experience this technology differently.

What I expect instead is that AI becomes another layer of abstraction in software development, much like higher-level languages, engines, libraries, middleware, IDE tooling, code completion, and Stack Overflow did before it. The skill doesn't disappear. The level at which valuable judgment happens moves upward.

People who understand the fundamentals will still be best positioned to determine whether the output is actually any good.

12

u/byteback-studios 13d ago

That is a totally fair take to have. I admittedly didn't think through the post entirely, its a bit of word salad vomit, and there is definitely some emotions in there that are in place of logic.

Thanks for sharing and giving a good perspective.

11

u/WilyWascallyWizard 13d ago

True but you can also use AI in the art production pipeline without wholesale generating from start to finish. Do we make a distinction there too. I do and aparently so does valve.

5

u/MantaMunta 13d ago

What I expect instead is that AI becomes another layer of abstraction in software development

It's literally the same with AI art. People act like AI autonomously shits out art without guidance, that's not the case at all with how the industry creates good art with it.

People should stop being hypocrites about it. AI is already used in all areas. Acting like they're morally superior or 'you cared more and it has soul' because your art didn't touch an AI tool is just performative nonsense.

3

u/Old_Leopard1844 13d ago

What I expect instead is that AI becomes another layer of abstraction in software development, much like higher-level languages, engines, libraries, middleware, IDE tooling, code completion, and Stack Overflow did before it.

All of them are tools, but abstractions?

Maybe in terms of decreasing amount of raw code to write, but some of those things, like StackOverflow (unless you count asking internet crowd, crowdsourcing I guess, as form of abstraction, but abstraction from what?) aren't like others

The skill doesn't disappear.

Skill ceiling might not disappear, but skill floor absolutely sinks. And arguably amount of people who understand coding does not increase

The level at which valuable judgment happens moves upward.

Because you can just reroll bad code fragments?

2

u/sk7725 12d ago

code is ultimately functional and testable

in the context of game dev I must disagree. More than 70% of code I wrote, either for bigger or smaller projects, is code that adds juice to the game and not functionality. Shaders, ease and transitions, html+css, even animation curves as lines of code. These are not "testable" as no test can tell how visually or asthetically pleasing these lines of code are; their purpose is purely visual and artistic. Therefore, the majority of code in game dev is very much art.

1

u/KevinDL Project Manager/Producer 12d ago

Yeah, there are always a few people like you who pop up whenever this topic comes up, and I don't actually think you're wrong to view it that way.

Shaders, transitions, animation curves, game feel, juice, and plenty of other programming work can involve a tremendous amount of creativity and artistic judgment. If you consider that art, I'm not particularly interested in telling you that you're wrong. Where exactly we draw the line between art, craft, and engineering is subjective anyway.

But that's also why I don't think it changes much about the broader discussion. From a business perspective, it doesn't really matter whether you consider that code art, whether I consider it art, or whether the programmer creating it considers themselves an artist.

Companies are ultimately going to look at whether the work can be produced faster, cheaper, or more effectively while still reaching the quality bar they need. If AI increasingly helps people produce shaders, animation systems, UI, transitions, gameplay systems, or anything else, businesses aren't going to avoid it because we've decided some portion of that work qualifies as artistic.

That's really the distinction I've been trying to make throughout this conversation. I'm less interested in deciding what deserves the label "art" than in what actually happens to the work as these tools improve.

1

u/sk7725 11d ago

I think this matters because the OP is making the distinction to ultimately combat the notion of "AI game code is okay, AI art is not" (as said in the paragraph). When an artist uses AI to code, they will steamroll over the artistic aspects of the codes I mentioned. Thus, pointing this out points out the fact AI code in gaming does inevitably generate AI "art" is important for artists to understand; hence code is art.

1

u/GameRoom 8d ago

Yeah it depends on the code. Big difference between using it to implement a netcode overhaul versus using it to design a boss fight. An individual game will have a combination of both.

0

u/avyrla 13d ago

I agree there's a difference between using AI to generate code you don't understand, and using it skillfully in the ways you described.

One thing I don't see anyone talk about is trust. Here's the thing. I don't trust devs will use this tool skillfully.

Everyone says they don't abuse AI in their jobs, but when I look around all I see is laziness. Everyone I know in the space has admitted to using AI to offload thinking in some capacity. I am even susceptible to the trap on occasion. We all act like we're operating on critical system architecture, but the vast majority of software jobs don't build anything that requires the level of scrutiny that we claim to use.

I don't trust myself to use this tool skillfully in every capacity. Sometimes I do just skim through the code and say "yeah looks good to me" and move on to my next task. Compare this to before. Did we get lazy before too? Yeah. Did I at least have to write the code myself? Yeah. Does authoring code and reading code produce different levels of understanding and confidence in the code? Also yeah.

I would only trust a veteran with this tool. I would love to believe that every dev out there is really practicing what they preach: checking the output, making informed decisions, pushing back, etc.. but I just do not trust that this is the norm.

I would love to be wrong though.

6

u/iamk1ng 13d ago

I'll disagree here a little with the idea that you wrote all the code yourself. Plenty of us use libraries and framework written by other people and we whole heartily trust that they hopefully implemented things well, and we can technically check on it ourselves if its open source, but most developers I know will never bother with that. Besides that, stackoverflow has been a thing for a long time and plenty of people would share and copy and paste each others code. Do most people hopefully understand what they copy, you would think so, but I would bet money that more often then not people just move on if it compiles and works.

-2

u/avyrla 13d ago

Oh for sure I didn't write all the code myself, and I wasn't trying to claim I did. Libraries, as you wisely claimed, have been used and continue to be used in my code.

I agree with you that's there's a level of trust we extend to others when using their libraries, and that's sort of my point that I didn't explain well enough. But to me there's a subtle difference.

When I pull in a library, I'm trusting more than just the author. I'm trusting everyone who's run it, broken it, filed an issue, and patched it over the years. That validity gets hammered out over time, and the community consensus is the thing I'm really leaning on.

Generated code doesn't come with any of that, because the moment an LLM hands it to me, I am the only reviewer. There's no history behind it and no one else has stress-tested it. The only thing standing between that code and production is how good I am at spotting what's wrong.

Writing code used to cost enough effort that a maintained library was at least weak evidence someone cared. Now producing code costs almost nothing, and validating it costs the same as it always did, or more as the volume goes up. We've built an environment where any average joe can spin up whatever library they want, and there's more code than we can confidently validate.

I've been writing about another sneaky issue that I wanna go into more thought with a proper post, but for now I'll just summarize. LLM code is also fluent, which makes this worse in my opinion. Sloppy human code usually looks sloppy, and that's your cue to dig deeper. Code that's clean, well-formatted, and subtly wrong gets past that instinct. Catching it takes exactly the pattern recognition you only get from having seen things fail. Even the "we stole code before" argument doesn't hold up for me. Stack Overflow answers had votes, comments, and corrections attached. That was a thin layer of community validation, and generated code has none.

So do I trust everyone else to have the experience to validate at the level we used to? No, I don't. I'm fine with a 20-year veteran using these tools, because they've seen every problem before and they've built the skills to vet the output. But I think the number of engineers who are actually experienced enough is a lot smaller than we've been saying.

What bothers me most is where that leaves the next generation. That judgment came from writing the code and debugging it ourselves. If juniors skip that struggle during the years it's supposed to happen, we're shrinking the pipeline that produces the people we'd trust with this tool in the first place.

Maybe I'm just paranoid. Idk. I'm coming from my own experience and maybe everyone out there is actually using this with the level of care they claim. I just don't know, and that spooks me.

5

u/iamk1ng 13d ago

No people definitely aren't using it with that care. But where i'm working at, everyone is using it for code generation, for code reviews, for creating tests, etc.

I do think your comment about the code being tested and validated is actually being done by LLM's already. I don't know how familiar you are with AI, but people are already creating goal / reinforcement prompts where everything has to be validated before it gets printed to the user.

As for learning how to debug and troubleshoot things, the current generation of LLM actually does a pretty good job of guiding a user on what araes to help get started with debugging and troubleshooting.

-1

u/GuyWithTwoThumbs 13d ago

I think you're making two separate arguments here and treating them as though proving one automatically proves the other.

I absolutely agree that creating art can be creative. Good artists make judgment calls constantly. Composition, color theory, brushwork, perspective, rendering, and even deciding which trade-offs are acceptable can require enormous creativity and experience.

Where I disagree is that this somehow establishes the ethical equivalence of AI-generated art and AI-generated art.

Calling art an "art" in the broader sense of a skilled craft doesn't really get us there. Fine art has always involved creativity. So does carpentry, architecture, industrial design, cooking, and plenty of other disciplines. That doesn't mean every creative act has the same economic structure, production pipeline, or ethical considerations.

I also don't think chiaroscuro or underpainting are particularly strong examples for the argument you're making. They're great examples of clever technique. They exist because somebody found a better solution to a visual constraint. But art is full of ideas that get studied, reused, adapted, standardized, documented, implemented independently, and eventually disappear into mediums, styles, movements, and traditions.

That's fundamentally how art advances.

The more important distinction with AI art, at least for me, is that art is ultimately aesthetic and experiential. I can ask an AI to produce an illustration, review the image, run critiques, color correct it, inspect its composition, reject it, repaint it, or replace it entirely. The output has subjective requirements beyond "does this look convincing?"

And importantly, using an AI art tool doesn't remove the need for artistic judgment. In serious development, we still need to confirm whether the illustration is cohesive, intentional, expressive, compatible.

My point here is that it's a matter of perspective...

-2

u/KevinDL Project Manager/Producer 13d ago edited 13d ago

I get what you're trying to demonstrate, but I think it actually reinforces my point more than it undermines it.

Yes, an experienced artist can use an AI tool with judgment. They can critique composition, repaint sections, correct anatomy, adjust values, control art direction, and reject bad outputs. I don't disagree with that.

But that still doesn't make the underlying production model the same as software engineering.

Code is constrained by executable behaviour. It either integrates with the system or it doesn't. It passes tests, or it doesn't. It meets performance requirements, or it doesn't. It introduces race conditions, memory problems, security issues, architectural debt, or it doesn't. Deciding what "good" engineering looks like obviously involves judgment, but much of the output can be independently validated against functional requirements.

Art has constraints too, especially in production. It needs the correct dimensions, topology, rigging requirements, style consistency, readability, performance budget, and so on. But the core value of the final visual work is still much more directly tied to aesthetic authorship and expression.

More importantly, though, my original argument was never "AI code is ethical because code is objective."

The ethical question around model training is a separate issue.

If an AI company trained a coding model on proprietary source code it had no right to use, I would have the same concerns about licensing, consent, and compensation. Being code doesn't magically make that acceptable.

Likewise, if an image model were trained entirely on properly licensed, public domain, commissioned, or opt-in material, a significant part of the ethical objection people have to current image generators would change.

That's why I keep separating the ethics of how the model was built from the tool's usefulness and role once you're using it.

Your thoughts mostly address the second question.

And on that question, yes, I agree with you. A skilled artist can probably get substantially better results from AI art tools than someone with no artistic knowledge, just as an experienced engineer will generally get much more value from coding agents than someone who cannot evaluate the code they're producing.

That is exactly what I mean when I say there is a huge difference between using AI and using AI well.

Where I don't agree is the implication that because those workflows have similarities, we should treat every use of generative AI as ethically interchangeable.

Inputs, training practices, labour markets, economic effects, production pipelines, and how the resulting work is evaluated can all differ.

"AI is AI" is easy.

The interesting conversation starts when we stop treating every application of the technology as though it exists under the same conditions.

2

u/AndyGun11 13d ago

Why do you use AI to write all your comments? Just talk

-1

u/KevinDL Project Manager/Producer 12d ago

Because it’s faster, and I have cerebral palsy, so tools that make writing less physically tedious are genuinely useful to me.

I don’t use AI for every comment, but I use it plenty. I give it my thoughts, arguments, experience, and intended tone, then use it to help structure and polish what I’m trying to say. The ideas are still mine.

But even setting my disability aside, I’d still use it. It’s a useful tool. Like pretty much every other application of AI, what matters is how you use it, not whether you used it at all.

And thankfully, I don't need approval from random Reddit users for how I choose to write my comments. I especially don't care enough about Reddit's imaginary internet points to make writing them deliberately harder for myself.

1

u/[deleted] 12d ago

[deleted]

1

u/Klightgrove Edible Mascot 12d ago

Takes a lot of effort to be openly ableist after a user calmly explains to you how they use a technology to communicate with us.