Scrum¶
In de uitgestrekte wereld van Agile ontwikkeling, als Agile een set "waarden" is die ons leiden om veranderingen te omarmen, dan is Scrum het meest populaire en breed toegepaste lichte kaderwerk dat deze waarden in praktijk brengt. Scrum is geen gedetailleerd proces of methode, maar een "spelregelsboek" voor het spel, ontworpen om teams efficiënt samen te laten werken en continu waarde te leveren bij de ontwikkeling van complexe producten. Het biedt teams een eenvoudige, duidelijke, maar krachtige iteratieve werkroutine door een reeks duidelijke rollen, gebeurtenissen en artefacten te definiëren.
De naam Scrum komt van de "scrum" actie in rugby, waarbij het hele team samenwerkt als een cohesieve eenheid die richting een gemeenschappelijk doel duwt. Het erkent dat we bij het oplossen van complexe problemen niet van tevoren alle antwoorden kennen. Daarom is de kern van Scrum om een groot, onzeker probleem op te breken in een reeks kleine, beheersbare experimenten via korte, vaststaande iteraties (d.w.z. "Sprints"). Aan het einde van elke sprint levert het team een bruikbaar productdeel op en reflecteert en past het team aan, zodat het via ervaring leert en zich aanpast aan veranderingen.
De Drie Fundamenten van het Scrum-Kader¶
Het gehele Scrum-kader is gebaseerd op drie empirische fundamenten:
- Transparantie: Alle belangrijke aspecten die het resultaat beïnvloeden moeten zichtbaar zijn voor iedereen die verantwoordelijk is voor dat resultaat (inclusief klanten). Dit betekent dat voortgang, belemmeringen, backlogs, etc. open en transparant moeten zijn.
- Inspectie: Scrum artefacten en de voortgang richting een doel moeten regelmatig en zorgvuldig worden geïnspecteerd om afwijkingen of problemen tijdig te detecteren.
- Aanpassing: Wanneer tijdens een inspectie blijkt dat het huidige werk buiten aanvaardbare limieten afwijkt en het resulterende product onaanvaardbaar zal zijn, moet het proces of de verwerkte inhoud zo snel mogelijk worden aangepast.
De 3-5-3 Structuur van Scrum¶
De "spelregels" van Scrum kunnen beknopt worden samengevat als een "3-5-3"-structuur: 3 rollen, 5 gebeurtenissen, 3 artefacten.
graph TD
subgraph Scrum Framework (3-5-3)
subgraph 3 Roles
A(<b>Product Owner</b><br/><i>Verantwoordelijk voor het maximaliseren van de productwaarde</i>)
B(<b>Scrum Master</b><br/><i>Verantwoordelijk voor het correct toepassen van Scrum</i>)
C(<b>Ontwikkelaars</b><br/><i>Verantwoordelijk voor het leveren van productincrementen</i>)
end
subgraph 5 Events
D(<b>Sprint</b><br/><i>Kerngebeurtenis, 1-4 weken iteratiecyclus</i>) --> E(<b>Sprint Planning</b>);
E --> F(<b>Daily Scrum</b>);
F --> G(<b>Sprint Review</b>);
G --> H(<b>Sprint Retrospective</b>);
end
subgraph 3 Artifacts
I(<b>Product Backlog</b><br/><i>Volledige lijst met vereisten</i>)
J(<b>Sprint Backlog</b><br/><i>Taaklijst voor de huidige sprint</i>)
K(<b>Increment</b><br/><i>Bruikbaar productdeel voltooid in de huidige sprint</i>)
end
end
3 Rollen¶
- Product Owner: De enige persoon verantwoordelijk voor de "waarde" van het product. Hun hoofdtaak is het beheren en optimaliseren van de Product Backlog, ervoor zorgen dat het ontwikkelteam altijd werkt aan items die de hoogste waarde opleveren voor klanten en het bedrijf. Zij bepalen "wat gedaan moet worden."
- Scrum Master: De "dienende leider" en "coach" van het Scrum-kader. Zij leiden het team niet, maar ondersteunen het team, verwijderen belemmeringen, faciliteren gebeurtenissen en zorgen ervoor dat de Scrum-regels en -waarden correct worden begrepen en gevolgd door het team.
- Ontwikkelaars: Een multidisciplinair, zelforganiserend team van professionals dat gezamenlijk verantwoordelijk is voor het omzetten van backlog-items in een hoogwaardig, leverbaar productdeel binnen elke sprint. Zij bepalen "hoe het gedaan moet worden."
5 Gebeurtenissen¶
- Sprint: De kern van Scrum, een vast tijdsbestek (meestal 1-4 weken). Tijdens een sprint richt het team zich op het behalen van een waardevol "Sprint Doel."
- Sprint Planning: Wordt gehouden aan het begin van elke sprint. De Product Owner legt de hoogst geprioriteerde items uit de Product Backlog uit aan het ontwikkelteam. Het team kiest gezamenlijk en verbindt zich tot het werk dat binnen de sprint kan worden voltooid en stelt een voorlopig uitvoeringsplan op, waarmee de Sprint Backlog ontstaat.
- Daily Scrum: Een dagelijkse synchronisatiemeeting van maximaal 15 minuten. Elk lid van het ontwikkelteam beurtelt zich af bij het beantwoorden van drie vragen: "Wat heb ik gisteren gedaan?" "Wat ga ik vandaag doen?" "Welke belemmeringen ben ik tegengekomen?" Het doel is om snel voortgang te synchroniseren en belemmeringen te identificeren, niet om verslag te doen aan de leiding.
- Sprint Review: Wordt gehouden aan het einde van de sprint. Het ontwikkelteam demonstreert het voltooide, werkende Increment aan de Product Owner, klanten en andere belanghebbenden, en verzamelt feedback. Dit is een informele bijeenkomst over het "product."
- Sprint Retrospective: Wordt gehouden na de Sprint Review en vóór de volgende sprint begint. Het Scrum Team (PO, SM, Devs) reflecteert gezamenlijk op wat goed ging en wat verbeterd kan worden met betrekking tot mensen, relaties, processen en tools in de net afgeronde sprint, en stelt een concreet verbeterplan op voor de volgende sprint.
3 Artefacten¶
- Product Backlog: Een dynamische, geprioriteerde, uitgebreide lijst van alle bekende productvereisten, functies, correcties en verbeteringen. Wordt uitsluitend beheerd door de Product Owner.
- Sprint Backlog: De lijst van taken waarop het ontwikkelteam zich heeft vastgelegd om binnen de huidige sprint te voltooien, en het plan om het "Sprint Doel" te bereiken. Wordt uitsluitend beheerd door het ontwikkelteam.
- Increment: De som van alle voltooide Product Backlog items aan het einde van elke sprint. Moet bruikbaar zijn en voldoen aan de "Definition of Done." Het is een directe weerspiegeling van de werkresultaten van het team.
Toepassingsvoorbeelden¶
Voorbeeld 1: Ontwikkelen van een Online Bestelapp voor Eten
- Product Backlog: Bevat honderden gebruikersverhalen zoals "gebruikersregistratie," "menu bekijken," "online betalen," "bestelling volgen," etc.
- Sprint 1 (2 weken):
- Sprint Doel: "Gebruikers kunnen zich succesvol registreren en inloggen."
- Sprint Backlog: Het team koos 5 gebruikersverhalen met betrekking tot registratie en login.
- Daily Scrum: Het team synchroniseerde dagelijks de voortgang en ontdekte dat de "instabiele SMS-verificatiecode-interface" een belemmering was. De Scrum Master coördineerde onmiddellijk om dit op te lossen.
- Sprint Review: Het team demonstreerde een werkende, complete registratie- en loginprocedure.
- Sprint Retrospective: Het team concludeerde dat hun taakschattingen te optimistisch waren en besloot in de volgende sprint een conservatievere schattingsmethode toe te passen.
Voorbeeld 2: Een Marketingteam dat een Productlancering Voorbereidt
- Scrum is niet alleen toepasbaar op softwareontwikkeling.
- Product Owner: Marketingmanager.
- Product Backlog: Bevat alle werkitems zoals "thema van de lancering bepalen," "hoofdvisuele ontwerpen," "media en KOL's uitnodigen," "persberichten schrijven," "locatie boeken," etc.
- Sprint 1 (1 week):
- Sprint Doel: "Het kernthema en het initiële hoofdontwerp voor de lancering vaststellen."
- Het team leverde via een eenweekse sprint snel resultaten en demonstreerde deze aan de directie tijdens de reviewvergadering, waarbij ze tijdige feedback kregen en het investeren van te veel designresources in de verkeerde richting voorkwamen.
Voorbeeld 3: Een Studentengroep die een Semesterproject Afwerkt
- Product Owner: Een student fungeert als PO en communiceert met de professor om de projectvereisten helder te maken.
- Product Backlog: Het hele project is opgesplitst in onderdelen zoals "literatuurstudie," "data verzamelen," "data analyseren," "rapport schrijven," "PPT maken."
- Sprints: Ze verdeelden de resterende 8 weken van het semester in 4 tweeweekse sprints. Elke sprint had een duidelijk doel, bijvoorbeeld het doel van de eerste sprint was om "de literatuurstudie en onderzoeksonderzoek te voltooien." Deze aanpak hielp effectief om het laatste moment uitstellen aan het einde van het semester te voorkomen.
Voordelen en Uitdagingen van Scrum¶
Kernvoordelen
- Verhoogde Productiviteit en Snelheid: Door korte iteraties en focus kunnen teams sneller waarde leveren.
- Verhoogde Flexibiliteit en Aanpasbaarheid: Kan rustig omgaan met veranderende vereisten en op tijd van koers veranderen op basis van feedback.
- Verbeterde Transparantie en Communicatie: Duidelijke rollen, gebeurtenissen en artefacten bevorderen de communicatie en informatie-uitwisseling binnen en buiten het team aanzienlijk.
- Empowerment van Teams, Verhoogde Morale: Zelforganiserende ontwikkelteams hebben een hogere autonomie en een gevoel van eigenaarschap.
Mogelijke Uitdagingen
- "Eenvoudig te begrijpen, moeilijk te beheersen": De Scrum-regels zijn eenvoudig, maar het echte begrip van de onderliggende Agile geest en het succesvol toepassen binnen een specifieke organisatiecultuur is zeer moeilijk.
- Hoge eisen aan de Product Owner: De Product Owner moet diepgaande kennis hebben van het bedrijf, de markt en de klanten en uitstekende communicatie- en beslissingsvaardigheden bezitten.
- Risico op "Scope Creep": Als de Product Owner de backlog en verwachtingen van belanghebbenden niet goed beheert, kan dit leiden tot frequente wijzigingen in de sprintdoelen.
- Vereist Teamrijpheid: Zelforganiserende teams vereisen dat leden een hoog verantwoordelijkheidsgevoel, samenwerkingsgeest en multidisciplinaire vaardigheden hebben.
Uitbreidingen en Verbindingen¶
- Agile Ontwikkeling: Scrum is een specifiek, veelgebruikt kader om Agile waarden en principes werkelijkheid te maken.
- Kanban: Een andere populaire Agile methode. In tegenstelling tot Scrum's ritme gebaseerd op "tijdvakken (sprints)", richt Kanban zich meer op "continue stroom". In de praktijk combineren veel teams beide methoden; bijvoorbeeld Kanban gebruiken binnen een Scrum-sprint om de stroom van taken zichtbaar te maken en te beheren, wat "Scrumban" wordt genoemd.
- Extreme Programming (XP): Scrum levert het "managementkader", terwijl XP een reeks uitstekende "engineeringpraktijken" levert. Het integreren van XP-praktijken (zoals Test-Driven Development, Pair Programming) in het Scrum-kader kan de technische kwaliteit van productincrementen aanzienlijk verbeteren.
Referentie: Het Scrum-kader werd in de vroege jaren '90 gezamenlijk voorgesteld door Jeff Sutherland en Ken Schwaber. Hun gezamenlijke werk, "The Scrum Guide", is de enige officiële definitie van het Scrum-kader en wordt regelmatig bijgewerkt om de evolutie van de praktijk weer te geven.