Somebody asked me the What's the difference between Agile and Scrum. Let's first understand the basics of Agile and scrum.
What is Agile development?
Agile software development is a methodology that is followed to overcome issues associated with the traditional waterfall development.
In Agile development, you follow an iterative approach where the entire software project is completed in iterative phases. Each iteration delivers an incremental working version of the application.
Users continually evaluate each working version / iteration of the product, and provide feedback to the development team which the developers incorporate into subsequent versions of the product.
This approach provides the opportunity to account for changing business realities and also minimize large scale project/product-failure risk that can sometimes happen when using the Waterfall approach to product development.
Agile still uses some of the keys steps associated with Waterfall development in each iteration i.e. analyze, build, and test.
What is the business context for Agile Development?
The Agile methodology is typically used in scenarios where:
The requirements or details of outcomes are not very clear at the outset.
Business needs are changing rapidly and /or are continually evolving.
Where testing the feasibility of an available technology to solve a problem is critical
Where funds to develop the product may be made available incrementally based on the proven feasibility of the product.
Where bringing a version of the product to market as soon as possible is more critical than having all the bells and whistles.
How does Scrum fit into Agile Development?
While the Agile methodology can be applied to product development not only in the software industry but in other industries as well, Scrum is specific to software development.
Scrum is not a methodology. It simply provides structure, discipline and a framework for Agile development. The whole project is made up of a series of Sprints or Sprint Cycles (1 to n) where each Sprint is of the same duration. If ‘time’ is denoted by T, then T1 = T2 = T3 =… Tn. Sprints could be anywhere between 2 to 4 weeks. Sprints shorter than 2 weeks are not ideal and are used less frequently. At the end of each Sprint, a functional / working piece of software is produced that the users can actually test.
The diagram below illustrates the use of Scrum in Agile development.
Key characteristics of Scrum
Scrum does not have a detailed series of steps or guidelines instructing how you go about software development.
Scrum does not have team leaders or sub-teams; it is just one cross-functional team where everyone is involved with the project from start to finish. The team includes Users, Stakeholders, Developers, the Scrum Master, the Product Owner.
There are 3 roles in Scrum – the Scrum Master, the Product Owner, the Team – note the conspicuous absence of a Project Manager.
Self-organizing teams are vital to Scrum i.e. people who are creative and disciplined at the same time and who do not need to be ‘managed’.
Scrum is a series of sprints. Each sprint can last anywhere from 2 to 4 weeks (recommended). A sprint is a complete mini-software development cycle (analyze, build, and test phase) . At the end of each sprint, the customer gets a working version of the product with new/additional functionality as compared to the previous sprint. The customer / users test the product and provide feedback to the team.
The developers and other technical staff in the team are usually highly experienced and understand both technology and business.
Key Steps in Scrum
The key steps in a Sprint a.k.a. the single basic unit/cycle of development in Scrum are:
STEP 1: Sprint Planning Session
Product Owner tells the Team what s/he wants in the Sprint. S/he picks these items from the Product Backlog.
The Product Backlog is a list of high level requirements.
Team decides what they can commit to.
Committed items become the Sprint Backlog – this is frozen and cannot change during the Sprint.
STEP 2: Sprint
The period when the team works on building the features identified in the Sprint Backlog for that sprint.
Daily Scrum sessions are held to review issues / problems / roadblocks / progress / commitments.
The Sprint Burn Down chart is updated each day to show progress / completion of items. The team reviews this daily to understand where and how effort needs to be expended.
The Sprint must end on time whether all items/tasks are completed or not.
STEP 3: Product Release (Incremental Release)
Release a working version of the product with the features committed to as part of the Sprint.
STEP 4: Sprint Review Meeting
Review work completed and not completed versus committed items for the Sprint.
Present work to stakeholders as a demo.
STEP 5: Sprint Retrospective
Team members review the sprint.
Discuss what worked well and what needs improvement.
Basically a self corrective session (lessons learned) to incorporate process improvements in preparation for the next Sprint.
So we can say Agile is just a philosophy and Scrum is an implementation of that philosophy.