Skip to content

Instantly share code, notes, and snippets.

@rmw
Created May 9, 2014 22:14
Show Gist options
  • Save rmw/3bf18cd48128e42d75d7 to your computer and use it in GitHub Desktop.
Save rmw/3bf18cd48128e42d75d7 to your computer and use it in GitHub Desktop.

Agile Software Development

Agile is a general philosophy describing a set of guiding principles for building software through iterative development. SCRUM is a methodology -- in another words, an implementation -- pertaining specifically to project management. Other methodologies inclue extreme programming, kanban.

SCRUM history:

Scrum was a term first used in 1987 to describe hyper-productive product development in Japan. The word Scrum comes from rugby, where scrum refers to the strategy used for getting an out-of-play ball back into play. The name Scrum stuck because of the similarities between the game of rugby and the type of product development proscribed by Scrum -- both are adaptive, quick, and self-organizing.

Agile development is really about providing a framework that allows developers to build something useful for real world users and deal with the realities of interruptions, timelines, and technical requirements that disrupt an ideal development cycle. In other words, Agile development helps developers deal with reality.

Some of its fundamental goals include:

  • self-organization
  • minimize meetings
  • prevent interruptions
  • incremental product delivery
  • visibility

SCRUM definitions:

  • user story - A user story describes functionality of a system that will be valuable to a Non Development Team (NDT) stakeholder of a system or software. Should be the as non-technical and high-level as possible while still allowing you to assign points to it. If you need to it's OK to split a card into smaller cards (technical if need be) so you can assign points to it
  • product backlog - An never-ending list of all product requirements
  • product owner - prioritizes backlog
  • sprint planning - meeting to decide sprint goal and sprint backlog
  • sprint - an iteration of defined length (eg. 30 days, 1 week) where scrum teams work through a sprint backlog undisturbed by new requirements
  • sprint goal - a high-level, non-technical description of what is to be accomplished in a sprint
  • sprint backlog - the list of tasks needed to achieve the. sprint goal. is updated as items are completed. serves as a highly visible, real-time picture of the work the team plans on accomplishing during the sprint
  • daily scrum ("standup") - 15 minute status meeting where each scrum team member shares 1) what they've accomplished since the last meeting 2) what they plan on accomplishing by the next meeting 3) any obstacles in their way. Topics requiring follow-up are deferred to after the standup so they don't take up everyone's time.
  • sprint review meeting - a check-in to review progress up to that point and decide whether to keep it or throw it away
  • sprint retrospective - A brief, dedicated period at the end of each sprint to deliberately reflect on how they are doing and to find ways to improve, eg. what should we start doing? what should we stop doing? what should we continue doing?

More reading:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment