H M < >
CMU597: Industry Project - Lecture 5

Sprint 1 Review & Sprint 2 Start

Part A: Reviews & Git | Part B: Sprint 2 Kick-Off

James Williams

Birmingham Newman University

jwilliams@staff.newman.ac.uk

3-hour session • 2 parts • 2 team tasks

Session Timeline

Part A: Sprint Reviews, Retrospectives, Git (90 minutes)

30 minutes: Lecture on conducting reviews and advanced Git workflows

45 minutes: Task 1 - Conduct Sprint 1 retrospective

15 minutes: Break

Part B: Sprint 1 Review + Sprint 2 Kick-Off (90 minutes)

30 minutes: Sprint 1 team demos (5-7 min per team)

45 minutes: Task 2 - Plan Sprint 2

15 minutes: Q&A and troubleshooting

Learning Objectives

  • Conduct effective sprint reviews and demonstrations
  • Run productive sprint retrospectives
  • Understand advanced Git workflows (branching, rebasing, conflict resolution)
  • Master pull requests and code review processes
  • Learn from Sprint 1 successes and challenges
  • Plan Sprint 2 with improved velocity estimates
  • Identify and address team blockers
  • Continuously improve team processes

Sprint Review vs Sprint Retrospective

Sprint Review:

  • Focus: WHAT was built
  • Audience: Team + stakeholders
  • Format: Demo working software
  • Outcome: Feedback on product
  • Duration: 30-60 minutes

Sprint Retrospective:

  • Focus: HOW team worked
  • Audience: Team only
  • Format: Discussion/reflection
  • Outcome: Process improvements
  • Duration: 45-90 minutes
Key Difference: Review = Product inspection, Retrospective = Process inspection

Conducting an Effective Sprint Review

Review Structure:

  1. Introduction (2 min): Sprint goal reminder, what was planned
  2. Demo (15-20 min): Show working features (live, not slides)
  3. Discussion (5-10 min): Questions, feedback, suggestions
  4. Backlog Update (5 min): Adjust priorities based on feedback

Demo Best Practices:

  • ✓ Show WORKING software, not PowerPoint
  • ✓ Use realistic data (not "test test test")
  • ✓ Focus on user value, not technical details
  • ✓ Be honest about incomplete items

Demo Presentation Tips

Tell a Story:

Good: "As a student looking for study space, I open the app, select my building, and immediately see 3 available rooms. I click 'Book' for Room 204, get confirmation, and receive booking details."

Avoid: "So here's the database table, and this is the API endpoint, and if you look at the code..."

Preparation:

  • Test demo flow beforehand (no surprises!)
  • Have backup screenshots if live demo fails
  • Assign who presents which feature
  • Keep within time limit (5-7 min for student teams)

The Purpose of Sprint Retrospectives

Goal: Continuous improvement - identify what worked, what didn't, and commit to concrete changes.

Three Core Questions:

  1. What went well? (Celebrate successes, repeat these)
  2. What didn't go well? (Identify problems, don't blame)
  3. What will we change? (Actionable improvements for next sprint)
Safe Environment: Retrospectives should be blameless. Focus on processes and systems, not individuals.

Retrospective Format: Start-Stop-Continue

START
What should we start doing?
Example: Daily standups, code reviews
STOP
What should we stop doing?
Example: Last-minute commits, skipping tests
CONTINUE
What's working well?
Example: Pair programming, clear commit messages

Process:

  1. Everyone writes ideas on sticky notes (5 min)
  2. Group similar items (5 min)
  3. Discuss each category (15 min)
  4. Vote on top 3 action items (5 min)
  5. Assign ownership and track (5 min)

Example Retrospective Outcomes

Start:

  • Pair programming sessions twice a week (Tom & Bob)
  • Document API changes immediately (Everyone)
  • 15-minute daily standup at 10am (Everyone)

Stop:

  • Pushing code at midnight without testing (Everyone)
  • Approving PRs without actually reviewing (Everyone)

Continue:

  • Clear commit messages with ticket references
  • Weekly team syncs on Discord
  • Celebrating small wins!

Git Branching Strategies

Review: You learned basic feature branches. Now let's go deeper.

Branch Types:

  • main: Production-ready code (always deployable)
  • develop: Integration branch (optional for larger teams)
  • feature/*: New features (feature/user-login)
  • bugfix/*: Bug fixes (bugfix/login-error)
  • hotfix/*: urgent production fixes (hotfix/security-patch)
For Your Teams: Keep it simple. Use main + feature branches.

Advanced Git Workflow

# Keep your branch up-to-date with main
git checkout main
git pull origin main
git checkout feature/my-feature
git merge main  # Or: git rebase main (advanced)

# Interactive staging (commit parts of file)
git add -p  # Review each change and stage selectively

# Amend last commit (fix typo in message/add forgotten file)
git add forgotten-file.js
git commit --amend --no-edit

# Stash changes temporarily (switch branches without committing)
git stash
git checkout other-branch
# ... do work ...
git checkout feature/my-feature
git stash pop

# View commit history graphically
git log --oneline --graph --all

Resolving Merge Conflicts

Conflict: Git can't automatically merge changes (both changed same lines).
// Example conflict in code
function getUserName() {
<<<<<<< HEAD
  return user.fullName;  // Your change
=======
  return user.displayName;  // Teammate's change
>>>>>>> feature/update-user-display
}

Resolution Steps:

  1. Open conflicted file in editor
  2. Look for conflict markers (<<<<<, =======, >>>>>)
  3. Decide which change to keep (or combine)
  4. Remove conflict markers
  5. git add resolved file
  6. git commit to complete merge

Pull Request Best Practices

Writing Good PR Descriptions:

Good PR Description:

## What
Implements user registration feature (#23)

## Changes
- Added registration form component
- Created POST /api/register endpoint
- Added email validation and password hashing
- Updated user schema with email_verified field

## Testing
- Manually tested happy path
- Tested validation errors
- Checked database insertion

## Screenshots
[Screenshot of registration form]

Tip: Link to user story/issue number for traceability

Code Review Checklist

What to Check:

  • Functionality:
    • Does it meet acceptance criteria?
    • Are there edge cases to consider?
  • Code Quality:
    • Readable and well-structured?
    • Follows team conventions?
    • No code duplication (DRY principle)?
  • Security:
    • Input validation present?
    • No hardcoded secrets?
  • Testing:
    • Are there tests?
    • Do existing tests still pass?

Task 1: Conduct Sprint 1 Retrospective

Instructions (Work in your project teams):

  1. Individual Reflection (5 min):
    • Each person writes down: What went well? What didn't? Ideas for improvement?
  2. Share & Group (15 min):
    • Everyone shares their points
    • Group similar items together
    • Use Start-Stop-Continue framework
  3. Discuss (15 min):
    • Talk through each category
    • Be specific about problems (not "communication was bad" → "didn't know who was working on what")
  4. Action Items (10 min):
    • Vote on top 3 improvements to implement
    • Assign ownership (who will ensure it happens?)
    • Make actionable (not "communicate better" → "daily 10am standup")

Time: 45 minutes

Deliverable: Document action items (save in docs/retrospectives/sprint1.md)

Break Time

15 Minutes

Take a break. Prepare to demo your Sprint 1 work!

Next: Part B - Sprint Reviews and Sprint 2 Planning

Part B: Sprint 1 Review & Sprint 2 Planning

Demo Time!

Each team will demo their Sprint 1 work (5-7 minutes each)

Review Structure:

  1. Quick introduction - sprint goal and stories planned
  2. Live demo of completed work
  3. Mention incomplete items honestly
  4. Answer questions
  5. Gather feedback

Demo Day Guidelines

For Presenting Teams:

  • Show working software (not code or slides)
  • Demonstrate from user perspective
  • Stick to time limit (5-7 minutes)
  • Be prepared for questions

For Audience Teams:

  • Take notes on interesting approaches
  • Ask constructive questions
  • Share ideas and suggestions
  • Learn from others' successes and challenges
Remember: This is a learning environment. Celebrate progress, don't judge perfection.

Understanding Velocity

Velocity: Amount of work (story points) team completes per sprint.

Example:

Sprint 1 Plan: 20 story points
Sprint 1 Completed: 15 story points
Team Velocity: 15 points/sprint

Using Velocity:

  • Helps predict what team can achieve
  • Use average of last 2-3 sprints
  • Don't over-commit in Sprint 2
  • Velocity typically increases over time (team gets faster)
Not a Competition: Velocity is unique to each team. Don't compare across teams.

Planning Sprint 2

Planning Process:

  1. Review Backlog: Look at prioritized user stories
  2. Consider Velocity: How much did you complete in Sprint 1?
  3. Select Stories: Choose stories totaling ~your velocity
  4. Apply Retrospective Learnings: Use improved processes
  5. Break into Tasks: Detail technical work needed
  6. Set Sprint Goal: One sentence objective

Sprint 2 Goal Examples:

"Complete user authentication and basic product management"
"Build data ingestion pipeline and first ML model integration"

Introducing Continuous Integration (CI)

CI: Automatically build and test code when pushed to repository.

Benefits:

  • Catch bugs immediately when code is pushed
  • Ensure tests pass before merging
  • Maintain code quality standards
  • Team confidence in main branch
# .github/workflows/test.yml - GitHub Actions example
name: Run Tests
on: [push, pull_request]
jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: Install dependencies
        run: npm install
      - name: Run tests
        run: npm test

Establishing "Definition of Done"

Definition of Done (DoD): Checklist that EVERY story must meet before marking as "Done".

Example DoD:

  • ✓ Code written and committed
  • ✓ Code reviewed and approved by 1+ teammate
  • ✓ All acceptance criteria met
  • ✓ Unit tests written and passing
  • ✓ Integrated into main branch
  • ✓ Manually tested end-to-end
  • ✓ Documentation updated (if needed)
  • ✓ No known bugs
Team Agreement: Create your DoD in Sprint 2 planning.

Managing Technical Debt

Technical Debt: Shortcuts or quick fixes that need refactoring later.

Common Sources:

  • Skipping tests to save time
  • Copy-pasting code instead of making reusable
  • Hardcoding values instead of configuration
  • Missing documentation

Managing It:

  • Track debt items in backlog (label as "tech-debt")
  • Allocate 20% of sprint to paying down debt
  • Don't let it accumulate (harder to fix later)
  • Refactor as you go when touching code

Task 2: Plan Sprint 2

Instructions (Work in your project teams):

  1. Calculate Velocity (5 min):
    • Review Sprint 1: planned vs completed story points
    • Be realistic about capacity
  2. Review & Prioritize Backlog (10 min):
    • Move any incomplete Sprint 1 stories back to backlog
    • Re-prioritize based on Sprint 1 learnings
  3. Select Stories (10 min):
    • Choose stories totaling ~your velocity
    • Ensure stories build on Sprint 1 work
  4. Set Sprint Goal (5 min):
    • One clear objective for Sprint 2
  5. Break into Tasks & Assign (15 min):
    • Detail technical tasks for each story
    • Assign to team members
    • Update Kanban board

Time: 45 minutes

Deliverable: Sprint 2 plan with goal, selected stories, and task assignments

Lecture 5 Summary

  • Sprint reviews focus on WHAT was built (product demo)
  • Sprint retrospectives focus on HOW team worked (process improvement)
  • Retrospectives use Start-Stop-Continue or similar frameworks
  • Advanced Git workflows include rebasing, stashing, interactive staging
  • Merge conflicts are resolved by choosing/combining changes
  • Good PRs have clear descriptions and link to user stories
  • Velocity helps teams predict capacity
  • Definition of Done ensures quality standards

Next Lecture:

Ethics, Professionalism & Applied Fixes
BCS Code of Conduct, GDPR, accessibility, and implementing ethical improvements

Before Next Lecture

  1. Start Sprint 2 Work:
    • Begin assigned tasks
    • Apply retrospective action items
    • Hold regular standups
  2. Document Sprint 1:
    • Save retrospective notes (docs/retrospectives/sprint1.md)
    • Update README with Sprint 1 achievements
  3. Improve Processes:
    • Implement action items from retrospective
    • Update team conventions if needed
  4. Read About Ethics:
    • Review BCS Code of Conduct (link on Moodle)
    • Skim GDPR basics