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:
- Introduction (2 min): Sprint goal reminder, what was planned
- Demo (15-20 min): Show working features (live, not slides)
- Discussion (5-10 min): Questions, feedback, suggestions
- 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:
- What went well? (Celebrate successes, repeat these)
- What didn't go well? (Identify problems, don't blame)
- 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:
- Everyone writes ideas on sticky notes (5 min)
- Group similar items (5 min)
- Discuss each category (15 min)
- Vote on top 3 action items (5 min)
- 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:
- Open conflicted file in editor
- Look for conflict markers (
<<<<<, =======,
>>>>>)
- Decide which change to keep (or combine)
- Remove conflict markers
git add resolved file
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):
- Individual Reflection (5 min):
- Each person writes down: What went well? What didn't? Ideas for improvement?
- Share & Group (15 min):
- Everyone shares their points
- Group similar items together
- Use Start-Stop-Continue framework
- Discuss (15 min):
- Talk through each category
- Be specific about problems (not "communication was bad" → "didn't know who was
working on what")
- 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:
- Quick introduction - sprint goal and stories planned
- Live demo of completed work
- Mention incomplete items honestly
- Answer questions
- 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:
- Review Backlog: Look at prioritized user stories
- Consider Velocity: How much did you complete in Sprint 1?
- Select Stories: Choose stories totaling ~your velocity
- Apply Retrospective Learnings: Use improved processes
- Break into Tasks: Detail technical work needed
- 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):
- Calculate Velocity (5 min):
- Review Sprint 1: planned vs completed story points
- Be realistic about capacity
- Review & Prioritize Backlog (10 min):
- Move any incomplete Sprint 1 stories back to backlog
- Re-prioritize based on Sprint 1 learnings
- Select Stories (10 min):
- Choose stories totaling ~your velocity
- Ensure stories build on Sprint 1 work
- Set Sprint Goal (5 min):
- One clear objective for Sprint 2
- 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
- Start Sprint 2 Work:
- Begin assigned tasks
- Apply retrospective action items
- Hold regular standups
- Document Sprint 1:
- Save retrospective notes (docs/retrospectives/sprint1.md)
- Update README with Sprint 1 achievements
- Improve Processes:
- Implement action items from retrospective
- Update team conventions if needed
- Read About Ethics:
- Review BCS Code of Conduct (link on Moodle)
- Skim GDPR basics