Scrum: Engineering High-Quality Software
Presentation built with:
Reveal.js in Visual Studio Code
Agenda
- The Scrum Framework
- The Development Team
- Engineering for Quality
Scrum Overview
Roles
Artifacts
Events
Product Owner
Product Backlog
Sprint
Scrum Master
Sprint Backlog
Sprint Planning
Development Team
Increment
Daily Scrum
-
-
Sprint Review
-
-
Sprint Retrospective
Scrum Roles
-
Product Owner
Key Stakeholder, Value Maximizer, ROI, TCO, Responsible for 'What'
-
Scrum Master
Manages the Scrum Process, Impediment Remover, Organizational Agile Leader
-
Development Team
6+-3, Responsible for 'How', Cross-functional, Self-organizing
Scrum Artifacts
-
Product Backlog
Requirements are Stored, Owner by Product Owner, Ordered on Value
-
Sprint Backlog
Dev Teams Sprint Focus, Subset of Product Backlog, Owned by Dev Team
-
Increment
"Done", Delivered in a Sprint, Potentially Shippable, High Quality
Scrum Events
Name
Duration
Attendees
Purpose
Sprint
<= 30 days
-
Container Event
Sprint Planning
<= 8 hrs
Scrum Team
Sprint Backlog, Sprint Goal
Daily Scrum
<= 15 mins
Dev Team
Plan for next 24 hours
Sprint Review
<= 4 hrs
Scrum Team + Stakeholders
Increment Inspection, What's next?
Sprint Retrospective
<= 3 hrs
Scrum Team
Inspect & Adapt Sprint, Kaizen
Problem
~ an arrangement of pieces in which the solver(s) has to achieve a specified result
Software Dev:
New Customers, Operational Efficiency, Improve Communication
Expanding online presence, Building a sales tool, sell online
Cross-Functional Team
~ a team that has all the neccesary skills to solve a problem
- Scrum only recognizes "Developer"
- Coder, Tester, UX, Ops, DBA
Self-Organization
~ A team that is led and organized by team members
- Presenting with a problem and organize around it
- Not self-managing
Problem
Cross-Functional Team
Self-Organization
Create "Done" Increments
- Define what "Done" means
- Don't accept un-done work
- Collective Ownership
Done = Common understanding, Transparency
Collectively Own the Sprint Backlog
Application Lifecycle Management
- Source Control
- Build Automation
- Continous Integration/Deployment/Delivery
- Test Automation
- Unit, System, Performance, UI, Business, etc.
There are others!
Branching should be simple
(CI) requires developers to integrate code into a shared repository several times a day
(CDelivery) discipline where you build software in such a way that the software can be released to production at any time.
(CDeployment) every change goes through the pipeline and automatically gets put into production, resulting in many production deployments every day.
Shorten Feedback Loops
The further you go down the road, the harder it is to remember what was behind you.
Engineering Practices
- Test Driven Development
- Pair Programming
- Object Oriented Design Principles (SOLID)
- Design Patterns
- Clean Code
- Refactoring
- Emergent Architecture
SOLID (Single responsibility principle, Open/closed principle, Liskov substitution principle,
Interface segregation principle, Dependency inversion principle)
Technical Debt
Be a craftsman!
Nobody will be happy with a wobbly table.
"Done" Increments
Application Lifecycle Management
Engineering Practices
1.1
Scrum: Engineering High-Quality Software