By Fatskills Exam Guides Team — the exam nerds behind 28,500+ quizzes and 2.1M practice questions across 500+ global exams.
Hyper-Practical Study Guide
You’re a developer on a Scrum team. Your Product Owner (PO) just dropped a new feature request: "Users need to export their data as a PDF, but the backend service that generates the PDF is slow and unreliable." The sprint starts in 30 minutes. No manager is assigning tasks. No architect is handing you a design doc. You decide how to break this down, who to pair with, and how to validate it works—without breaking production.
This is self-management in action.
If you wait for instructions, the sprint fails. If you silo yourself ("I only do frontend"), the feature ships late. If you don’t reflect on what went wrong, the next sprint will repeat the same mistakes.
This guide is your playbook for:✅ Self-managing – Owning your work without micromanagement.✅ Cross-functional – Delivering end-to-end value, not just "your part." ✅ Continuous improvement – Getting 1% better every sprint, not just shipping code.
Why this matters in production:- Speed: Teams that self-manage ship 2–3x faster (McKinsey). No waiting for approvals.- Resilience: Cross-functional teams handle outages without "throwing it over the wall" to ops.- Quality: Continuous improvement reduces tech debt and prevents "death by a thousand cuts."
Real-world scenario:You inherit a monolithic app with no tests. The last team left because "it’s unmaintainable." Your PO wants a new feature in 2 weeks. What do you do?(We’ll answer this in the hands-on section.)
Definition: A team that organizes its own work, makes technical decisions, and holds itself accountable.Production insight: If your team waits for a manager to assign tasks, you’re not Agile—you’re just doing mini-waterfall.
Definition: A team with all the skills needed to deliver a feature (dev, test, ops, UX, etc.).Production insight: If your team says "We can’t deploy because ops won’t approve it," you’re not cross-functional.
Definition: Deep expertise in one area (e.g., backend) + broad skills in others (e.g., basic frontend, CI/CD).Production insight: If you can’t debug a frontend issue or write a SQL query, you’re a bottleneck.
Definition: A checklist ensuring a backlog item is actionable (e.g., acceptance criteria, mockups, dependencies).Production insight: If you start work on a story without a DoR, you’ll waste time clarifying mid-sprint.
Definition: A shared understanding of what "done" means (e.g., code reviewed, tested, deployed, documented).Production insight: If your DoD doesn’t include "monitored in production," you’ll ship bugs.
Definition: A structured meeting to reflect on what went well, what didn’t, and actionable improvements.Production insight: If your retros are just complaints without action items, nothing changes.
Definition: The cost of future rework caused by choosing an easy solution now instead of a better one.Production insight: If you ignore tech debt, your velocity will slow to a crawl.
Definition: Small, incremental improvements to processes, tools, and skills.Production insight: If you don’t improve, you’ll keep making the same mistakes.
Scenario: "Users need to export their data as a PDF, but the backend service is slow and unreliable."
Your move:1. Clarify the problem: - Is the slowness due to the PDF generation library? Network latency? Database queries? - Ask the PO: "What’s the acceptable latency? 1 second? 5 seconds?" 2. Split the story: - Spike: Research PDF generation libraries (e.g., pdfkit, wkhtmltopdf, Puppeteer). - Backend: Optimize the existing service (caching, async processing). - Frontend: Add a loading state and error handling. - Monitoring: Add logs/metrics for PDF generation time.
pdfkit
wkhtmltopdf
Puppeteer
Example (CLI for research):
# Check current PDF generation time (Linux/macOS) time curl -X POST https://api.your-app.com/generate-pdf -d '{"user_id": 123}' # Output: real 0m4.234s → Too slow!
Problem: You’re a backend dev, but the frontend needs changes.Your move:- Pair with a frontend dev to: - Add a loading spinner. - Handle errors (e.g., "PDF generation failed, try again").- Pair with an ops/devops engineer to: - Add monitoring (e.g., Datadog, Prometheus). - Set up alerts if PDF generation takes > 2 seconds.
Example (Monitoring setup - Prometheus):
# prometheus.yml scrape_configs: - job_name: 'pdf_service' metrics_path: '/metrics' static_configs: - targets: ['localhost:8000']
# Check metrics curl http://localhost:8000/metrics | grep pdf_generation_time
Problem: Without a DoD, you’ll ship half-baked features.Your move:- Agree on a DoD for the PDF feature: - Code reviewed (GitHub PR). - Unit/integration tests (e.g., Jest, pytest). - Deployed to staging. - Monitored in production (latency < 2s). - Documented (README, API docs).
Example (Test - Python):
# test_pdf_service.py def test_pdf_generation(): response = client.post("/generate-pdf", json={"user_id": 123}) assert response.status_code == 200 assert "application/pdf" in response.headers["Content-Type"]
Problem: You’re waiting for someone else to deploy.Your move:- Deploy to staging yourself (if you have permissions).- Verify in staging: - Test the PDF generation. - Check logs for errors. - Validate monitoring is working.
Example (CI/CD - GitHub Actions):
# .github/workflows/deploy.yml name: Deploy PDF Service on: push: branches: [ main ] jobs: deploy: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - run: ./deploy.sh
Problem: The sprint ends, but you don’t reflect on what went wrong.Your move:- Run a retro (use the Start/Stop/Continue format): - Start: What should we do more of? (e.g., "Pair programming on complex tasks.") - Stop: What’s not working? (e.g., "Starting work without a DoR.") - Continue: What’s working well? (e.g., "Daily standups keep us aligned.") - Pick 1–2 action items (e.g., "Add a DoR checklist to Jira").
Example (Retro board - Miro):| Start | Stop | Continue | |-------|------|----------| | Pair programming | Starting work without DoR | Daily standups | | Writing tests first | Ignoring tech debt | Code reviews |
✅ "Try to unblock it yourself (Google, ask a teammate), then escalate if needed."
"How do you ensure a feature is truly 'done'?"
✅ "When it meets the Definition of Done (tested, deployed, monitored, documented)."
"What’s the purpose of a sprint retrospective?"
"Your team is struggling with slow deployments. What’s the first step to improve?"- ❌ "Rewrite the entire CI/CD pipeline." - ✅ "Measure current deployment time, identify bottlenecks (e.g., slow tests), and fix the biggest one."
Challenge:You inherit a legacy monolithic app with no tests. The PO wants a new feature in 2 weeks. How do you deliver without breaking everything?
Solution:1. Add tests incrementally: - Start with the new feature (write tests first). - Add tests for critical paths in the legacy code.2. Refactor as you go: - Extract the new feature into a separate module. - Use feature flags to hide unfinished work.3. Monitor in production: - Add logging to the new feature. - Set up alerts for errors.
Why it works:- You’re not boiling the ocean (rewriting the whole app).- You’re reducing risk by testing and monitoring.- You’re delivering value while improving the codebase.
Final Thought:Agile isn’t about ceremonies—it’s about ownership, collaboration, and improvement. If you take one thing from this guide, let it be this: You are responsible for your work, your team’s success, and your own growth. Act like it. ?
Join 4M+ learners. Unlock unlimited quizzes, wrong-answer tracking, flashcards + reminders, study guides, and 1-on-1 challenges.