Poker Techniques In Agile
Jul 17, 2019 Planning Poker is a highly efficient agile planning and estimating technique which has become exceptionally well-known over recent years. It is based on a procedure known as Wideband Delphi that was made by the RAND Corporation between 1940 and 1968, the exact year unknown. Get Poker Techniques In Agile in on Poker Techniques In Agile the excitement of the one-armed bandit and big payouts at a quality online casino. Blackjack The world’s most popular casino table game is a natural for the online milieu.
Based on survey results and other feedback, we will improve upon this Alpha version for a Beta.
Complete a brief survey to help us improve the CA-Agile Framework.
Agile methods and tools lend themselves most appropriately to systems and projects in which accurate estimates, stable plans, and predictions are often difficult to attain in the early project stages. Agile development favors an adaptive, iterative and evolutionary development approach. Using agile tools and techniques can help to:
- Self-organize and plan
- Communicate (within the team and with the rest of your organization)
- Continuously improve the way you work
- Get support from management
Introducing Agile Tools and Techniques
This guide describes some of the common agile tools and techniques that teams use. Others can be used depending on the project and team. Agile teams may also adopt unique combinations of techniques to support their framework and methodology. Examples include:
- Collocation
- Dedicated teams
- Relative estimating
- User stories
- Velocity
- Burndown charts
- Definition of done
A few techniques typically used on agile projects that directly contribute to accelerating the time to delivery and the increased quality of the product being delivered, include:
- Frequent inspection of the product and adaptation to the changes and input during the project
- Aligning development with customer needs and organizational goals
- Colocation of resources to the same work space
- Self-organization and accountability
- Becoming a team player
- Elimination of “waste” and “ceremony”
- Empirical demonstration of results
- Customer is always present
- Focus on key planning events: product planning, release/feature planning, iteration planning, sprint review, and stand-ups
Scrum
One of the most common frameworks is Scrum. Scrum is a metaphor from the game of rugby. Like rugby, Scrum also relies on talented people with varying responsibilities and domains working closely together in teams towards a common goal. This is in contrast to traditional development approaches like a relay race, in which one team member at a time carries a baton and then hands it off to the next runner.
Scrum is an empirical exposure model, in that knowledge is gained from real-life experience, and decisions are made based on that experience. Through transparency, inspection and adaptation, using Scrum is a a good way to demonstrate whether your project is generating the intended results.
When following Scrum, teams focus on what can be done ‘today’ and break future work into manageable pieces. There is more immediate feedback as to how well your development methodology is working, and when issues arise, Scrum allows for immediate action by making adjustments with clarity and speed. Scrum works to:
- Clearly define roles
- Organize your work in actionable chunks
- Enable effective prioritizing
- Allow for efficiencies in completing work
A high-level overview of Scrum is depicted below in Figure 1-1.
Artifacts
There are numerous artifacts that will need to be developed as part of an iterative agile project effort. Many are either inputs or outputs from an individual sprint. Three key sprints artifacts are the product backlog, sprint backlog, and the shippable product implement as shown in Figure 1-2 below.
Product Backlog
The product backlog is the master to-do list for a project. It is an ordered list, prioritized by business value and risk. It is a dynamic artifact and changes as the Scrum team gains additional knowledge regarding the requirements and solution they are developing. At the beginning of each sprint, the Scrum team plans and executes the next highest priority item on the product backlog, resulting in a fully designed, developed, tested and integrated functionality.
Typically, each identified item on the product backlog includes specific information that may include: description, estimate of effort required to complete it, and ID number, status and type. The Product Owner is responsible for maintaining the product backlog.
Sprint Backlog
The sprint backlog is also created at the beginning of each sprint, and is the to-do list of tasks necessary to achieve the sprint goal. The sprint backlog generally includes a sprint goal and the sprint end date, a prioritized list of requirements, estimated effort for each item, tasks required for each requirement, estimated hours for each task and a burndown chart displaying the status of work being performed throughout the sprint. The sprint backlog is the artifact resulting from sprint planning. The development team is responsible for managing and maintaining the sprint backlog.
Shippable Product Increment
At the end of every sprint, the development team delivers working, tested and integrated functionality to stakeholders and customers to review. The development team reviews each requirement with the product owner as soon as it is completed, and the requirements that comprise the increment are only considered complete if the product owner accepts them. The product increment is what the development team demonstrates to stakeholders in the sprint review.
Events
Agile development cycles are iterative, and are often referred to as ‘iterations’. A sprint is a time-boxed iteration. The length of a sprints or iterations can vary by Scrum team, and project, however the shorter the sprint, the more frequently a Scrum team receives feedback to inspect and adapt both their product and processes. Sprint lengths rarely are very long, with the preference usually being 1-2 weeks, and in some cases as short as a single day. As depicted in the Figure below each Sprint contains four key events:
- Spring Planning
- Daily Scrum or Standup
- Spring Review
- Sprint Retrospective
Each sprint begins with sprint planning, and then the team collaborates daily (daily scrum) amongst the team and the product owner to elaborate, design, develop, test, integrate and generate requirements into working functionality. If any sprint output is rejected by the product owner, the development team works together to resolve any defects or misalignments with the business objectives until completion.
The sprint ends with a sprint review and sprint retrospective as shown in Figure 1-3. Once a sprint is officially completed, a new sprint begins. Ideally, each sprint is the same length so the Scrum team can extrapolate their potential future performance or output based on a small amount of historical data.
Sprint Planning
Early planning for your agile project is generally at the epic level to determine what the epics will be for the duration of the project and their relative priority. Detailed planning occurs as a part of the sprint planning process and is undertaken as a just-in-time activity in the sprint planning meetings.
Sprint planning meetings are a feature of Scrum and should be held at the start of each sprint. At a sprint planning meeting, the team decides what to work on next and how they will do it. The length of the meeting will depend on how long your sprint is. Sprint planning is the process of establishing a sprint goal and selecting product backlog items in support of the sprint goal that can be completed within the designated sprint timeframe.
The product owner presents a sprint goal and the development team identifies the specific product backlog requirements that can be addressed during the sprint. The development team then identifies the technical tasks required to complete each requirement. The team evaluates their capacity for the sprint and compares it against the aggregated estimates of the tasks. The team then works collaboratively with the product owner to address any concerns with completing all of the selected items within a sprint and to determine how to accomplish the sprint goal with the available capacity.
Sprint planning is time-boxed, and depending on the project and organization the time spent per week may change. For instance with a two-week sprint, two hours per week should be sufficient with the total planning lasting no longer than four hours. The Scrum master facilitates sprint planning, however, the product owner is responsible for the sprint goal and provides clarification to the team regarding requirements and business goals and objectives.
Daily Scrum or Standup
The daily scrum or standup should be scheduled for the same time each day and be relatively brief. Depending on the scale of the project a 15 or 30 minute duration can suffice. It is recommended that the meeting occur in front of your team wall.
Keep in mind that it is best for Scrum teams to collaborate on a daily basis instead of as needed. Meeting together once a day to discuss what each team member is working on and whether they have any problems or dependencies that need to be resolved is helpful to keeping the project moving forward smoothly. Additionally this meeting should be used to coordinate how to accomplish the work for that single day, or if a team member needs help from someone else.
Each developer states what work he or she completed the prior day so that each team member is clear on progress. Each developer also identifies the work from the sprint backlog they will take on, and coordinates with other developers to reach the sprint goal. Any roadblocks or impediments are also identified at this time so that the Scrum master can address them as quickly as possible.
The daily Scrum or standup is generally brief and is not considered a formal status-reporting meeting. It is intended for coordinating work, prevention of potential roadblocks, and identification of impediments. The product owner may attend this daily meeting to gain visibility regarding the work effort and to make sure the team remains focused on the sprint goal.
Sprint Review
Each sprint closes with a sprint review. This allows the product owner to verify that the Scrum team is developing what the customer wants. The product owner presents the sprint goal and status to the stakeholders.
The development team members then demonstrate working functionality and the product owner collects feedback from the stakeholders. The product owner then updates the product backlog, based on this feedback and cross-references the current state of the project with the overall roadmap and communicates what is planned for the next sprint.
The product owner and development team own the sprint review, and the Scrum master facilitates and ensures that the objectives of a sprint review are met. All stakeholders should attend, and ideally, the customer attends as well, in order to provide feedback to the product owner. The sprint review should last no longer than one hour per week of the sprint.
Retrospective Meetings
The sprint retrospective, sometimes also referred to as a ‘retro,’ provides the Scrum team with the opportunity to inspect and adapt its processes, environment, tools, communications, and impediments in order to make improvements.
Scrum teams typically utilize this time to validate what is working well in addition to identifying any practices that may not be working. Concerns are addressed, and the Scrum team identifies any changes that should be implemented as a result. Action plans for adopting those changes are developed and added to the product backlog to be implemented in a future sprint.
Typically, only Scrum team members participate in the sprint retrospective; however, they may invite stakeholders or customers to participate as appropriate, in order to provide additional insights. For example, with a two week sprint, this Scrum event should be time-boxed to no more than 45 minutes per week of the sprint. As a result the retrospective should last no longer than 90 minutes. The overall goal of the retrospective is to fix any problems in the team and to make sure you keep doing the things that are working.
Running a Retrospective
Retrospectives should have an open atmosphere where every member of the team can speak honestly and feel confident that their colleagues will listen. Steps to follow in a basic retrospectives include:
- The facilitator explains the questions at the beginning and sticks a post-it note to the wall for each question.
- Each team member writes down one or more answers for each question on post-it notes and sticks them to the right part of the wall.
- The group discusses issues as they come up, or at the end.
- The facilitator decides on actions to fix any issues or problems that were raised, and assigns them to members of the team.
Keep in mind that topics should be selected to prompt useful team discussions. Example discussion topics may include:
- What went well in the last iteration
- What did not go well in the last iteration
- What’s puzzling the team or what doesn’t the team understand
Make a List of Actions
Information gleaned from the retrospective should be used to improve your work and your working environment. Make a list of actions that are needed to fix the problems that the team has highlighted. Aim to complete these action items before the next retrospective.
Team Review (show and tell)
The team review is a regularly scheduled meeting which gives team members the opportunity to demonstrate their work. It is also referred to as a sprint review or a show and tell. You may want to invite stakeholders such as directors or suppliers to this meeting and use it to tell them about the user stories that have completed or other work which has been done. Make sure to use a place with a screen to present the work and enough space for all participants.
If your project is part of a larger organization or program you may want to open up your review to the rest of the organization every few weeks. This gives you the opportunity to show the most important work you’ve done, talk about what you’ve learned, explain your plans for the next few weeks and answer questions. It also gives other teams the chance to see how your work relates to theirs.
User Stories
User stories are a way for your team to briefly record the things you need to do to build the product. You can use them to prompt discussions about features when you’re ready to start working on them.
The Backlog
A product backlog is used to store the user stories that haven’t yet been started. It is recommended that the user stories are ordered based on priority. If you are following Scrum you should also use a sprint backlog to manage the stories that the team has agreed to work on during a sprint.
Team Walls
Your team wall is an important tool that helps to track and manage the workload. The wall shows what your team has done, what they’re currently doing, and remaining work. Having a team wall helps your team to collaborate and allows other people in the organization to see what you’re doing. For more information on setting up a team wall click here.
Approaches to Agile
There are numerous agile frameworks that can be followed or leveraged when implementing business transformation projects. They include but are not limited to: Scrum, Extreme Programming (XP), Kanban, and Scaled Agile. This guidance will focus on Scrum. For a more complete list see the Agile Manifesto.
Agile Tools and Techniques
Accurate estimation can make or break your project
One of the major skills required for any project leader is having good sense of effort estimation. Mastering estimation is essential as it highly impacts projects delivery deadlines. Inaccurate estimation dramatically impacts the cost and profitability of any project. It also influences the perception and trust of all team members and customers towards the project leader. Knowing how to estimate is essential for all team members because they all have a part in the estimation process. There is no doubt of how crucial it is for the whole team to build up this capability. Yet, we have to acknowledge the challenges that we face during estimation process in the software industry where it is almost impossible to simply replicate the same project and assume that by analogy all estimates will sustain. Each project always comes with a new set of requirements, risks, technologies, team members, and so on. Estimation challenges can be summarized as:
- Extreme estimation that can be too optimistic or too pessimistic.
- An individual's incorrect perception that estimation is a commitment.
- Resistance to adapt to new emerging factors that could impact estimates.
- Lack of expertise or historical information that can provide initial ground for estimates.
- Uncertainty of the project scope or business requirements.
- Poor risk mitigation plan.
- Unmeasured ad hoc activities like meetings, holidays, demos, prototypes.
- Lack of using updated tools and processes to track estimates.
In order to gain this skill, each individual needs to be aware of what options they have available to them. What are the different techniques that can be used and when should they be used? This article shows various estimation techniques that help control projects and improve decision making. The article starts with an overview for some popular conventional methods, then shows some agile techniques. The article ends with a summarized comparison between agile development versus conventional methods. You'll also learn a set of ingredients to make you a better estimator.
Conventional estimation methods
Many project estimates are built using the guidance of previous project histories or the expertise of subject matter experts (SMEs). In the following section you will learn the methods that focus on the similarities between projects.
Historical information
PROBE (Proxy Based Estimating)
This technique was created by Watts Humphrey of the Software Engineering Institute at Carnegie Mellon University as part of the PSP (Personal Software Process). It is based on the idea that If an engineer is building a component similar to one he built previously, then it will take about the same effort as it did in the past. In the PROBE technique, a repository is kept with all detailed information for each component that was built before. Then when a new project needs to be estimated, it is broken down into components that match the historical information. A formula is then used to calculate the estimate for each task.
COCOMO II
In 1980, Constructive Cost Model (COCOMO) was developed. It is based on analyzing the result of statistical study for 63 software development projects. Ten years later, an updated version called COCOMO II was introduced that covers modern development life cycles and uses a wider set of data. The new model takes a set of input variables and calculates the target estimates based on the previously studied projects.
Group estimation
Wide Band Delphi is a process developed in 1940. It depends on group estimation where the project manager selects a moderator and an estimation team. The moderator is unbiased and manages the meeting. The moderator also ensures that everyone participates. The project manager must be a member of the estimation team so that the team is aware of the priority of the requirements.
The process starts with a kickoff meeting where the team is familiarized with the goal of the project. The output of the session is a high-level list of tasks and a set of assumptions written by the moderator and distributed to the team. Each member of the estimation team individually creates a set of preparation results, as seen in Figure 1, in order to prepare for the next estimation session meeting. Additional tasks or assumptions can always be added for further discussion. In the estimation session, the moderator distributes an empty form to each estimator. Each estimator fills in the estimation form based on his or her preparation results.
Figure 1. Preparation results
As seen in Figure 2, each estimator puts the list of tasks in each row with the corresponding estimates and assumptions of the estimation form. Then the moderator gathers this information and writes it onto a white board for the first round.
Figure 2. Estimation form
The discussion between the estimators involves each one estimator adjusting the estimation by using the delta column. The moderator writes the new estimation on the white board for each round. Notice that in each round the agreement for the estimates become closer, as seen in Figure 3. This is expected because the team members' points of view are being clarified.
Figure 3. Estimation written on white board
After the estimation session, the project manager gathers all the output in a table and lists all estimates, best scenario and worst scenario. Big estimate differences are marked for further discussion. A final review meeting is called by the project manager to share with the estimators the summarized results and allow for more discussion or consensus.
Parametric estimation
Parametric estimation methods use the relationship between historical data and other parameters in order to reach an estimate through the mathematical formula. A simple example is: if the estimate to write one method is 2 hours, then it would require 100 hours to write 50 methods. The different kinds of parametric estimation are introduced in this section.
Use Case Point (UCP)
This technique was developed in 1993. It is based on use cases used in Unified Modeling Language (UML) to estimate the size of software. UCP evaluates many elements like use case actors, technical complexity, and environment complexity. It then puts them all together into a formula to calculate the overall sizing.
Formula key:
- UUCW: Unadjusted Use Case Weight
- UAW: Unadjusted Actor Weight
- TCF: Technical Complexity Factor
- ECF: Environmental Complexity Factor
For more information, see Use case point an estimation approach.
Function Point Analysis (FPA)
As a concept it is very similar to Use Case Point. The functional requirements are categorized into one of five categories: outputs, inquiries, inputs, internal files, and external interfaces. The function is then assigned a number of function points based on its complexity. Using the following mathematical formula, the estimates are calculated.
Formula key:
- FP: Function Point
- UAF: Unadjusted Function Point
- VAF: Value Adjustment Factor
For more information, see Fundamentals of FPA.
Three–Point Estimates
This method tackles the uncertainty of estimation by using the Program Evaluation and Review Technique (PERT). The PERT technique calculates the estimate based on three estimates and analyzes the output by putting them into a mathematical formula.
9 Agile Estimation Techniques - Berteig Consulting And ...
Formula key:
- E: Estimate
- O: An optimistic best case scenario
- P: A pessimistic worst case scenario
- M: Most likely scenario
For more information read about the PERT Technique.
Agile estimation methods
One core distinction between estimation in traditional methods versus agile methods is in the use of the relative estimation concept. There is no absolute estimation in days or hours in agile estimation. Instead, story points are used. The rationale behind this is that many studies demonstrated how humans are more accurate when using comparisons in estimating. For example, you can carry two bags and estimate that one bag is heavier than the other one but you cannot be sure about how much each bag actually weighs. In the following sections, you’ll learn some of the most popular estimation methods in agile estimation.
Planning poker
Planning poker is one of the most popular agile estimation techniques. It guarantees that all members actively participate through playing a game. The game starts with a set of cards being given to each member on the team. Each set of cards contain a distinct number following to a great extent Fibonacci sequence: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, and so on. As seen in Figure 4, these numbers represent a relative evaluation for the story. Zero means the story is too trivial to be tracked; twenty means that the story needs to be broken into smaller ones. The rationale behind using Fibonacci is the intent to create uncertainty which will encourage discussion especially with large numbers. Now back to the game. Each member of the team starts estimating a certain story, then each one reveals the card that contains that story estimate from his or her point of view. Members who estimated the highest and lowest values explain their argument. In return these explanations make the whole team rethink about the reasoning, then share experience and assumptions. The whole team re-evaluates the story again and again until they reach a consensus. For more information, read Planning poker.
Figure 4. Sample of planning poker cards
T-shirt sizing
In this method, a set of size cards are distributed. Each size card contains a specific size, which is: Extra small (XS); Small (S); Medium (M); Large (L) and Extra large (XL). The cards are distributed horizontally on a table. The team collaborates together in adding each story under the appropriate size category. After all of the user stories are sorted out, the team puts, for each size, an equivalent story point, as seen in Table 1. For example: XS is 1 story point, S is 2 story points, M is 4 story points, and so on. This method ensures that all stories are mapped to story points.
Table 1. T-Shirt sizing mapped in story points
T-Shirt Size | Story point |
---|---|
XS | 1 |
S | 2 |
M | 4 |
L | 6 |
XL | 10 |
Similarly, other methods encourage using more creative and fun sizing methods. For example, using the weight of dogs where Chihuahua is the smallest and Great Dane is the largest weight. Another uses animal sizes where, for example, the mouse is the smallest size and the elephant is the largest.
Poker Techniques In Agile Project Management
Estimating large number of stories
What if you need to quickly estimate a large number of stories? In such a case, use relative mass estimation. It is a method that produces a rapid way to categorize and estimate large backlogs of stories. To use this method, you’ll have a card for each story. With a set of story cards on the table, the moderator picks up one of the cards and asks the team, “Is this story considered large, medium or small?” Depending on the answer of the team, that card is placed in a specific spot on the table. If it is large then the card goes on the left side of the table. If it is small, then it goes on the right side of the table. If it is medium the card is placed in the center of the table. Going to the next card, the same question is asked and the new story is placed relative to the one before. This process continues until all of the stories are sorted on the table.
Another similar method that targets estimating large backlogs rapidly is called Wall estimation. This method uses a big empty wall to sort the stories. Stories at the top represent highest priority while stories at the bottom represent lower priority. This also works horizontally on the wall to determine story size. Stories on the left are the smallest while those on the right are the largest.
Comparison between estimation in agile methods versus conventional methods
The first questions that come to anyone's mind are, 'Which method should I use?' and 'Which method is the best?' Well, this is a debatable question and there is actually no right answer for that. There are many studies in this area that proves that it depends on many factors such as the type of the project. The factors are shown in Table 2.
Table 2. A comparison matrix between agile methods and conventional methods
Agile methods | Conventional methods | |
---|---|---|
Project size | Small and Medium projects | Large projects |
Software lifecycle | Agile lifecycle. For example, Extreme Programming (XP) and scrum | Traditional lifecycle. For example, waterfall and spiral |
Estimation team size | Usually from five to nine. | Could be less than five. In a subject matter expert case it could be one member. |
Team collaboration | High involvement of all team members such as product owner, development team, testing team. | Not all methods encourage participation of all team members. |
Historical information | Estimation methods do not mandates the existence of historical information. | Most of the methods depend on historical information. |
Time to estimate | May take longer time since it is based on reaching consensus for the estimates. | May take less time compared to agile methods. |
Pointing system | Complexity of the points. For example, the story point sizes. | Parametric points. For example, Functional Point Analysis and Use Case Points. |
Estimation principle | Relative estimation. | Absolute estimation. |
Ingredients for better estimation
Creating good estimations is essential in order to drive your project to success. Estimation is one of the most important elements for planning. The better the estimation, the better the control for the deliverables and less wasted cost. So how do you measure if your estimates are good? Compare the variance between estimation and actual. By definition, a good estimate is within 25% of the actual result 75% of the time (Conte, Dunsmore, and Shen 1986).
Regardless of which estimation technique you choose to follow, there are some ingredients that definitely make it better.
- Estimation techniques awareness. You need to be familiar with all estimation methods in order to know which method is the best fit for your project.
- Use small tasks units. The more you break down your tasks into smaller pieces, the more insight you have about how long it will take to be completed. Typically a task's estimated completion time should be within two days of the actual completion time.
- Team collaboration. Involving your team in estimation erases any vagueness around the task. It helps in exchanging information and expertise thus reaching better estimation. It also increases the ownership of the estimate and the task.
- Ask the right questions. Every task contains ambiguity. You need to ask the right questions then try to find answers in order to eliminate this ambiguity. Put assumptions aside in order to create a common understanding for the task boundaries and risks.
- Keep records of your actual effort. Learning from previous estimates is definitely an added value. You need to keep records for the actual estimates for historical reference.
Conclusion
To become a better estimator you need to understand and explore different estimation techniques. It is important to know the options available and which one meets the needs of your project. This article provided a comprehensive list of estimation techniques under both agile and conventional methods. It gave you just enough information to understand the basics and get familiar with each technique. The matrix comparing agile versus conventional methods will help you decide which method to use. With the general recommendations and overview of techniques, you will be a better estimator.
Acknowledgments
I would like to thank Amr Yassin, Michael Schenk and Sally Fikry for reviewing and providing feedback on this article. It was definitely a pleasure working with them.
Downloadable resources
Related topics
- Software Cost Estimation with COCOMO II, Barry Boehm et al. (Prentice Hall PTR, 2000)
- Analysis of Effort Estimation Model in Traditional and Agile, Manjula, R., and R. Thirumalai Selvi
- 'Review on Traditional and Agile Cost Estimation Success Factor in Software Development Project,' Mansor, Zulkefli, Saadiah Yahya, and Noor Habibah Hj Arshad. (International Journal of New Computer Architectures and their Applications (IJNCAA) 1.4 (2011): 942-952)
- A comparison between agile and traditional software development methodologies,' Awad, M. A., (University of Western Australia,2005
- Agile estimating and planning, Cohn, Mike. (Pearson Education, 2005)