Taking on new clients for Elixir and web development.
Mike Zornek

The Moral Struggles of AI Coding

Posted on

This is more of a personal journal entry than a typical helpful blog post. Normally, I’d keep this in my private notebook, but since I want to link to these thoughts, I figured I’d post them on the blog.

Background: I am a programmer with nearly 30 years of experience who makes my living through freelance and consulting work, typically focused on programming Elixir and related web technologies.

AI coding is a complex and heavily debated tool for modern developers. I do not use AI coding to generate large swaths of code. I tend to use AI to check my work, offer typeahead suggestions (while honoring the patterns I’ve intentionally chosen), explore ideas, and debug complex/unfamiliar codebases. I’ve been slow to adapt to AI tools compared to many of my peers. Even now, I continue to struggle, trying to find balance between my industry’s expectations and my personal moral objections.

Some of the reasons why I dislike AI include:

  • Illegally and immorally sourced. The manner in which these language models are created, without respect to ownership or license, breaks my fundamental beliefs about law and my ethical appreciation for personal ownership.
  • Environmentally unsustainable. The immense amount of electricity and water resources used to build and run AI services is unsustainable. The monopolization of resources and the pollution (noise and materials) are a blight on every community they affect.
  • Economically unsustainable. The cost of AI tokens is hugely subsidized, and that will not last forever. If you become dependent on them and the price increases drastically, will you be able to afford it?
  • Decayed software quality. I’ve been of the opinion that software quality was already on a sharp downward trajectory well before AI. The increased speed of development we are seeing with AI, alongside questionable code quality and fewer people in the process, creates an environment where software is unstable and ultimately miserable to use and work with.
  • Clogged Internet. The current internet was built and is scoped for human activity. The increased growth of bots will lead to both an unacceptable ratio of noise to signal and the breaking of fragile infrastructure, e.g., the Tragedy of the Commons.
  • Endless cleanup. I worry that my profession will become endless days of debugging someone else’s hastily built vibe software. I described this vision to my accountant as the person cleaning up the elephant poop in a parade.
  • Mass surveillance AI enables a dystopian level of privacy violations, as historically large datasets can now be spun together in order to profile and categorize all of your movements and speech, for the highest bidder. Reinforcing the loop, the more you use AI, the more data you feed the machine. These data sets are now owned and sold by third parties over whom you have little legal authority.
  • Self-identity through my work. After spending my adult life having built my identity through my profession, what does it mean if I no longer write code? I cannot find my identity through a process of managing agents who write code for me.

Nonetheless, I use AI

With all that on the table, yeah, I use AI – and I kind of hate it. I am nowhere near the zealots who are creating AI agents for everything, but I do use it.

There are some out there who draw a hard line and refuse to cross. They do their best to find as pure a path as they can to live and dodge the madness.

If I had the means, I might consider joining them—but the reality is I’m an aging, self-employed programmer. I live on my own, and I support myself. I find it impossible to imagine staying in this career and having an absolutist refusal to use AI. Any company looking for my work will have a baseline level of AI-use expectations. Perhaps in the future I will find other ways to support myself and enable more choices here, but for now these are the cards I have been dealt.

Where I find value

Some things I have found helpful with AI tools:

  • You can throw a mishmash of crash logs, screenshots, and other details to help identify bugs and security issues.
  • You can update dependencies and have the AI look over the code for impactful call sites related to the code diffs and changelogs. Ideally, you are familiar enough with the codebase to have your own gut feelings, but in extremely large or otherwise unfamiliar projects, this can help root out issues to watch for.
  • Many developers hate doing code review, and while there is room for improvement, I find some of the commentary I get out of automated code review to be helpful. I do personally review and apply my own fixes, but the notes are a valuable second set of eyes.
  • When present in an unfamiliar codebase (common as a consultant), I get value from asking AI to find and summarize things.
  • I spel baad oftun and get value from spell checkers like Grammarly. Again, I tend to avoid having any tool write for me, but finding spelling and grammar issues is very helpful.
  • Sometimes I need to do one-time ETL of data (CSV, etc), and I have found AI to be helpful at reformatting things. I will say this often feels high-risk, since I can rarely confirm that each row is transformed without error, but in my limited use, it seems to work well.
  • I sweat details when it comes to naming things. I get value from using AI to brainstorm alternative terms of art for things.

Endless Existential Anguish

I get very introspective over AI coding because it is my career, livelihood, and identity. It is a very fluid and evolving thing. The “fun” thing is (and I can not render satirical quotes any larger), once you start down this rabbit hole, you might also question:

  • The overseas slave labor used to build my computer and phone.
  • The disadvantaged migrants who harvest the food I eat.
  • The exhaust from my car that pollutes the environment.

Why is it that I struggle with AI coding so much more in my head than with the slave labor to build the computer? It is the same industry after all.

All proper questions for a therapy session – and with that, since we are losing the plot, I’ll end it here.


About the Author. Mike Zornek is a developer and teacher focusing on product design and development with a heavy focus on Elixir and LiveView. In between his projects, Mike helps other teams through consulting. During off hours, he enjoyed watching Phillies baseball and playing relaxing video games.

Hopefully, you found interest in my scribbles. If you have commentary or a response, I'd love to hear it.