7.3. Sprinting

Ah, unfinished issues!
All that remains
Of the Scrum Master dreams.
   —-after Matsuo Basho (1644-1694)

7.3.1. Sprinting principles

  1. Before planning a sprint, do your homework. Start by drafting initial thoughts about high-level requirements and use cases in an RFC. Be specific.
    1. About
    2. Use cases
    3. Mock-up screenshots
    4. High-level architecture
    5. High-level API
  1. Discuss with various Invenio services and experts. Check for other similar use cases and synergies. Use the community. Seek expert opinions.
  1. Establish a cross-service team. “Alone we can do so little; together we can do so much.” –Helen Keller
  1. Start with a kick-off meeting. Invite all sprint team members to kick off the sprint and plan its details collectively. Invite related technology experts to provide input to estimated tasks. Invite related service managers to help making sure the use cases were well understood.
  1. Establish a backlog of tasks. List everything that needs to be done. Keep it short. Use GitHub “Sprint-Foo” labels or milestones.
  1. Keep it manageable. Plan no more than a two-week sprint. Break up longer sprints into manageable two-week chunks. Beware of attention span. Prioritise.
  1. Act. Trying our best to finish all tasks in time? “No. Try not. Do. Or do not. There is no try.” (–Master Yoda)
  1. Hold very short daily stand-up meetings. What has everyone done since yesterday? Is anyone blocked by anything? What is everyone going to do next?
  1. Once over, review achievements. Did everything go as planned? Were you too optimistic or too pessimistic regarding backlog and time planning? What have we learned?
  1. Finish by releasing packages and deploying features. Close sprints by releasing the software and deploying the features on concerned services — production or sandbox.