SCRUM - An Agile Project Management Framework

From apppm
Revision as of 13:40, 27 February 2021 by MadsH (Talk | contribs)

Jump to: navigation, search

Developed by MH

Scrum is an agile project management framework especially popular for software development. It is based on short work cycles of 2-4 weeks(sprints) with the aim of creating incremental business value. The workforce is organized in small teams, with cross-disciplinary skills and knowledge, and receives continuous feedback from key stakeholders after each sprint. The constant feedback and dialogue with stakeholders are key to delivering true business value and keeping the project on track. Scrum was created by Jeff Sutherland and Ken Schwaber, both ex-soldiers from the Vietnam war, which later both became a part of the software industry and had a shared frustration with late deliveries, poor quality, and user dissatisfaction [1]. They were inspired to create Scrum by Hirotaka Takeuchi and Ikujiro Nonaka, who compared a new development approach to the movement of a rugby team, in their paper “The New New Product Development Game” [2]. The article will focus on what scrum is and why it can be beneficial for software development compared to the traditional waterfall development method. This will include an overview of Scrum roles, events & artifacts, followed by sections on benefits & limitations.

Scrum has over the last few years become widely used for software development. In order to overcome the traditional challenges of software development, which builds on the assumption of constant demands and full sign of on requirements before beginning, a more agile approach, Scrum, has gained its justification. The ability of Scrum to cope with the reality of modern software development with ever-changing demands, the challenge of capturing all requirements from the beginning, the acceptance of failure, and the need for testing while developing, but most importantly the acceptance of changing preferences and requirements from the client as the development evolves, has made it a popular project management framework for software development.

Contents

The agile foundation for Scrum

Figure 1. A comparison of the Waterfall and Scrum framework, showing the different approaches to delivering, but including the same phases. Inspired by pmi-macedonia.mk[3]

Scrum is widely used due to its efficient framework for organizing a team and their tasks in order to deliver continuous business value. The implementation of Scrum is often driven by the wish to become more responsive to changing demands from stakeholders. With a technological scene changing faster than ever, there is an increasing need to use a development process where priorities and requirements can be changed during the development. Software development was previously often based on the linear waterfall model[4] where everything is signed of and specified before the project is started, see figure 1. When developing software, the timeline will often be multiple years, in this period requirements and priorities will often change. In contrast to this approach, there is Scrum, which is based on short sprints, where the most value-adding tasks from the backlog are completed in self-organized teams and immediately shared with the client to get continuous feedback. Instead of one final delivery at the end, the idea of Scrum is to develop small incremental updates, with flexibility for changes, which in small steps will fulfill the scope. The scrum method also includes the phases: planning, executing, and monitoring, known from the standard for project management, PMBOK Guide [5]. Instead of performing the phases one time like the waterfall model, the phases will be continuously repeated in each sprint, to make it possible for adjustments and reprioritization, this will often be considered as the ability to being agile.

The Scrum framework is based on the 12 agile principles, which were signed by the 2 founders of Scrum together with 15 other prominent individuals, all frustrated with traditional software development. The 12 Agile principles are based on 4 core values[6]:

Individuals and Interactions over Processes and Tools
The focus is on what will create value. It is people who will interact, communicate as needed and develop the results, why they should be prioritized above strict process and tool requirements.
Working Software over Comprehensive Documentation
Instead of using tons of time on specified and technical documentation of requirements, the developer should be trusted, that he or she will be able to make use the time more efficient to make working software, which will create business value.
Customer Collaboration over Contract Negotiation
Instead of following the traditional approach of the waterfall model, where everything is negotiated prior to work start. The customer or stakeholders should be included during the work and be part of the collaboration, to assure the work makes business value.
Responding to Change over Following a Plan
Instead of seeing a change as an expense, changes should be welcomed and incorporated, to create additional business value.

The 12 principles can be read in full in the Agile Manifesto[7]. Even though the founders of Scrum signed the agile manifesto, it is a common misunderstanding that Scrum and agile are the same thing. As mentioned above, agile is a set of values and principles. In order to adopt an agile way of working, the members of the scrum team will need to work under these principles and beliefs. The implementation of Scrum can push you towards a more agile way of working but cannot do it alone[8].

The Roles that make up the Scrum Team

The Scrum Team

The implementation of Scrum will lead to a new way of organizing the staff in order to make sure the roles of the Scrum team can be fulfilled[9]. The definition of the Scrum team follows the Scrum guide[10]. A Scrum team is a small team of professionals, consisting of one Scrum Master, one Product Owner, and Developers, in total they should not exceed 10 individuals. The team has no sub-teams or hierarchy and works towards the same product goal. A Scrum team is self-managed and has cross-functional roles and knowledge to make sure the team has the skills to create business value in each sprint[10]. In traditional software development, there is a Product Manager who will both be organizing and assigning the tasks among the developers, which also means the Product Manager will be held responsible for the results. In the Scrum framework, the team is self-managed and thereby responsible for both distributing the work among each other, but also for making developing the right thing. In this way is the accountability placed at the developers, which are also the ones with the capability of developing the software. The scrum framework trust that when the developers have the responsibility will they also produce a better product[8].

Product Owner

The responsibility of the product owner is to maximize the value of the product developed by the Scrum team. The role as Product Owner is held by one person, in order to gain success with Scrum it is crucial that the decisions of the product owner are respected by the organization. The product owner has the responsibility for the following points[10]:

  • Effective managing, development, and prioritization of the product backlog
  • Clearly communicate product goal and product backlog items
  • Keep stakeholders informed and included as necessary
  • Execution of Sprint planning and Sprint Review sessions

The product owner will often be the “middleman” between the business and developers and must be able to find compromises. Strong communication skills, negotiation skills, proactivity, diplomatic, and result-driven will often be favorable personality traits for a product owner [11].

Developers

The developers are the ones who will produce the real work of each sprint. Atlassian, a key tech provider for many software companies using Scrum, presents the typical skill-set of the developers, like design, UX, development/programming, testing, and deployment [12]. The developers hold the responsibility of estimating and planning the tasks for the sprint based on the sprint backlog. They make the definition of when a task can be considered “done”. Lastly, the developers are also accountable for daily adjustments of the sprint planning as they gain knowledge of the issues, in order to obtain the sprint goal [10].

Scrum Master

This role is not responsible for delivering on the task from the Sprint Backlog. The Scrum Master is there to help the team follow the Scrum practices and thereby increase the effectiveness of the team. This can also include working with the organization to understand how the scrum teams work and when the rest of the organization will see results. In order to support the team, the scrum master will often coach the team to master self-management, cross-disciplinary functions, solve challenges and impediments which can be obstacles to progress. The Scrum master will help the Product Owner as requested to find techniques and tools for effective product goal definition, management of the product backlog, and stakeholder collaboration. In addition, is the Scrum master involved with the rest of the organization to make sure they understand Scrum and the consequences of adoption. This will often include training and implementation of Scrum in the organization. Furthermore, the Scrum master will often be involved in conflicts or challenges between the stakeholders and the Scrum team [10].

Application

Project management as presented by the PMBOK standard[5] splits a project into 5 phases: Initiating, Planning, Executing, Monitoring & Controlling, and Closing. These phases can be compared to the way work is organized in the Scrum framework.

Considering the figure above, the initiating phase can be compared to the process that will happen regarding the Backlog. In this process will the Product Owner receive and gather inputs from the End-users, Customers, Team, and other relevant stakeholders. But instead of using this to create the full plan of the entire project, the product owner will prioritize them and find the most important. The product owner will then together with the development team being the planning phase for the upcoming sprint, here will the inputs be further refined and get a time estimate, this will also include a definition of a Sprint goal, the objective which the team aims to achieve during the work period. Hereafter will Executing process come, this will in Scrum terminology be considered the sprint. This is the part where the actual work will be completed, and the sprint goal is hopefully obtained – the scrum team are self-managed and will get the work done in the manner that works best for them. Considering the task of monitoring and controlling the progress will the Scrum team benefit from the manageable number of tasks, as they only plan work for a short period of time and secondly a part of the sprint planning included the task of estimating time for the task, which can be used to make a burndown chart of keeping track of expected progress for the team. Lastly is the closing phase of the project, this can be considered the part where the sprint review is performed, and the increment pushed to the end-users to create instant value. What then makes the true difference to working with scrum is then the continuous repetition of this cycle, as it is also illustrated in the figure, in order to constantly improve and keep on track with requirements and priorities from the customer. To gain a better understanding of the events and artifact, an explanation of each of them follow.

Artifacts & Events

Overview of the Sprint and the including events and artifacts shows the iterative process where all events are a part of the timeboxed sprint. Illustration of the Scrum Framework by Scrum.org[13].

Sprint

A sprint is a time timeboxed period, within the sprint, the Scrum team completes their planned task and performs the reoccurring events in order to obtain the sprint goal. The length of the sprint is always the same, usually 2 weeks, but can vary between projects up to 4 weeks. The next sprint starts right after the previous was completed, which also means all events and activities are a part of the sprint. In order to create a clear direction from the beginning of the sprint, the sprint goal cannot be changed, and quality not decreased. If the sprint goal becomes obsolete during the sprint, the product owner has as the only one the power to cancel the sprint.

Sprint Planning

The Sprint planning is the first activity of the sprint. In accordance with the scrum guide, the sprint planning included 3 tasks that must be addressed and should be limited to 4 hours for a 2-week sprint.

  1. Definition of the sprint goal. The product owner will present how the product can increase value in the current sprint, this will be used as the outset for collaboration by the entire team, to define the sprint goal.
  2. The developers will in collaboration with the product owner select the items from the product backlog to include in the current sprint. This task included continuous refinement of the tasks, the definition of done, and time estimates, altogether this will make a more trustworthy estimate of what can be obtained in the sprint.
  3. The developers plan based on the chosen tasks from the product backlog, how they turn the task into valuable increments. This task is solely completed by the developers.

Definition of Done

It might seem like a rather simple question when something is done. But as presented by Atlassian, a team without a clear definition of done will often find themselves asking whatever a task is done? A clear definition will help the team to identify when a task is done and can be presented as an increment for review [14]

Sprint Backlog

During the sprint planning, the team has refined and made the definition of done for each of the tasks from the backlog prioritized for the sprint. These tasks are sometimes defined as user-stories and will be placed in the sprint backlog. The sprint backlog will be the overview of the user-stories there are to be completed during the sprint and should make it possible to fulfill the sprint goal.

Daily Scrum

This event is the only reoccurring event every day of the sprint. It is a short 15-minute meeting, often hold in the morning as a standup, with the goal of reducing complexity it should take place at the same place and time every day. The goal of the meeting is for the developers to share progress and possible obstacles. There are no formal instructions of the daily scrum, the important is that the format fits with your team: online, standup, chat, or tossing a ball – what works for you is the right choice. Many teams will have each developer present what they did yesterday, plans for today and whether they are blocked by anything.

Increment

Figure 3. Incremental deliveries vs One Final Delivery to make it easier to understand it is illustrated with the example of a car, in reality, it would be very costly to develop a car this way. Inspired by Arijit Sarbagna, Dzone.com[15]

At the end of the sprint the scrum team has in the optimal scenario completed all the tasks from the sprint backlog, even though this is not the case, the sprint will still be complete as the timebox is coming to an end. The tasks which have not been completed will have to become a part of the backlog and go through the prioritization phase again to make it to the backlog of the next sprint. The tasks which have resulted in changes, new features, or other relevant software updates to present for the stakeholders will be presented on the Sprint Review. Increments are a part of the agile way of working, where the focus is to make constant small improvements, in order to keep stakeholders informed and receive feedback as build. This can be seen as a process where features are added after the software is already taken into use, this is also known as Continuous Development/Continuous Integration[16]. This is mainly used for software, but to make it more illustrative, showed with the example of car development. Where incremental updates will focus on adding features, the first increment will be to make a product that can drive. In traditional waterfall development, the focus will often be to finish the wheels, then the cabin, and so on. This might seem more effective, but have a high risk of not fulfilling the stakeholders' demand, as the solution cannot be adjusted while developed.

Sprint Review

The goal of this session is to inspect and review the results of the sprint. This is often done by presentations by the scrum team for stakeholders. During this review, the goal is to have a dialogue about the results and the value in regards to the overall product. In terms of gathering a strong sense of ownership and engagement of the development team, this session can be used as a form of a celebration of what has been achieved and should have a casual vibe.

Sprint Retrospective

This is the chance for the scrum team to reflect upon the last sprint. What went well and what would they like to do even better, this should hopefully lead to initiatives that can increase quality and effectiveness in the future sprints. The scrum guide suggests the results of the sprint are evaluated in regards to the individuals, interactions, processes, tools, and the Definition of Done. Some of these initiatives the team would like to change or implement can be added to the sprint backlog of the next sprint if required to achieve the result of the initiative.

Why use Scrum for software development?

One of the main challenges when developing software is the constantly changing requirements for the end results. The requirements and priorities will at the end of the, no longer be the same as when the development began. This challenge is captured in the book: Agile Product Management with Scrum[17] her is a 2-year software development project using the waterfall framework described. During the project, a lot of focus was put on the plan and the budget, and they managed to complete the project on time and within budget. Unfortunately, the market situation of the customer after the 2-year development period was not as assumed and the software was therefore useless, no business value was created, and the resources wasted.

The smart reader will argue this is not an argument for Scrum, but this is a clear example of one of the main challenges with traditional software development, where an agile approach is beneficial. By adopting Scrum, you will work in short sprints, from which you will receive feedback from stakeholders to make sure the result will add business value. This way of working will allow for flexibility and changing requirements, which is a great advantage when developing software.

Figure 4. The level of risk following the progress comparing the Scrum and Waterfall framework during software development. Inspired by James Fremann, edrawsoft.com[18]

Another important aspect that is often considered in project management is risk. When developing software one of the major risks is to develop the “wrong” software, as presented above. Comparing the waterfall framework and the Scrum framework in this light, the risk of developing the wrong end product has been illustrated in figure 4. As the Scrum framework is based on iterative deliveries which constant review and implementation, will the risk be limited to developing the wrong thing to one sprint, compared to the waterfall method, where the entire work is completed before implementation.

Limitations of Scrum

In order to make a successful implementation of Scrum, it is of great importance that the rest of the organization is ready for a new way of working. The importance of implementing the 2 key characteristics of the Scrum team, “Cross-functional” and “Self-managed” is presented together with possible constraints in Navigating Hybrid Scrum Environments [8]. Cross-functional means the team must contain the required skills to develop the product. Traditional teams often consist of people with the same skills. Having all the required skills in the teams prevents delays from dependencies from other parts of the organization. The second benefit is connected to being self-managed. When a team has no Product Manager, the team will be responsible for the work distribution and the solutions themselves. In this way, you are giving the team all the skills they need to deliver the product, combined with the responsibility. Combining capabilities and self-management will give the teams a greater sense of responsibility, resulting in better products. Scrum will often fail to become a success, in organizations where the teams are not “Cross-functional” and “Self-managed”. This will often happen if the product owner turns into a traditional product manager, whit the role of distributing and assigning work to the team. When the product owner starts to manage the team, he or she will also become responsible for the results. The creativity of the developers will be limit to the orders of the product manager. Trying to transform traditional teams with the same skills to scrum teams will remove their capability of being “Cross-functional” why they will often be delayed due to dependencies on other people in the organization.

The team size is another important to touch upon, according to the Scrum guide, the teams should have a maximum of 10 participants. In many large organizations much more than 10 people are working on developing a product. Many of these organizations have seen the promising results of Scrum and want to adopt the framework. This can be a challenging task while keeping the ability to make fast changes and keep flexibility, the Scrum guide suggests splitting the group into multiple development teams with the same product backlog, product goal, and product owner[10]. One of the main challenges when scaling the Scrum framework is to keep the teams self-managed, as more teams are working on the same product, the question of how they should be organized arises [8]. There are multiple frameworks, that try to address this challenge, to mention a few INSERT links.

The focus of this article is Scrum used for software development, but before jumping right into implementing Scrum for software development or for other product development projects, it is important to consider what kind of product is being delivered. One of the key concepts of Scrum is incremental deliveries and here is it important to consider what can be delivered incrementally. After the architecture of the software is developed and put in place, you could say the skeleton of the software, you can start building on incremental updates, which the end-user and see and understand. But what about other projects, earlier on in figure 3, there where an example of developing a car incrementally, but is that even realistic. Probably not so much, the cost of first developing a skateboard, then a bike, and then end up with a car, would simply be too costly and therefore not be a realistic application of Scrum. This is often considered as the constraints of physicality; some products will not benefit from being developed with the Scrum framework. In relation to software development, it benefits from the flexibility of the computer and the possibility of constant adding on.

Annotated bibliography

The Scrum guide[10]
The guide for Scrum written by Ken Schwaber and Jeff Sutherland. The guide is continuously updated, with the last update in 2020. The guide takes you through the roles, events, and artifacts you need to know in order to adopt Scrum.
Agile Manifesto[6]
The Agile Manifesto is signed by 17 individuals frustrated with traditional software development, including Ken Schwaber and Jeff Sutherland the originators of Scrum. The agile manifesto includes 12 principles and 4 values, to reduce the challenges of software development by making it more agile.

References

  1. Scrumdesk: The history of Scrum https://www.scrumdesk.com/the-history-of-scrum-how-when-and-why/
  2. The New New Product Development Game by Hirotaka Takeuchi and Ikujiro Nonaka https://hbr.org/1986/01/the-new-new-product-development-game
  3. Project Management Institute, Macedonia https://pmi-macedonia.mk/event/scrum-or-waterfall-whats-the-difference/ (Visited 27/02/2020)
  4. How to Kill the Scrum Monster https://doi.org/10.1007/978-1-4842-3691-8_1
  5. 5.0 5.1 Guide to the Project Management Body of Knowledge (PMBOK Guide) 6th edition
  6. 6.0 6.1 Values of Agile Software Development https://agilemanifesto.org/
  7. The 12 Agile Principles https://agilemanifesto.org/principles
  8. 8.0 8.1 8.2 8.3 Fowler. F. M. (2018) Navigating hybrid scrum environments, Apress, Sunnyvale, CA. Retrieved from https://doi.org/10.1007/978-1-4842-4164-6
  9. Atlassian: What is Scrum? https://www.atlassian.com/agile/scrum
  10. 10.0 10.1 10.2 10.3 10.4 10.5 10.6 The 2020 Scrum Guide https://www.scrumguides.org/scrum-guide.html
  11. Advanz: Scrum Product Owner https://advanz.dk/blog/scrum-product-owner/
  12. Atlassian: Scrum Roles https://www.atlassian.com/agile/scrum/roles
  13. Scrum.org: What is scrum https://www.scrum.org/resources/what-is-scrum (Visited 27/02/2021)
  14. Atlassian: Scrum Artifacts https://www.atlassian.com/agile/scrum/artifacts
  15. Dzone.com, Arijit Sarbagna. https://dzone.com/articles/scrum-is-not-mini-waterfall (Visited 21/02/2021)
  16. Infoworld: What is CI/CD https://www.infoworld.com/article/3271126/what-is-cicd-continuous-integration-and-continuous-delivery-explained.html (Visited 27/02/2021)
  17. Pichler, R. Agile Product Management with Scrum (2010) Addison-Wesley Professional, Boston
  18. Edrawsoft: Agile vs Waterfall https://www.edrawsoft.com/agile-vs-waterfall.html (Visited 27/02/2020)
Personal tools
Namespaces

Variants
Actions
Navigation
Toolbox