AI Development Iteration Insights
Personal reflections on collaborating with AI in development
Author: Blue
Updated: 2024-12-24
Based on: feat-unified-sitemap-preview iteration retrospective
This is not a process specification, but personal insights I've accumulated from AI-assisted development. Recording them here, hoping they'll inspire future iterations.
Background
After completing feat-crawl-sitemap-export, I discovered several experience gaps:
- Single page scrape had no ZIP download option
- sitemap.md couldn't be previewed directly in frontend
- Should we add bilingual sitemap?
These problems seemed simple, but how you handle them determines iteration quality.
Insight 1: Proactively Identify Gaps, Don't Wait for Feedback
Experience
Instead of waiting for user feedback, I used the feature myself first and proactively discovered where the experience felt disconnected.
Reflection
AI can help write code, but won't proactively find experience issues. As a developer, I need to:
- Walk through the complete flow myself after feature completion
- Ask from user's perspective: "If I'm using this for the first time, where would I get stuck?"
- Document the gaps, don't say "next time"
Conclusion
The best feedback comes from yourself. Don't leave QA work to users.
Insight 2: Borrow External Perspectives for Decisions
Experience
Facing three requirements, I asked a question: "How would a Google PM evaluate this?"
The result was clear:
- P0: Single page ZIP download — High value + low cost, must do
- P1: Frontend sitemap preview — Clear value, should do
- P2: Bilingual sitemap — YAGNI, cut it
Reflection
Introducing external perspectives (Google, Apple, any team you respect) isn't about imitation, but to:
- Break out of your own mental patterns
- Evaluate requirements with higher standards
- Gain courage to cut features
Conclusion
When you're uncertain whether to build a feature, ask yourself: Would this pass Google's bar?
Insight 3: Question Your First Reaction
Experience
My initial thought was: "Since we want unification, let's just use the multi-page list UI for single page too."
But I paused and asked: "How would Google approach this?"
After analysis:
- Single page shows content directly (1 step)
- Multi page requires selection first, then display (2 steps)
- Forcing unification would degrade single page experience
So I kept two UI modes, sharing only the underlying logic.
Reflection
"Unification" sounds beautiful, but sometimes it's a lazy excuse. True good design means:
- Different scenarios get different solutions
- Share logic, separate presentation
- User experience over code tidiness
Conclusion
Beware of "unification for unification's sake". Ask yourself: Does unification actually make users happier?
Insight 4: One Sentence Saves One Component
Experience
When discussing sitemap preview, I said:
"sitemap.md is just like other converted markdown, we can preview and render it with existing components."
This sentence let us skip the "create new SitemapPreview component" discussion and directly reuse the existing markdown renderer.
Reflection
The best code is no code. Before coding, ask:
- Can existing components be reused?
- Can existing functions be ported?
- Do we really need a new file?
Conclusion
Before writing code, first see what you can avoid writing.
Insight 5: YAGNI Requires Courage
Experience
Bilingual sitemap sounds very "internationalized", but I cut it.
Reasons:
- Current user base doesn't need it
- Adds 50% workload
- Can add later when actually needed
Reflection
Cutting features is harder than adding them. Someone will always say "what if we need it later?" But:
- "What if" mostly doesn't happen
- Premature code becomes maintenance burden
- YAGNI's essence is delaying decisions until you have more information
Conclusion
Not sure if you should build it? Then don't. Wait until you're sure.
Insight 6: Process is a Tool, Not the Goal
Experience
After the iteration, I thought: Should I add "Google PM Evaluation" and "Alternative Analysis" to the OpenSpec process?
But then I reconsidered:
- This success came from my proactive questioning, not from a checklist
- Turning judgment into process would become formalism
- CODEBUDDY.md already has YAGNI principles, no need to add more
Reflection
Good practices should become tacit knowledge, not mandatory process. The difference:
- Tacit knowledge: Called upon when needed, doesn't get in the way when not
- Mandatory process: Must follow every time, even when context doesn't fit
Conclusion
Experience should inspire judgment, not replace it.
This Iteration's Numbers
| Metric | Value |
|---|---|
| Phases | 6 |
| Commits | 5 |
| Average diff | < 100 lines |
| Tests | 284 (all green) |
| Cut features | 1 (bilingual sitemap) |
| New components | 0 (all reused) |
Summary
This iteration confirmed several things for me:
- Proactively finding problems is more effective than waiting for feedback
- External perspectives help make better decisions
- Questioning first reactions often avoids over-engineering
- Reuse first is the most underrated principle
- YAGNI requires courage, but is worth maintaining
- Process isn't everything, judgment is
These aren't rules, they're pits I've fallen into, things I've done right. I hope next iteration, this document will remind me:
Slow down, think clearly, then act.