The Art of Pushback
This chapter addresses the most important skill in AI-assisted technical writing: the iterative process of questioning, challenging, and expanding AI-generated content. This is where generic output becomes high-quality documentation.
Why Pushback Matters
The default behavior of AI writing assistance is to produce reasonable content — content that is structurally sound, factually plausible, and approximately scoped. Reasonable content is not excellent content.
The gap between reasonable and excellent documentation is filled by pushback: systematic questioning that exposes gaps, challenges assumptions, and demands greater depth. This process works because:
-
AI systems optimize for the request given. Without pushback, they optimize for reasonable completion. With pushback, they optimize for comprehensive coverage.
-
First responses are necessarily general. Specific, detailed content requires specific, detailed questions.
-
Human expertise identifies what's missing. You know your audience and your domain. AI knows patterns and structures. Pushback combines both.
The Pushback Vocabulary
Effective pushback uses specific language patterns. These are not magic incantations — they are precise questions that direct attention to specific gaps.
Comprehensiveness Questions
Is this comprehensive enough for someone who needs to actually
implement this in production?
What topics within [subject] did you not cover that a practitioner
would need to know?
If I were debugging a problem with this implementation, what
information is missing from this chapter?
What questions would a reader have after finishing this section
that aren't answered?
These questions reveal scope gaps — topics that fall within the chapter's domain but weren't included in the first draft.
Depth Questions
Can you go deeper on [specific section]? A senior developer
would want to understand the underlying mechanism, not just
the API.
The section on [topic] explains what to do but not why.
Add the reasoning behind each recommendation.
This describes the happy path. What about error cases, edge
cases, and failure modes?
A reader might ask "but what if X?" — address that scenario.
Depth questions expand existing content rather than adding new topics.
Specificity Questions
The advice in [section] is too general. Provide specific,
concrete examples.
Replace "you should consider" with specific recommendations
backed by reasoning.
Instead of "this can cause problems," explain exactly what
problems and under what conditions.
Show a real-world scenario where this applies, not an abstract description.
Specificity questions transform vague guidance into actionable content.
Challenge Questions
Are there cases where this recommendation doesn't apply?
Document the exceptions.
What's the argument against this approach? Present the tradeoffs fairly.
Is this actually best practice, or is it common practice?
What do experts in this area disagree about?
What's the failure mode of following this advice incorrectly?
Challenge questions prevent oversimplification and build reader trust.
The Pushback Loop
Effective refinement follows a consistent pattern:
[Initial Generation]
↓
[Your Review: Identify the weakest section]
↓
[Pushback Question targeting that section]
↓
[Claude Code Expands/Revises]
↓
[Your Review: Is this section now adequate?]
↓
[No] → Return to Pushback
[Yes] → Move to next weakest section
↓
[All sections adequate?]
↓
[No] → Continue loop
[Yes] → Final polish pass
Iterate section by section rather than attempting to fix everything at once. Each iteration should focus on one specific improvement.
Example: Before and After Pushback
Initial Draft
Error Handling
When errors occur, you should handle them appropriately. Use try-catch blocks to catch exceptions and provide meaningful error messages to users. Log errors for debugging purposes. Consider using error tracking services in production.
Pushback 1: Comprehensiveness
This error handling section is too brief. It needs to cover:
- Different error types and how to distinguish them
- Error propagation strategies
- User-facing vs. internal errors
- Structured error formats
Expand this section with these topics.
After Pushback 1
Error Handling
Errors in this system fall into three categories: validation errors (invalid user input), operational errors (failed network calls, database timeouts), and programming errors (null references, type mismatches). Each category requires different handling strategies.
Validation Errors should return immediately to the user with specific feedback about what was invalid and how to correct it. Never log validation errors as they represent normal operation.
Operational Errors may be retryable. Implement exponential backoff for transient failures. For permanent failures, provide the user with a clear message and next steps. Log all operational errors with context for debugging.
Programming Errors indicate bugs and should never reach users in production. Log with full stack traces and fail fast during development. In production, return a generic error message and alert the development team.
[continued...]
Pushback 2: Specificity
The operational errors section mentions exponential backoff but
doesn't show how to implement it. Add a code example showing
the retry pattern with configurable backoff.
Pushback 3: Challenge
You recommend failing fast for programming errors during development.
What about integration tests that intentionally trigger error paths?
Address how to test error handling without the fail-fast behavior
blocking the tests.
Each pushback iteration improves a specific aspect of the content.
Recognizing When to Push Back
Not all content needs the same level of scrutiny. Push back more aggressively on:
- Core concepts that readers must understand correctly
- Procedures that readers will follow exactly
- Recommendations that influence real decisions
- Security-related content where errors have consequences
Push back less on:
- Introductory material that orients readers
- Reference sections that readers scan, not study
- Transition paragraphs between major sections
Allocate your iteration time to the sections that matter most.
The "What Else" Technique
After apparent completion, always ask:
What else should be covered in this [chapter/section] that we
haven't addressed? List topics, don't write them yet.
This generates a punch list of potential additions. Review the list and decide which items warrant inclusion:
From your list, add coverage of items 2 and 4.
Items 1 and 3 are out of scope for this chapter.
Item 5 is covered in chapter 7 — add a cross-reference instead.
The "what else" technique catches gaps that neither you nor Claude Code initially considered.
The Reader Perspective Technique
Adopt a specific reader persona and question the content from their perspective:
Read this chapter as a junior developer six months into their
first job. What would confuse them? What would they need
explained more carefully?
Read this as a senior architect evaluating whether to adopt
this technology. What technical details would they want that
are missing?
Read this as someone debugging a production issue at 2 AM.
What quick-reference information should be easier to find?
Different reader perspectives reveal different gaps.
When to Stop Iterating
Iteration has diminishing returns. Stop when:
-
Pushback yields marginal improvements. If additional questions produce minor rephrasing rather than substantive additions, the section is sufficiently developed.
-
Content exceeds necessary scope. If pushback suggestions expand beyond what the audience needs, you've reached appropriate depth.
-
You're polishing, not improving. If changes are stylistic rather than substantive, move to final editing.
Perfect is the enemy of shipped. Excellent documentation that exists beats perfect documentation that doesn't.
Pushback Patterns to Avoid
Vague dissatisfaction. "This doesn't feel right" gives no direction. Identify specifically what's missing or wrong.
Infinite expansion. Every topic can be explored more deeply. Define "enough" for your audience and stop there.
Conflicting requests. Asking for both brevity and comprehensiveness in the same pushback creates confusion. Choose one goal per iteration.
Style bikeshedding. Spending iteration cycles on word choice and phrasing is better left for final editing. Use pushback for content, not polish.
Integrating Pushback into Your Workflow
A practical writing session structure:
- Generation (20%) — Create initial content with a well-structured prompt
- Pushback (60%) — Iterate through 3-5 rounds of targeted questions
- Polish (20%) — Final editing for style, flow, and consistency
The majority of time should be spent on pushback. This ratio produces better results than spending more time on initial prompts or final editing.
Next Steps
With pushback skills established, the next chapter covers the practical aspects of developing individual chapters from outline to completion.