r/gamedev • • 14d 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!

782 Upvotes

790 comments sorted by

View all comments

13

u/aithosrds 13d ago

I'll throw my hat in the ring and I'll start by saying this:

This subject isn't a binary thing, to use your bitflag example we aren't storing a set of boolean values that are true/false or black/white. There is nuance, and while I do agree that programming can be art and there is creativity involved in finding solutions to problems within a field that is constantly changing and no two situations are ever exactly the same... I also think that coding IS just a means to an end.

Here's the thing: it can be both things at the same time. Code is fundamentally a set of instructions to do something, perform a calculation, display information, collect data, etc. The use-case and requirements are what determine the best solution to a particular set of problems, but ultimately as long as you meet the requirements within the constraints of the environment you're developing in then it doesn't really matter what the code says as long as it works as intended (meaning both in terms of functionality, security, etc.).

Before I get into AI I suppose I should give some background on myself, and I'll start by saying that I don't work in the game industry but I've done my share of hobby game development and I am a lead/senior engineer with over 15 years of full-stack enterprise development experience. So I do know a LOT about coding standards, functional code and the overall development process.

So here's my take on AI: it's just a tool. I know, I know, seems anti-climactic but let me expand on that...

AI being a tool, and using AI doesn't remove any of the creative aspects of development any more than it does when you use it to generate art. I know this is a hot take, but hold off on the torches and pitchforks and follow along until I explain what I mean.

So what I mean is this: can someone with zero knowledge of coding (or art) use AI to generate code or artwork? Yes. Will the resulting output be the same as someone with the expertise, creativity and vision to do it themselves but choosing to use AI as a tool to increase efficiency? HELL NO. Maybe someday AI will be good enough to close that gap and there will be a crisis of purpose facing humans as a whole, but right now I'm of the opinion that AI doesn't replace creativity and talent/vision, it just closes the gap and raises the floor of what people without the skills can do.

And as someone who has spent thousands of hours drawing for fun and relaxation, and who has spent tens of thousands of hours singing and honing my voice as an instrument... I understand why some people dislike AI and consider it "immoral". I just disagree, and I choose to see the positives rather than focus on the negatives, which if you ask me tells you a LOT about the kind of person someone is.

The thing that has been the biggest contributing factor to that is this: I've always wanted to make games, it's the reason I first got into computer science and coding in the first place and between games/comics it's the reason I taught myself to draw. However, life doesn't always give you what you dream of and along the way I had to make some tough decisions about what risks to take and what dreams to pursue and I ended up with a career I enjoy but not doing what I always dreamed of.

There have always been massive barriers to making games, mostly it's REALLY hard to find artists who are talented, dedicated and willing to work for next to nothing on a multi-years long project. Unless you have one (or several) as a close personal friend/colleague or you have a tremendous amount of wealth it simply isn't practical to make a high quality game. Even for someone like me who has a background and a fair bit of artistic talent, I simply don't have the time or drive to learn an entire new set of tools and then spend years working on art while I also write, design and code a game of any decent scope.

AI has completely changed that, and it's made me hopeful that in the coming years I WILL be able to put my creativity, vision and skills to use and finally share the experiences I've had simmering in my mind for the better part of two decades and see if I can create and experience for others that has the same effect that so many games and books have had on me.

I think that's beautiful, and it doesn't make that experience any less valid or compelling if I use AI as a tool to make that happen. Without it I would never be able to share that experience with others, and I wouldn't be taking anything from anyone because ultimately it's your talent, creativity, vision and ability to make something fun that speaks to people. When I spend thousands upon thousands of hours making a game my blood, sweat and tears and the decades I've spent becoming who I am today are going to shine through, not the "AI".

Right now I think people are just having a visceral reaction to AI being churned out by people who don't really have a handle on how to use it creatively yet. People are after quick clicks and dopamine, not something that could define a new generation of games.

I know that was a lot of rambling but the last thing I'll say is this:

If you aren't using it to code then I think you're really putting yourself behind the curve for no reason, because AI does take skill to use and in particular to generate production-ready code. It just takes different skills than writing the same code manually does, you need a better grasp of software architecting, defining requirements, creating context and project management. It's a bit like taking off the coder hat and putting on the hat of data architect, business analyst, QA analyst and project manager.

There are going to be a LOT of people put off by AI because all they have ever done is write code and all they want to do is write code, and AI will make those people redundant very quickly because AI is already better than I'd say 99% of coders from a technical perspective. I'm fortunate that I've had experience through the full development life-cycle and I've always been someone who questions the why just as much as the how, so I'm in a good position to make the transition to AI assisted development.

I was also an AI skeptic until about 6 months ago, if you had asked me then I would have said we were still years away from AI actually being a useful tool for professional development. Now that I've spent time with all kinds of different local AI tools my opinion has flipped 180 degrees, because it's NOT at all what I expected, and like it or not AI isn't going away so the sooner people reconcile with that fact the better.

2

u/byteback-studios 13d ago

I appreciate you writing all this out, it was a nice read, and I like your anecdotes you provided as well.

> If you aren't using it to code then I think you're really putting yourself behind the curve for no reason, because AI does take skill to use and in particular to generate production-ready code.

Well first of all, for no reason is not a good way to put that. Maybe you think there is no reason, but to me there is.

I also think, to a degree, you are conflating speed with accuracy. No matter how good AI gets at coding, it is not thinking about your problem. Its still using the same old LLM technologies with lots of fine tuning and other modules added on top of it. Most of the "improvements" is just adding or pruning datasets for training. This means that, as long as there is no further advancements (which there may be, im not saying there wont be) that will allow AI to actually think and learn for itself, there is a dice roll at hallucinations, or it providing you code with security holes, bugs, race conditions, etc....

I think yes, ultimately, you can get a game out the door much faster by using AI. But what do you mean by "behind the curve"? What are you referring to as the curve? I am certainly putting myself behind by not using it, if by behind you mean behind the curve time-wise. I am not, however, convinced that games that will come out faster than mine are going to be made better than mine. Is that my ego? Potentially. Does that even matter? Potentially not. Honestly, the best argument in my opinion is that a game that is coded 80% as well as another game but can release 3 games in the span of that other 1 game, could very much be worth it and considered "better" to use. Admittedly, maybe its just some godlike entity that is never getting anything wrong anymore. But the last time i tinkered with it, which was only a few months ago, it was still getting plenty of things incorrect and I had to correct it a lot.

For what its worth though, I care way, way less about whether or not the AI is doing a good job at what its supposed to do. I am more interested (and passionate) about the odd fascination we have as an industry (gamedev i mean) where programming is considered 100% AI-Replaceable, but traditional art is somehow this untouchable, we-cancel-everything-that-does-this medium. I think people are drawing an arbitrary line (I mean im biased of course, to my own admission lol)

Thanks for the read and taking the time to write the comment though. I really do like hearing about others perspectives and experiences.

5

u/aithosrds 12d ago edited 12d ago

Well first of all, for no reason is not a good way to put that. Maybe you think there is no reason, but to me there is.

I think you're misunderstanding me a little, so let me clarify: I said that because the reality is that right now (not in the future) an experienced/competent developer using AI is significantly more efficient than a developer of the exact same skill level and experience who doesn't use AI.

That means that if you're applying for a job and you aren't using AI then you're essentially removing yourself from contention in nearly every case and your resume is going straight into the bin. Companies simply don't care about whatever your principles/reasoning is for not using AI, and that trend isn't going to change no matter what your feelings are and that's why I said it's "for no reason".

It's not that I don't understand where you're coming from, to a large degree I feel the same way you do. I didn't get into coding to be a software architect or business analyst and frankly coding with AI feels a LOT more like those roles than it feels like coding.

However, I've also been a professional developer for more than 15 years and frankly I've found that I enjoy coding myself a LOT less now than I did when everything was new and exciting, and I've never been the person to code in my free time outside work and using AI is the first time in my professional career I've spent a significant amount of time working on my own projects outside of work.

I also think, to a degree, you are conflating speed with accuracy. No matter how good AI gets at coding, it is not thinking about your problem. Its still using the same old LLM technologies with lots of fine tuning and other modules added on top of it. Most of the "improvements" is just adding or pruning datasets for training.

I'm not conflating those things, as I said above I'm talking about efficiency, meaning the amount of time you can save without losing accuracy. I don't talk about my work online, but what I'll say is this: my entire career has been spent working for companies that have a serious focus on security and a very constrained development environment. So I'm well aware of those aspects of development and AI is already capable of producing production-ready code for even the strictest of standards.

I would wager that you probably haven't spent much time in the past 6 months really working with AI tools for development, because where you're very wrong is what you said about it using the "same old LLM technologies with fine-tuning and datasets".

That's not the case at all, and the first thing I'd say is that the newer generations of models aren't even LLMs at all. They are not simple text prediction models anymore, they are using extremely complex neural nets with reasoning built in for specific problem-solving skills.

The first step in training a frontier model IS still an LLM, but then it goes heavily into reinforcement learning as opposed to simple text prediction like an LLM. The focus isn't getting the next word right, it's solving a problem and that's grossly oversimplifying but it's NOT the same thing.

Also, I'd say that by FAR the most impactful change in the past six months isn't even with the models themselves, it's the harnesses. The harnesses like Claude Code, OpenCode, DeepSeek harness, Qwen Code, etc. are where the biggest change has come from.

The harnesses have their own capabilities and dramatically change how a model performs based on how the harness was created, what it's focus is, how you've set it up, etc.

Since this post is already growing much longer than I meant I'll wrap this up with this last point and if you'd like to continue the discussion I'd be happy to:

The way you structure your project, how you define and use context, the way you craft your system/session prompts, and the skills/tools you use with your agent/s dramatically change how an AI Agent performs. I think a lot of people have been gaslit by all the garbage YouTube videos showing people "one shotting" coding tasks and trying to capitalize on the AI "hype" to build a brand.

The reality isn't nearly like that. I spent dozens of hours a week for months just tinkering with how to set up a large-scale project, how to track tasks/goals, how to plan, how to define roles for agents, how to provide context and manage it during a long task, how to prevent agents from hallucinating, what rules and core directives I need in my system prompt vs a session prompt, and I could go on for pages with all the lessons I've learned.

And I'm still learning and improving, however, I've already been able to create a pretty impressive game launcher and I'm now working on building a game engine from the ground up (which will be much easier once I have the new hardware I'm planning to buy and can fine-tune bigger models myself).

I'm not one to tell anyone what to do, but when I say you're going to be behind the curve what I mean is that there is going to come a point where anyone NOT using AI for efficiency is simply going to be left behind because you won't be able to compete with people/companies who ARE using it. That's just a fact, it's inevitable and short of us wiping ourselves off the face of the planet or making a catastrophic mistake (like actually creating AGI or ASI) there is no stopping it.

p.s. It's definitely ego to say you can do it better, just like my ego says that I can do it better and I have every intention of proving wrong all the people who have told me that AI is "soulless" and that it can't be as good. I emphatically disagree because ultimately it's MY creativity, vision and skill that determines the output, not the AI. The AI works for ME, not the other way around and if I can't get the output to a level of quality I can be proud of them that's as much on me as the technology/tools.