SCRUM is one of the most commonly used Agile Methodologies along with the Extreme Programming (XP) methodology. The goal of the SCRUM methodology is to move away from the documentation driven development (Waterfall Model) where Software Development phases do not overlap and move over to a more flexible way to work where the ultimate goal is to deliver value to the business sooner by delivering incrementally instead of all at once. The agile methodologies emerged in the early 2000's when the Agile Manifesto was created, this manifesto outlines 4 main values that the Agile methodologies base their structure on. These items on the left are more valuable than the items to the right according to the 4 main values in the Agile Manifesto:
* Individuals and interactions over processes and tools
* Working software over comprehensive documentation
* Customer collaboration over contract negotiation
* Responding to change over following a plan
Roles in SCRUM
The SCRUM methodology highlights tree main roles: Product Owner, SCRUM Master and SCRUM Team.
The Product Owner is usually a BA with good knowledge in the business domain, who should understand how the business works and works closely with the users. The Product Owner is in the end accountable of the final product, usually takes the most difficult decisions during the project, should provide vision and boundaries within the project.
The SCRUM master is the person who enforces values and practices for the SCRUM methodology, makes sure SCRUM is understood, has authority over the progress, coaches the team to do better, does not manage the people within the team, should be removing impediments for the team in the project, serves the Development Team as well as the Product owner.
The SCRUM team should be a cross disciplined team which has Business Analysts, Developers, Testers, Architects, etc. In the SCRUM Team the office titles are removed and everyone in the team should work towards the same common goal, the skills within the team should be balanced; people in the team should work full time in the project, the team is formed usually by 5 to 9 people. If the team is larger than that, then it should be taken to consideration to create a separate SCRUM team since having too many opinions within the team could distract team members from the common goal. If different SCRUM teams are created then the SCRUM of SCRUMs should be used.
The SCRUM methodology proposes the following ceremonies that should be held when using the SCRUM Framework: Planning meeting, Daily SCRUM, Sprint Review, Sprint Retrospective.
The Planning meeting should be held at the beginning of a sprint, the entire team should attend this meeting – SCRUM Team, Product Owner and SCRUM Master. Stakeholders and users may attend too but are optional, during this meeting the Product Owner should describe what the most valuable backlog items are, and based on these items the team will start to decompose the items and create small user stories where tasks and owners should be defined.
The Daily SCRUM meeting is held at the beginning of each day of a sprint – usually they are done during the morning to plan the activities for the day, the whole team should attend the meeting. The most common asked questions during the meeting are: what did you achieve yesterday? What will you do today? Have you found any roadblocks? This team is usually led by the SCRUM Master to monitor the progress of the items being worked by the Team.
The Sprint Review meeting is held at the end of the sprint, the goal for this meeting is to show the increment that was created during the sprint and receive feedback from the users. Sometimes this ceremony is held in an informal way – it can be done in a science fair format where the users passes by a stand where the project is presented.
The Product Backlog is one of the most important artifacts that need to be done as part of the project; it is an ordered list of features that need to be developed for the final product. The Product Owner is in charge of maintaining the product backlog for the SCRUM team to grab user stories from it on each sprint iteration, the most valuable item should be at the top of the list. This artifact is always evolving, user stories might grow as time passes by as well as with changes in the requirements, market conditions, among others.
The Sprint Backlog contains the Product Backlog items that were selected as part of the current sprint. In this artifact the Team can add tasks, progress, estimates to each item in the sprint backlog. This artifact evolves as the sprint goes by, it belongs to the team and provides a real-time picture of the work the Team plans to accomplish in the sprint.
An Increment contains all the items from the product backlog that were completed during the sprint plus the items completed from the previous sprints when the sprint is over the increment should be a working product that will provide value to the users. An increment should be defined by the SCRUM Team, everyone in the team should share the same understanding of what complete work means, this will help to identify once the sprint is over if the increment that will be delivered is in accordance with what the team had agreed on.
Pluralsight courses: Agile Fundamentals, SCRUM Fundamentals.