8.4 KiB
Develop Tutorial
task: id: develop-tutorial name: Develop Tutorial description: Create hands-on step-by-step tutorial with tested code, clear instructions, and troubleshooting persona_default: tutorial-architect inputs: - tutorial-topic - learning-objective - difficulty-level steps: - Identify specific learning objective for tutorial - Define prerequisite knowledge and setup requirements - Design step-by-step progression (8-15 steps typical) - Write clear, actionable instructions for each step - Create and test code examples for each step - Document expected outputs at each step - Add troubleshooting section for common issues - Test complete tutorial end-to-end - Verify progressive difficulty and skill building - Include summary and next steps - Run execute-checklist.md with tutorial-effectiveness-checklist.md - Use template tutorial-section-tmpl.yaml with create-doc.md output: tutorials/{{tutorial-slug}}.md
Purpose
Create effective hands-on tutorials that guide learners through building something concrete while learning key concepts. Great tutorials balance clear instruction with learning depth.
Prerequisites
- Learning objective clearly defined
- Subject matter expertise in tutorial topic
- Testing environment available
- Access to learning-frameworks.md knowledge base
Workflow Steps
1. Identify Learning Objective
Define what students will accomplish:
Specific and Measurable:
- "Build a REST API with authentication" (good)
- "Learn about APIs" (too vague)
Achievable Scope:
- 30-45 minutes for basic tutorials
- 1-2 hours for intermediate
- 2-4 hours for advanced
Clear Success Criteria:
- What will work at the end?
- What skills will be demonstrated?
- What can student verify?
2. Define Prerequisites
Be explicit about requirements:
Knowledge Prerequisites:
- "Understanding of Python functions and classes"
- "Completed Tutorial 2: Flask Basics"
- "Familiarity with HTTP request/response cycle"
Software Requirements:
- "Python 3.11+"
- "PostgreSQL 15+ running locally"
- "VS Code or similar editor"
Setup Steps:
- "Clone starter repository"
- "Create virtual environment"
- "Install dependencies:
pip install -r requirements.txt"
Time Estimates:
- Setup time: 10 minutes
- Tutorial time: 45 minutes
- Total: ~1 hour
3. Design Step-by-Step Progression
Plan the tutorial flow (typically 8-15 steps):
Logical Progression:
- Setup and initialization
- Core concept introduction
- Basic implementation
- Build on basics
- Add complexity
- Handle edge cases
- Test/validate
- Summary/reflection
Each Step Should:
- Build on previous steps
- Accomplish one clear goal
- Be testable/verifiable
- Take 3-8 minutes
Progressive Difficulty:
- Start simple (foundational)
- Add complexity gradually
- End with realistic scenario
4. Write Clear Instructions
Use consistent, actionable format:
Step Format:
**Step N: [Action-Oriented Title]**
[Brief explanation of what this step accomplishes]
**Instructions:**
1. [Specific action in imperative voice]
2. [Next action]
3. [Etc.]
**Code:**
```language
[Complete code to add/modify]
Expected Output:
[What student should see]
Why This Matters: [Explain the concept or purpose]
Verification: [How to confirm this step worked]
**Imperative Voice:**
- "Create a new file..." (good)
- "You should create..." (wordy)
- "We'll create..." (okay but less direct)
### 5. Create and Test Code Examples
Develop working code for every step:
**Code Quality:**
- Must run exactly as shown
- Include all necessary imports
- Show complete context
- Follow best practices
- Include comments explaining key lines
**Testing:**
- Run every code example
- Verify outputs match documentation
- Test in fresh environment
- Check for missing dependencies
- Validate error messages
**Incremental Development:**
- Each step adds to previous code
- Show only what changes (or full file if clearer)
- Maintain working state after each step
- Avoid breaking changes mid-tutorial
**Use:** create-code-example.md and test-code-examples.md tasks
### 6. Document Expected Outputs
Show what success looks like:
**After Key Steps:**
After Step 3, running python app.py should display:
- Running on http://127.0.0.1:5000
- Debug mode: on
Visiting http://localhost:5000/health should return: {"status": "healthy", "timestamp": "2024-01-15T10:30:00Z"}
**Screenshots (where helpful):**
- UI results
- Browser developer tools
- Database state
- Terminal output
**File Structure:**
After Step 5, your project should look like: tutorial-app/ ├── app.py ├── models/ │ └── user.py ├── routes/ │ └── auth.py └── tests/ └── test_auth.py
### 7. Add Troubleshooting Section
Anticipate and solve common problems:
**For Each Common Issue:**
**Problem:** [Error message or symptom]
**Likely Cause:** [What usually causes this]
**Diagnosis:** [How to check for this issue]
**Fix:** [Step-by-step solution]
**Verification:** [How to confirm it's fixed]
**Example:**
Problem: ImportError: No module named 'flask'
Cause: Flask not installed or wrong Python environment
Diagnosis:
- Check virtual environment activated:
which python - Check installed packages:
pip list | grep -i flask
Fix:
- Activate virtual environment:
source venv/bin/activate - Install Flask:
pip install flask - Verify:
python -c "import flask; print(flask.__version__)"
Verification: Re-run your app - should start without import errors
**Include 3-5 most common issues** based on typical student mistakes.
### 8. Test Tutorial End-to-End
Validate the complete tutorial:
**Fresh Environment Test:**
- Start with clean environment
- Follow your own instructions exactly
- Don't skip any steps
- Note any assumptions you made
- Time how long it actually takes
**Someone Else Tests:**
- Have another person try the tutorial
- Watch for confusion points
- Note questions they ask
- Identify unclear instructions
**Validation Questions:**
- Does every step work as described?
- Are outputs accurate?
- Is prerequisite list complete?
- Is difficulty appropriate?
- Does learning objective get achieved?
**Use:** tutorial-effectiveness-checklist.md
### 9. Verify Progressive Difficulty
Ensure appropriate skill building:
**Check Progression:**
- Early steps are simple and foundational
- Complexity increases gradually
- No sudden jumps in difficulty
- Builds on prior knowledge systematically
**Cognitive Load:**
- Not too much new information at once
- One new concept per step when possible
- Reinforcement through repetition
- Clear explanations for complex topics
**Scaffolding:**
- More guidance early
- Gradually reduce hand-holding
- Final steps require more independence
- Prepares for next-level tutorials
### 10. Include Summary and Next Steps
Conclude effectively:
**What You Learned:**
- Recap key concepts covered
- Skills practiced in tutorial
- How this connects to broader topic
**What You Built:**
- Concrete deliverable description
- How it demonstrates learning
- Real-world applications
**Next Steps:**
- Related tutorials to try
- How to extend this project
- Resources for deeper learning
**Extension Challenges (Optional):**
- "Add password reset functionality"
- "Implement email verification"
- "Add OAuth2 social login"
## Output
Complete tutorial should include:
- Clear learning objective
- Explicit prerequisites
- 8-15 step-by-step instructions
- Tested, working code
- Expected outputs
- Troubleshooting guide
- Summary and next steps
**Use template:** tutorial-section-tmpl.yaml
## Quality Standards
Effective tutorial:
✓ Clear, specific learning objective
✓ Complete prerequisite list
✓ Actionable, numbered steps
✓ All code tested and works
✓ Expected outputs documented
✓ Troubleshooting for common issues
✓ Progressive difficulty
✓ Achievable in stated time
✓ Engaging and motivating
## Common Pitfalls
Avoid:
❌ Skipping setup steps (assumes too much)
❌ Code that doesn't actually run
❌ Unclear or vague instructions
❌ Jumping difficulty too quickly
❌ No verification steps
❌ Missing expected outputs
❌ Untested tutorial (always test!)
❌ Too long (break into multiple tutorials)
## Next Steps
After creating tutorial:
1. Include in relevant chapter
2. Add to tutorial repository
3. Test with target audience if possible
4. Gather feedback and iterate
5. Update based on common student questions