Languages ∩ Architecture

Here is my own personal policy when it comes to AI usage.

TL;DR:

  1. 0% AI in articles. If you want someone to read something, then take the time to write it yourself.
  2. 0% AI in documentation. Same idea as #1. If you want someone to understand something, take the time to understand it enough to write an article on it.
  3. Don't let AI make decisions. AI is fundamentally trained to hack until unit tests are green. It wastes/spends your hard-won design/stability/zen, and accrues tech debt.
  4. Because of #3, Don't let AI program. Programming is full of decisions, and AI usually makes the wrong decisions.

Thoughts

First: AI is not optimized for software engineering.

AI is optimized for hacking. It's trained for "getting to JUnit green" 0 as fast as possible, with as few tokens as possible.

We've all had coworkers like this. They hack something together that looks like it works, but they secretly did damage to the codebase to make it happen.

Second: AI-designed code is technical debt.

Any experienced software engineer recognizes this when they actually look at the code that Claude generates.

If anyone is unconvinced of this, I recommend they do an experiment: make requirements for, then design, then implement a medium-sized feature. Then, give Claude just the requirements. Compare the outputs.

In my experience, Claude's implementation is worse about 80% of the time.

My policy with tech debt in Valen is to aggressively burn it away, and refactor up-front so that we don't incur it.

Side Notes
(interesting tangential thoughts)
0

By this, I mean it's trained to get to a passing test