← kwindla hultman kramer

I am working through this myself, as someone with strong opinions about "the…

June 9, 2025

I am working through this myself, as someone with strong opinions about "the craft of programming".

In theory I write two kinds of code.
1. Throw-away code to get one thing done that I'll never come back to.
2. Code that I plan to use again, share with others, or post publicly.

Code type 2 is never clean enough. I always want to reduce complexity, add just the right amount of commenting, improve the structure and layout for readability, and find the perfect balance between algorithmic efficiency and maintainability.

A big part of practical engineering work is finding the right balance between getting a project done, and creating code that feels like it's well-crafted.

LLM code generation upsets this balance in a few ways. I didn't write all this code myself, which means that digging in to make the code better is much more work.

On the other hand, I have magical new tools to help me iterate and improve things much faster. Maybe I don't actually need to clean everything up as much, since it looks like we're heading towards a world where there are big parts of most codebases that will never be touched by a human. (A little like how I almost never touch any compiler code that my every-day code depends on.)

Lots to think about here. One thing is clear, but I personally am not doing a good job with this yet: both unit and end-to-end tests are critical. They always have been, but for AI-generated code, having extensive tests is maybe even more important than it is already.

Hamel Husain@HamelHusain

I wonder when the norm will shift from being ashamed of using AI to being ashamed of NOT using AI?

I tell my friends to stop apologizing for using AI all the time.

The flex should be “Look what I made/wrote … and I did it with AI in x minutes” + that being high quality