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 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
- 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 (eg. "User can login"). Should be as abstract and non-technical 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?