💡 Reflections from AI-coding a 10,000 line app
Cliff Brake October 08, 2025 #AI #coding #productivity #documentation #testing #architecture #development #learning #tools #complexity #simplicity #liabilityLessons from AI-coding a 10,000 line app
BRun is getting usable. Claude Code wrote almost all of it using Doc-driven development (manually write/update the docs, and have Claude write the code).
Some thoughts:
- Claude is fast -- there is no way I could have written this app manually in a day or so.
- Large changes are easy with AI.
- Keeping docs up to date is easy.
- Having AI do the coding freed up more time to think about the app user interface, etc.
- Claude is a nice partner to bounce ideas off of.
Some things to watch out for:
- Look out for duplicated/unnecessary code. There were multiple cases where Claude was calling the same function multiple times.
- Refactoring is not always complete. If things get restructured, check that everything got cleaned up.
- Check the tests -- Claude really goes crazy generating tests. A lot of work remains on this repo reviewing and cleaning up tests.
- Claude often tends toward complex approaches and a lot more code than needed -- like many junior devs. Close monitoring is needed to ensure the architecture takes the simple path. Code is a liability, not an asset -- even with AI.
- Docs updated by Claude tend to be overly verbose. I was continually trimming them down to remove duplicated/unnecessary content.
- Complex things like life-cycle and state management often get overlooked.
- Race conditions are also easy to miss in AI-generated code.
In the end, this project went well, but it still needed expert guidance at times. Perhaps some of the above could have been improved with more specific rules. Like many things, the greatest strength is also the greatest weakness. Claude is really good at generating code -- so good that it tends to generate way too much at times. The hardest part of an app like this is figuring out what it should do, how it should be configured, what the UI looks like, and debugging problems when it does not work. This takes experience and is still a lot of work to get right.