If you’ve been working in the software development industry, or have dealt with it under some capacity, you’ve probably heard of Agile Development, as well as the newer subset, Scrum, which has been making its way into the scene. Although Scrum is just subset of Agile, they are so commonly used together that they are often confused with one another. Here, we will explain in more detail what each of these methodologies is and how to relate to each other.
Agile is a group of software development methodologies based on iterative development in collaborative, self-organized, cross functional teams. The intention behind Agile systems is the fast delivery of high quality software products, and Agile development refers to any system that is aligned with the following core concepts of 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
Some other aspects of Agile are:
- Disciplined project management process
- Frequent inspection and adaptation
- Leadership philosophy that encourages teamwork, self-organization and accountability
- Alignment of development process with customer goals
Scrum management is one of the methodologies for software project development, under the Agile development model. Scrum is an iterative outcome-driven methodology in which projects progress in a series of sprints, framed in terms of time within the Agile model, timeboxed from 2-4 weeks. Sprints are set out as a commitment to a set of features to be developed, rather than the entry criteria, task definitions, validation criteria, etc. that would be the focus in other methodologies.
During each sprint, the feature set goes from idea to completion, or potentially shippable increments, meaning that the features will be coded, tested, and integrated into the system. Scrum has become increasingly popular in agile software development over the last decade, due to its simplicity, proven productivity, and ability to “act as a wrapper for various engineering practices promoted by other agile methodologies.” Scrum is highly scalable, having been scaled to large organizations with as many as 800 people.
The Scrum process helps organizations with the following:
- Increasing the quality of deliverables
- Dealing better with expecting and unexpected changes
- Providing better estimates - but spending less time creating them
- Maintaining better in control of the project schedule
Scrum is a lightweight subset of Agile development, and the most commonly used one. The term “lightweight” refers to the overhead of the process being kept as small as possible in order to maximize the amount of productive time available for getting useful work done.
The Scrum process is different from other agile processes because some core concepts and practices, which are divided into roles, artifacts, and time boxes. Scrum significantly increases productivity relative to classic waterfall process. Scrum allows organizations to easily adjust to rapidly changing environments and requirements, with end products meeting evolving business goals.
Scrum is self-organized and cross-functional. There is no team leader. Although members enter the team with a title, those individual titles take the back seat to a cohesive environment, in which everyone contributes to the project in whatever way they can, regardless of their title. Rather than requiring complete and detailed descriptions on how every step in a given project is to be completed, Scrum values the knowledge and insight of the software development team, and therefore leaves more discretion to them.
Tasks and the execution of those tasks are done in a team environment, and with a ScrumMaster, who is similar to a team coach, and the product owner, who represents the business, customers, or users. The ScrumMaster’s role is different from traditional project managers in a few ways – primarily that he or she does not provide day-to-day direction to the team and does not assign tasks to individuals. ScrumMaster tries to mitigate any outside distractions from so that the team can focus 100% on the outcomes of the sprint. While the ScrumMaster is helping the team perfom optimally, the product owner ensures that the team’s goals are correct. The team as a whole is involved in the entire process from idea to implementation.
The actual implementation of a Scrum project begins with a planning meeting at the beginning of a sprint, during which the team assesses the workload, and decides which items they can commit to during the coming sprint. A sprint backlog, which is a complete list of features that remains to be added to the product, is then created with the items to be completed during the sprint, as well as timetables and details about those items.
The product owner prioritizes the features in order of value so that the most valuable are created first. A product backlog is similar to a sprint backlog, but rather than containing a ‘to do’ list, the product backlog contains ‘user stories,’ which are descriptions of the functionalities of the product from the perspective of the user. The product owner makes sure that the backlog evolves with the project, staying current as the team learns about the system and its users.
Each day during the sprint, there is a 15-minute meeting between the entire team, including both the ScrumMaster and the Product Owner, during which team members share what they worked on the prior day, what they will work on that day, and any hindrances to the progress of the project. Sprint and release burndown charts show how much work is remaining for both sprints and the entire project, are used to gauge whether or not the sprint or project is on time.
At the end of each sprint, the team demonstrates the feature in its state of completion to the product owner and any other stakeholders so that they can provide feedback, which the team can use for the next sprint, and the remainder of the project.
Scrum has become an integral part of Agile Development due to its outcome driven methodology and its ability to produce results. Although Scrum and Agile are not the same, they are increasingly become used together – a trend which will probably continue into the future of software development philosophy.