I read Peter Bloem's post "AI coding without the vibes" [via], which lays out ten rules for keeping your critical thinking while using AI to code. These rules are a good example of how maintain thinking while still utilizing the benefits and productivity gains of AI.
- No AI in the IDE. That includes LLM-driven autocomplete. Every character of every line is written by one of your fingers hitting a key on the keyboard.
- Preferably, don't give the AI access to the codebase. Copy-paste snippets of your code in the web interface. If the AI does have access to the codebase, this access is read-only.
- Don't let the AI run anything. It suggests, you run.
- Don't copy-paste code out of the AI chat box.
- Don't use AI to do anything that plain search can do.
- Read the documentation before you ask the AI.
- Ask the AI for solutions only if you cannot solve it yourself. Give yourself some time to think.
- Check your code yourself before you ask the AI to review. Do your best to minimize mistakes.
- Run the code to check for problems, then let the AI review find the rest.
- Don't implement a suggestion you don't understand.
I don't follow the first two rules. I have the Claude extension in my VS Code workspace and I give it access to the entire codebase.
When I fully understand a feature I'm building, I'll have Claude code it for me. Typing out the methods, classes and boilerplate code myself takes a while but Claude does it in minutes. As long as I understand what's being created and why, I don't feel like I'm losing anything by letting AI handle the implementation.
Of these ten rules, I think the last one is the most important. Always understand what you implement. There is a pattern that I'm seeing with engineers where they fully rely on what Claude creates without undestand what or why it created it that way.
When I ask engineers why they've written repository code for an app with no database component and their answer is they don't know, that's just what Claude told them to do. That's a problem. If we're going to utilize AI in software engineering we can't stop thinking and let AI do all the work from end to end. Don't let AI make you a meat proxy between the application and the AI.