- Understanding code: I can dump thousands of lines of undocumented code into a large context model and get back architectural outlines, API usage examples or even full documentation. I can also ask questions directly of the codebase.
- Debugging. The newer reasoning models are extremely good at deciphering a test failure or stack trace and pinpointing the potential causes of the bug, sending me right to the relevant code.
- Suggesting where to make edits. I've started asking models for a high level implementation plan based on the codebase and dumping in an issue thread - they frequently spot parts of the code I forgot I would need to update.
- "What should I test?" - dump in a diff and get back a checklist of branches I need to add test coverage for
At this point, if you can't find ways to make yourself more productive as a programmer with LLMs I have to conclude that you just aren't trying very hard.