I've been experimenting with multiple agentic tools lately, learning the landscape and building skills to become a better "vibe coder." It's tempting to hand the wheel to AI with something like Buffopotam.us and let it run wild. You don't really need to understand what's happening under the hood (until deployment time, that is), and I'm not planning to maintain this code long-term anyway.
But using these tools to create production-quality assets requires a different skillset. Some of the biggest insights I've gained are:
- Don't just ask the agent to do something—ask it to think about it first, then take action.
- Discard code without hesitation. Agents are non-deterministic; doing the same thing multiple times yields different results.
- Context management is a skill. Using the task/conversation as a boundary over time takes deliberate practice.
- Stay tool and model agnostic. Move between options frequently.
Today I want to focus on discarding code. One of my first "aha" moments came from using /undo
in Aider. Since every task is a commit, it was easy to revert changes. Don't like what you see? Undo it.
But AI code flows quickly. Slight changes in prompts or context data yield different outputs. I've started practicing a new pattern: throw the whole thing away. What do I mean?
This weekend, I started tinkering with another "I'll never finish it past 25%" project. I worked with Roo Code and Gemini to create documentation and build a site. Things were going well... until they weren't. Faced with a decision about next steps, I threw away the code, updated my markdown to avoid that problematic path, and started over.
I didn't actually delete anything—I just renamed the folder and created a new one. I did this repeatedly. Sometimes I'd get 10% in before starting fresh, other times 40%, then 7%, each iteration bringing new insights and direction.
At one point, I even envisioned a workflow of complete recreation for updates: for each new feature, rebuild the entire system from scratch. That might be a bit excessive.
Deleting code has always been one of my favorite activities, but this approach gives the practice a whole new life.