I’ve been building software with AI since 2023. Not as a junior dev trying to break in, but as a founder running a real product. Over the past three years, I’ve shipped features, fixed bugs, and refactored entire codebases using tools like GitHub Copilot, Cursor, and Claude. I’ve seen the hype, the burnout, and the quiet skepticism from senior engineers who think AI-generated code is a toy.
But here’s the thing: I started a "Dirt Notebook" six months ago, and it’s the single most practical change I’ve made to my workflow. Let me explain what it is, why it works, and how you can start one today.
What Is a "Dirt Notebook"?
The name comes from the idea of getting your hands dirty. A Dirt Notebook is a physical or digital notebook where you write down every AI-generated code snippet that doesn’t work on the first try. No screenshots, no copy-paste. Just the raw prompt, the broken output, and your manual fix.
I use a simple A5 dot-grid notebook from Muji. Every time I ask an AI to generate a function and it produces something that fails tests, throws an exception, or just doesn’t make sense, I write:
- The exact prompt I used
- What the AI returned (abbreviated)
- What I changed to make it work
This sounds like busywork. But after 90 days of this, I had a personal pattern library of 47 failures. That library became my cheat sheet for writing better prompts.
Why Most AI-Generated Code Fails
Here’s a concrete example. I was building a Stripe webhook handler in Python. I prompted: "Write a Flask endpoint that verifies Stripe webhook signatures and processes checkout.session.completed events." The AI returned a 50-line function that looked solid. But it used the wrong signature verification method — it assumed the payload was raw bytes when Flask already parsed it. The result? 403 errors on every legitimate webhook.
I wrote that in my Dirt Notebook. The fix was simple: use request.get_data() instead of request.data. But the AI didn’t know my Flask version or middleware stack. The notebook reminded me: "For Flask 2.x, always use get_data() for Stripe webhooks."
Three weeks later, I needed the same pattern for a different project. I didn’t have to debug again. I just opened page 34 of my notebook.
The Psychology Behind It
Why a physical notebook instead of a Notion doc or a GitHub gist? Because writing by hand forces slower, more deliberate thinking. When you type, you tend to copy-paste without understanding. When you write, you process. Neuroscientist Daniel Willingham’s research (in his 2017 book The Reading Mind) shows that handwriting activates the reticular activating system, which filters and prioritizes information. In plain English: you remember things better when you write them by hand.
I’ve tested this. I used to save AI-generated snippets in a folder called "ai-snippets." I never revisited them. My Dirt Notebook sits on my desk. Every morning, I flip through the last week’s entries. It takes two minutes, but it reinforces the patterns.
Practical Mechanics: How to Start Your Own
- Choose your medium. I recommend a physical notebook, but if you’re remote-first, use a digital tool like Obsidian with daily notes. The key is friction-free capture.
- Define your categories. I use four: Prompt, Output, Issue, Fix. That’s it.
- Track the context. Write down the AI tool (Claude 3.5 Sonnet vs. GPT-4), the model version, and the temperature setting if you know it. This matters more than you think.
- Review weekly. Every Friday, skim the week’s entries. Highlight any pattern that repeated three or more times.
- Iterate your prompts. After 30 days, rewrite your most common prompts using the fixes you learned.
Here’s a real entry from my notebook:
| Prompt | Output | Issue | Fix |
|---|---|---|---|
| "Write a SQLAlchemy query to join users and orders, return users with >5 orders." | Generated a complex outer join with subquery. | Performance: took 3 seconds on 10k rows. | Rewrote prompt: "Write a SQLAlchemy query using EXISTS subquery for users with >5 orders, index on user_id." |
Notice: the fix wasn’t just code. It was a better prompt that included indexing hints and a specific SQL pattern.
Real Business Impact
I run a small SaaS that processes payments via Stripe. In Q2 2026, we had a production incident where a webhook listener started crashing silently. The AI-generated error handler was catching all exceptions but logging Exception: %s without the traceback. We lost three days of data.
My Dirt Notebook had an entry from January: "AI error handlers often omit traceback. Always add traceback.format_exc() in the log message." I found it in 10 seconds. The fix took 5 minutes. That entry saved us roughly $2,000 in developer time and prevented a customer churn event.
What I’ve Learned After Six Months
- AI is terrible at context. The models don’t know your database schema, your middleware stack, or your deployment environment. Your notebook fills that gap.
- Prompt engineering is not magic. It’s debugging your communication with the model. Every failure teaches you a new constraint to include.
- The best AI users are the best note-takers. I’ve watched junior devs outperform seniors simply because they documented their prompt experiments.
- You don’t need to remember everything. The notebook becomes your external memory. I now prompt with confidence because I know I can look up the fix later.
The One Thing Most People Get Wrong
They treat AI-generated code as final. They copy, paste, and move on. They never ask: "Why did this work?" or "What did the AI assume that was wrong?"
A Dirt Notebook forces you to ask those questions. It turns you from a passive consumer of AI output into an active debugger. And in 2026, when every developer has access to the same models, the differentiator is not the tool — it’s the practice.
How to Start Today
Grab any notebook. Open a text file. The format doesn’t matter. What matters is consistency. Write down one failure per day for the next 30 days. By day 30, you’ll have a personalized reference that no online tutorial can match.
I’ve shared this method with two fellow founders. One now runs a team of five where every member maintains their own Dirt Notebook. They share one entry per week in a Slack channel. The conversation is always better than any AI-generated code review.
Conclusion
I started a Dirt Notebook as an experiment. Six months later, it’s the most valuable artifact in my development process. It’s not about the notebook. It’s about the discipline of learning from failure. In a world where AI makes code cheap, understanding is the scarce resource. A Dirt Notebook is where you build that understanding.
If you’re serious about vibe coding — using AI as a creative partner rather than a crutch — start one today. Your future self will thank you when a production bug hits at 2 AM and you flip open page 42 and find the exact fix you wrote three months ago.
Comments