Rules to Better Scrum using Azure DevOps
If you still need help, visit our Scrum consulting page and book in a consultant.
SSW's Rules to Better Scrum allows businesses to address their most important challenges first and respond quickly to change. Our rules advocate software consultants working on-site, or on the phone, so long as there is close consultation with business users, with the goal to become integrated members of the client's team.
Software must help a business become more efficient and build better relationships with their clients. Business need software to be produced cost-effectively and quickly. Simple steps upfront stop software being slow to build and difficult to change. - Adam Cogan, SSW Chief Architect
Everyone who will be involved in Scrum (pigs and chickens alike) should have read and understood the Scrum guide.
Understanding the concepts of Scrum is easy; implementing it is hard!
Is working as a team all it is cracked up to be?
It's a well known fact that a good team of 3 people will output more than 3 people working on their own. As well as that, the team members will find it more rewarding as well.
The best sum up of this was by famous Wallaby player, Ben Darwin, who said:
I found the hardest issue of all was that I missed my friends, basically, and that's what I told them when I gave them the jersey for the final. I just missed the 14 guys. There's a feeling that comes in sport, particularly in team sport, where we say we feel jealous of the wages of individual sportspeople but never jealous of the lack of team. When you finish a game of football and you've played together and you walk off with the other 14 men, the guys on the bench, and you've overcome an opposition, you don't have to say anything to each other. You can simply look your fellow man or other player in the eye, and he knows you helped him , and you know how he helped you . That's enormously satisfying, and I haven't found that anywhere else in life.
Ben Darwin speaking on how, after breaking his neck in a scrum, he was forced to quit being a Wallaby and rejoin normal society.
We can see examples of this in nature as well. For the Antarctic Emperor Penguin, cooperation is the key to survival. Every winter thousands of male penguins huddle together to share warmth. The birds on the most exposed side of the huddle gradually move down around the huddle to the more sheltered side. This means that each bird spends some time exposed to the full force of the Antarctic winter, but then gets its fair share of warmth in the middle of the pack. These clever birds understand that by taking turns and enduring discomfort in the short term, their chances of success (survival) greatly increase.
It is essential that in order to be a contributing member of a successful team, you are willing to put the good of the team over your own interests so that everyone can benefit in the long term.
Note: If this beautiful story is not up your alley you will prefer a similar example of working as a team by the IT Crowd http://www.youtube.com/watch?v=pGFGD5pj03M
**Tip: Leverage Existing Organizational Experience and Learn From the Best.** Does your company have a ‘super star’ team? If so, why not ask to sit in on one of their meetings, or take a few of their team members to lunch and ask them for advice on increasing your own team’s performance.
Suggested questions to ask the experts:
- What do you define as success?
- What are the things that you do not worry about?
- What practices do you believe lead to your success as a high performing team?
- Do you have defined/document practices and procedures that you follow?
- What tools do you use that contribute to your effectiveness?
- What metrics do you use to measure your success ?
With the rest of your team, prioritize the feedback you received and select a few key items that you can implement right away.Make a backlog from the feedback you received, set some goals and start your team on the road to being ‘Superstars’ too.
Scrum is easier than it seems, we'll explain how in these 8 simple steps.
In the Initial Meeting, the Product Owner explains the product vision. The Develoeprs think about the Architecture needed and how long they will need to come up with an estimate.
The next step is Backlog Construction, also known as a Specification Review. The Developers propose a high-level software architecture and a to-do list called the Product Backlog. The required features are broken down into Product Backlog Items, or PBIs for short. These PBIs are estimated and, before a dollar figure is presented, a buffer is added for generic tasks such as DevOps, Testing, Bug Fixes, Project Management, etc.
This is also when the Product Owner 1st defines the Product Goal (aka the "why" of the project), although this can and should be refined throughout the project.
A quick note, there are only 3 roles in a Scrum Team, The Product Owner (the boss), the Scrum Master (a kind of project manager), and the Developers (who do the work).
The Sprint Planning session is for the Developers to focus on the subset of the Product Backlog that they think they can complete in the next Sprint, (which is most commonly a 2-week time-box). The Product Owner puts the PBIs into priority order and makes sure the top ones have enough detail to be worked on. The Developers then pulls PBIs from the top of the Backlog and commits to delivering as much as they forecast they can, in the coming Sprint.
The Developers and Product Owner together then define the Sprint goal, (aka the "why" of the sprint).
The Developers works on features in priority order, having done a Daily Scrum and sending 'Done' emails once the 'Definition of Done' is met. A task board is often used. During this process, the team also refines items in the Product Backlog to ensure they conform to the 'Definition of Ready'.
5. Product Increment
Each Sprint is a potentially shippable Product Increment, and with good DevOps, including automation of deployment and testing, this can be done on a PBI by PBI basis. This means each feature worked on can be in production as soon as it’s finished.
Product Feedback will then come in. Some will be bugs, and some will be small changes that can be added to the current Sprint. Other suggestions should be approved by the Product Owner and then added to the Product Backlog.
At the end of the Sprint, there is a Sprint Review, where the Developers demo or play done videos of the completed PBIs. The goal is for the Product Owner to understand the increment and to discuss the feedback to make the product better. This is the real measure of the success of the Sprint.
Lastly, there is the Sprint Retrospective, and this is the best part! The Scrum Team discusses what went well, what didn't, and what to improve, always inspecting and adapting.
From here, another Sprint Planning session commences, and the wheel keeps turning, getting better and better with every revolution.
The Scrum Master (not ScrumMaster), must schedule the Sprint Review, Retrospective and Planning meetings.
Estimate how much time each meeting will require, then schedule a single calendar appointment to cater to the three meetings. When scheduling the calendar appointment, keep in mind the following:
- Ideally, each of the three meetings should be time-boxed to an hour for every week of their associated Sprint.
- This timeboxing does not mean the whole time will be taken up, just that you should not let the time for each meeting be exceeded.
- With the Product Owner's help, the Scrum Team will need some time to update the Product Backlog after the Retrospective and before the Planning meeting.
- People need breaks.
- The Sprint officially finishes at the end of the Sprint Retrospective meeting. The Sprint Planning meeting marks the beginning of the next Sprint.
- These meetings do not necessarily have to be held on a Friday or Monday. You can have a Sprint start and end on any day of the week. Mid week meetings are recommended so that the likelihood of it occurring on a public holiday long weekend is minimised.
- Since these meetings will occur every Sprint - set a recurrence on the calendar appointment (every 1, 2, 3, or 4 weeks) so that people have the time blocked out well in advance.
Tip: It can be helpful to finish the Sprint Planning meeting with the first Daily Scrum
Schedule the meeting and invite the Scrum Team and any interested stakeholders.
Required Attendees: Scrum Team Optional Attendees: Interested Stakeholders Recurrence: Every [Number of weeks in the Sprint] weeks Subject: [Project Name] – Sprint Review, Retro and Planning
This is a calendar appointment to hold the following three Scrum meetings:
Sprint Review Meeting We will go through the user stories that have been completed and demonstrate them. See rule What happens at a Sprint Review Meeting?
Sprint Retrospective Meeting Sprint closed and new sprint starts. We ask for feedback of the previous sprint so that we can ‘Inspect and Adapt’. See rule What happens at a Sprint Retrospective Meeting?
Sprint Planning Meeting We go through the backlog (aka to-do list), get more information, estimate and then prioritize. We then breakdown to tasks and commit to what we believe we can deliver for the next sprint. See the rule What happens at a Sprint Planning Meeting?
Regards, [Scrum Master]
<This email is as per the rule https://rules.ssw.com.au/scrum-master-do-you-schedule-the-3-meetings />
Figure: Good Example - copy this appointment template and send to the Scrum Team
See Meetings - Do you know when to send an Appointment or a Teams Meeting? for more information.
Each sprint has a "Sprint Forecast" email that details what will be worked on during this sprint.
At the end of the sprint, this should be replied to with a "Sprint Review" email that shows a breakdown of what was completed.
Each sprint has the following stages:
- Sprint Forecast email: "Northwind Sprint 5 Forecast"
- See Do you send a Sprint Forecast Email for more details
The work is done:
- Done emails are sent asking for specific functionality to be tested
- See Rules to better Emailfor details
Review and Retro meetings
- The Sprint review/retro email: "Northwind Sprint 5 Review/Retro"
- See Do you send a Sprint Review/Retro email for more details.
The work to be performed in the Sprint is planned at the Sprint Planning meeting. At the Sprint Planning meeting, the following three questions are answered:
- Why is this Sprint valuable?
- What can be delivered in the Increment(s) resulting from the upcoming Sprint?
- How will the work needed to deliver the Increment(s) be achieved?
Why is this Sprint valuable?
The Product Owner proposes how the product could increase its value and utility in the current Sprint. The whole Scrum Team then collaborates to define a Sprint Goal that communicates why the Sprint is valuable to stakeholders.
What can be delivered in the Increment resulting from the upcoming Sprint?
The Product Backlog is examined and the Product Owner makes changes so that it is prioritised with Bugs prioritised amongst Product Backlog Items (PBIs).
The Product Owner is then asked to group the top ranking Bugs into PBIs for inclusion in the Sprint; see this rule.
The Team are then advised of their resourcing for the Sprint as there may be additions, subtractions, leave or public holidays which are different to the previous sprint. Considering their previous record and their current resources, The Team decide on the number of story points that they will deliver in the forthcoming Sprint. When The Team are not currently co-located this is often done by voting, and discussed until consensus is reached.
The Team then size (assign Story points to) PBIs starting at the top until there are more than enough PBIs to fill the Sprint.
The process of sizing is somewhat formal. Either using cards or IM (essential if not co-located) the team vote privately on the size of the PBI. They can either use T-shirt sizes of XXS, XS, S, M, L, XL, XXL and XXXL or their equivalent number of story points for which we use the Doubling Series of 1, 2, 4, 8, 16 or 32. Once the differring votes are in, the Scrum Master asks the smallest and biggest voters to explain the reasons for their vote. Assumtions and omisions are quickly identified through discussions and the Scrum Master encourages discussion until consensus on the Story points is reached. Any PBI voted at 16 or higher should be broken down into smaller stories; re-prioritised by the Product Owner and re-sized if necessary.
Once enough stories are sized, the Product Owner is given the opportunity to re-prioritise now knowing the relative sizes. If more PBIs need then be sized then they are. The Scrum Master keeps everything going and facilitates negotiation between The Team and The Product Owner until final priority is confirmed and The team commit to a number of stories and the meeting concludes.
This meeting should be timeboxed to an hour for every week in the Sprint. However, the Scrum Master must be sensitive to the meeting producing a workable result.
How will the work needed to deliver the Increment be achieved?
To answer the second question the team create tasks, with sub-tasks where necessary, for everything that needs to be done to implement the PBI. Every task and sub-task should be given an estimate in hours and the same value placed in the Remaining field.
No actual work on the Sprint should start until this planning is complete. It is these Remaining hours that determine the first value in the burndown chart which sets the Sprint on its way to completion. There must be no omissions or The Team will start without an accurate burndown and we all know that "The Team is nothing without a burndown".
The Team should also ensure that the burndown chart is working and will be automatically sent to all members of The Scrum Team overnight.
The meeting concludes when The Team reports to the Scrum Master that their planning is complete and they are able to display the burndown chart.
Ideally this meeting is timeboxed to as many hours as there will be weeks in the Sprint. However, this planning is so essential that it must continue to completion outside the meeting if necessary.
It is not essential for the Product Owner or the Scrum Master to be present for the whole meeting but they must be available for consultation. The Scrum Master should formally close the meeting.
Once this meeting is finished, the Scrum Master should email the Product Owner with a forecast.
After the Sprint PlanningMeeting, it is useful for the Development Team to send the Product Owner (PO) a Sprint Forecast for the next Sprint. Doing this helps to improve common understanding in, and sometimes to enforce, the relationship between the PO and the Team.
This is simply an agreement between the Development Team and the PO for one Sprint and should be confirmed via an e-mail at the beginning of every Sprint.
“The implementation team agrees to do its best to deliver an agreed on set of features (scope) to a defined quality standard by the end of the sprint. (Ideally they deliver what they promised, or even a bit more.) The Product Owner agrees not to change his instructions before the end of the Sprint.”
- Agile Project management
Each of the Sprints in a Scrum project can be considered a mini-project that has Time (Sprint Length), Scope (Sprint Backlog), Quality (Definition of Done) and Cost (Team Size*Sprint Length). Only the scope can vary and this is measured every sprint.
To: [Product Owner] Subject: : Sprint xxx Forecast
Hi [Product Owner],
Current Sprint: [Sprint Number] Sprint Duration: [Number of weeks] Sprint Goal: [Main goal of Sprint] Project: [Project Name] Project Portal: [Link to project Portal] Product Owner: [Product Owner Name] Sprint Review Meeting: [Date and Time]
Attendees: [Names of Attendees]
As per our Sprint Planning Meeting, and as the Product Owner, you have agreed to the following Product Backlog Items (PBIs) being included in the current sprint backlog.
The Team will do its best to deliver this set of features (Scope), to a defined quality standard (Definition of Done) by the end of the sprint. Ideally, the team will deliver what they forecast, or even a bit more, but this can't be guaranteed.
ID Title State Effort < generate this table as per the instruction on the rule below >
Figure: The sprint backlog
Figure: Good Example - copy this as email template and send to Product Owner. ** **Subject: <Client Name>: Sprint xxx Forecast
Tip: Use this Outlook email template
More instructions are as below:
- Go to Azure DevOps and navigate to the current sprint's backlog view. E.g.
Paste to the Forecast email, and format the table:
- Remove any useless columns!
- Go to Azure DevOps and navigate to the current sprint's backlog view. E.g.
This is the meeting where the Product Owner accepts or rejects the stories in the Sprint and the Sprint itself.
The Team, having prepared for the meeting, presents the stories to the Product Owner.
One person, often the Scrum Master, presents a summary to the Product Owner of the stories committed at the Sprint Planning meeting and the stories being presented for acceptance. The Team seeks to have more stories accepted than originally committed. It is important that the Product Owner knows at the beginning whether The Team believe that they have over or under achieved the Sprint commitment.
Each story is then presented by the Story Owner for acceptance. It is the objective of the Story Owner to get the Story accepted as quickly as possible while being totally transparent which includes declaring whether there are any known outstanding bugs in the story (which should already be on the Product Backlog) and adherence to The Team's Done Criteria.
If a Story is accepted but more work needs to be done, a new Story to cover this work is added to the Product Backlog. Similarly, if a bug is found during the review, it is added to the Product Backlog.
If a Story is rejected and returned to the Product Backlog but the Sprint itself is accepted, then a careful decision needs to be made. If changes have been checked-in to the Sprint's branch then it must be established that these changes have no adverse effect or they must be carefully undone before the branch is merged with the trunk. For this reason, it is always safer to accept stories with conditions rather than reject them.
The Scrum Master keeps the meeting on track and to the Timebox by disallowing discussions not relevant to the acceptance or rejection of the story; this is often done by making a note to bring the subject up again in the Retrospective Meeting.
This meeting is normally time boxed to as many hours as there are weeks in the Sprint.
At the end of every Sprint the Development Team performs a Sprint Retrospective also known as the Retro. The Retro provides an opportunity for the Scrum Team to reflect on what has gone well, what has gone poorly, and what the team wants to change.
Inspect-and-adapt is a key component of the Scrum framework and the Retro gives Scrum Teams an opportunity to learn from their successes and mistakes.
The Retro is a time-boxed event that focuses around 3 questions:
- What went well?
- What didn't go well?
- What will we do differently in the next Sprint?
The Scrum Master facilitates the meeting and collects issues as they are raised. Once every Scrum Team Member has spoken he facilitates debate on each issue so that team consensus is achieved. The result should produce an actionable outcome, for example:
- An adjustment is made to the daily processes followed by the Scrum Team
- An adjustment is made to the Definition of Done
- An adjustment is made at the organisation level
- An item is added to the Product Backlog
To help aid discussion it can be useful for the Scrum Master to prepare items for review by inspecting the Sprint Backlog and statistics such as:
- the Burndown
- Code Coverage
- Number of deployments
- Number of errors in Application Insights
For example the Scrum Master can find PBIs (Product Backlog Items) in the Sprint that were successful / not successful and then facilitate the discussion as to why.
Once all issues have been discussed to the satisfaction of The Scrum Team, the meeting concludes.
If the timebox limit is reached, the remaining issues should be recorded and dealt with by the Scrum Master. Any outstanding issues must be raised at the next Retrospective if they are still relevant.
The time-box for this meeting is usually as many hours as weeks in the Sprint.
After any Sprint Review and Retrospective, an email should be sent to all the stakeholders to update them on the outcome from the sprint:
- Subject: <Client Name> Sprint XX Review/Retro
- This is a reply to the Sprint Forecast email
- Screenshot of Burndown from Azure DevOps
- Breakdown of work completed (including current code coverage value)
- Link to test environment
- Relevant notes from the retrospective
- CC - SSWSprintReviews@sswcom.onmicrosoft.com
Hi [Product Owner],
Sprint in Review: [Sprint Number] Sprint Goal: [Goal] Sprint Duration: [Number of weeks] Project: [Project Name] Project Portal: [Link to project Portal] Test Environment: [Link to test environment] Product Owner: [Product Owner Name]
Attendees: (Optional as they may be in the to and CC)
| ID | Title | State | Effort | | --- | --- | --- | --- | | 24124 | UI Improvements | Done | 4 | | 24112 | Integrate Business Logic to MVC app
| Done | 8 | | 24097 | Styling | Committed
| 16 |
Figure: Sprint Backlog from [Link to Sprint Backlog in Azure DevOps]
- Sprint Burndown (a quick overview of the sprint)
- Code Coverage (hopefully tests are increasing each sprint) XXX
- Velocity (Optional) XXX
- Burnup (for the release - the whole project, how are we tracking for the big picture?)
- Production Deployments (How many times did we deploy to Production?)
- Application Health Overview Timeline (For the entire Sprint)
**Did we do any experimental work?**
<insert details of any trial/error processes, and ensure all detail is captured as per https://rules.ssw.com.au/do-you-record-your-failures>;
<insert details of any problems for which no solutions existed, and ensure detail is captured as per https://rules.ssw.com.au/do-you-record-your-research-under-the-pbi>;
As part of our commitment to inspect and adapt as a team we conduct a Sprint Retrospective at the end of every Sprint. Here are the results of our Sprint Retrospective:
What went well? <insert what went well from retro>
What didn’t go so well? <insert what did not went well from retro>
What improvements will be made for the next Sprint? <insert what improvements will be made for the next Sprint>
Definition of Ready - Optional
<insert the definition of Ready. Normally that the PBIs are Sized with Acceptance criteria added>
Definition of Done - Optional
<insert Definition of Done. Normally that it compiles, meets the acceptance criteria, and a test please has been sent if relevant>
<This is as per the rule: https://rules.ssw.com.au/do-you-create-a-sprint-review-retro-email />
Figure: Good Example - Template for Sprint Review/Retro Email. Subject: Sprint xxx Review/Retro
Tight project teams have a Daily 'Scrum' every day at the same time.
It was once called a 'stand-up meeting' but that discriminates people in wheelchairs.
It is best to have it standing up, so it's short and to the point. No-one wants to stand around waffling.
Everybody knows the 3 essential questions:
- What did you do yesterday? (and did you update Azure DevOps (was TFS) OR other bug tracking system)?
- What are you going to do today? (and my current task on the physical task board has my picture on it)
- Do you have any roadblocks? (aka issues/impediments)
Asking these questions of every team member means no-one can hide and everyone remains connected. Further, you can notice what was promised and what was performed. This enables the team to discover issues quickly and keep abreast of the progress.
The team's successes and failures are shared, and anyone who knows the answer to someone else's problem can help with a solution, after the meeting.Figure: Watch a Daily Scrum at Microsoft (short) Figure: Watch a Daily Scrum at Microsoft (long)
"Great video guys. Remember, it is ok to change Scrum, actually, it is necessary for success. Just adhere to the values of Scrum. " Stephen Forte (Board member ScrumAlliance.com)
Follow these essential tips to improve your Daily Scrum meetings:
Tip 1: Be prepared for the meeting
Before you join the Daily Scrum, check the Teams group to see what your colleagues have been discussing and working on, and check the portal to confirm the meeting time. If you’re joining a new project or re-joining a previous one after some time away, these steps are important to keep yourself up-to-date and abreast of progress.
Then you’ll be able to say to your Scrum Master, “I’ve had a look at the Teams group. I am ready to join the daily Scrum.”
Tip 2: Have your Scrum Master review the Sprint Progress at the end
At the end of the Scrum, the Scrum Master should review the current burn down to check on the progress of the team.
Tip 3: Keep a schedule of the Daily Scrum times on a wall (+ have a recurring appointment in Outlook)
To: [Team] Recurrence: Everyday Subject: Daily Scrum – [Project Name]
Hi [Team Name],
As per our conversation, the Daily Scrum will be held each day.
Project: [Project Name]
Scrum Master: [Scrum Master Name]
<This email was sent as per Do you do Daily Scrums?>
Regards, [Your Name]
Figure: Schedule a recurring Daily Scrum meeting in Outlook using this template
Tip 4: Keep to the schedule. Same place, same time (and start even if people are missing)
Get started on time. Especially in the beginning, people will be late, but the meeting should be held with the remaining people. Don't worry. People learn.
If the Scrum Master is not a full-time member of the team (often they are), they should attend every now and then to check the Scrum process is being followed and the Daily Scrums are being used synchronize the team and not a general meeting.
- The Product Owner (often the client) is not required at the stand-up meeting. If he wants to turn up, remind him that he has tape stuck over his mouth, so he does not talk.
- If you are not doing an approved Sprint and doing ad-hoc work, then best if the Product Owner (aka client) attends (see Ad Hoc work).
Tip 5: Do you update tasks before the Daily Scrum?
Daily Scrums are more effective when team members arrive when their tasks are already updated.
Tip 6: Don't go into detail
Keep your answers short and concise. Do not stray from the 3 main questions. Remember to use the "Parking Lot" to record topics to discuss after the Daily Scrum.
Tip 7: No phones + no checking email. No distractions
Technology in the Daily Scrum causes people to lose focus on the goal. The goal is for the team to synchronize by sharing what they are doing. Avoid giving people the opportunity to be distracted easily by forbidding email, SMS and mobile phones from the Daily Scrum.
Tip 8: Use a task board (even better use an electronic one)
A task board allows people to visualize what the team is talking about.
Tip 9: Carry a pen and paper
Use a pen and paper to jot things down.A whiteboard is also great for "Parking Lot" topics that arise, to be discussed after the meeting.
Tip 10: Don't let your Daily Scrum become a general meeting - use a "Parking Lot"
A "Parking Lot" is the place for any discussions that stop the Team from answering the 3 main questions. Only interested people stay for the "Parking Lot" to discuss issues after the Daily Scrum.
Tip 11: If you have raised impediments, consider contacting the Product Owner
Often the Product Owner won’t be at the Scrum. However, call the Product Owner if you have an Impediment (aka Roadblock). Communication with the Product Owner is essential and if you haven't touched base with him in the few days, then do so. A disconnected or absent Product Owner is a sign of dysfunction.
Tip 12: What to do when you're working for a PO directly
If you don't have a team, and you're doing ad hoc work for a PO directly, it's best to contact him for the Daily Scrum every day if possible, and follow up with an email. This will keep the 2 of you synchronized.
Tip 13: How do you enter scrum meetings into your timesheets?
Once you have completed your stand up, add “S” to your timesheet as per Rules to Better Timesheets.
Tip 14: Use Teams or Skype
Use Teams or Skype to bridge gaps in geography.
Focus on the Flow
"Extend this rule to focus on 'flow of value', not just people. In a continuous flow mindset, the daily standup is less about the people..... it's about flow. The team faces the scrum board and goes ticket by ticket for all the items in the 'work in progress', finding out what is needed to get it to the next stage.. respecting work in progress constraints." Joel Semeniuk
When using email or IM try to be as specific as possible:
I have XX days until my next client booking. I have 22 emails in my inbox. Yesterday I was on sick leave.
Today I am working on:
- Timepro PBIs
- Tidy inbox
Figure: Bad example - Lack of details. Eg. Yesterday - if it's Monday, you wouldn't say “Yesterday was Sunday"... so if you were sick, it's more useful to go back to the prior day you were working
I have XX days until my next client booking. I have 22 emails in my inbox. Last Friday I was on sick leave.
Today I am working on:
- TimePro - Adding new button to the next day
- Getting my emails on "SSW.com" to zero
Figure: Good example - Clear details
What happens when you run out of tasks?
The goal is to be productive for 8 hours of the day, so communicate with the rest of the developers and work with them on any other outstanding tasks. If there are no more tasks then take the next task from the top of the Sprint Backlog.
What happens if there is a major incident?
It is important that any major incidents are dealt with first. Start with any major incidents that occurred in the last 24 hours.
Each step of Scrum is designed to take you towards an outcome, and this is built upon 3 levels of commitment:
This is the commitment at the Product Backlog level. It is defined by the Product Owner and ensures continued focus upon progress towards a defined outcome.
The Product Goal describes a future state of the product which can serve as a target for the Scrum Team to plan against. The Product Goal is in the Product Backlog. The rest of the Product Backlog emerges to define “what” will fulfill the Product Goal.
"A product is a vehicle to deliver value. It has a clear boundary, known stakeholders, well-defined users or customers. A product could be a service, a physical product, or something more abstract."
The Product Goal is the long-term objective for the Scrum Team. They must fulfill (or abandon) one objective before taking on the next.
**Excerpt from The Scrum Guide **
This is the commitment at the Sprint Backlog level. It is negotiated between the Product Owner and the Team, and defines the “why” of the sprint, and how it will help the product eventually reach the Product Goal.
The Sprint Goal is the single objective for the Sprint. Although the Sprint Goal is a commitment by the Developers, it provides flexibility in terms of the exact work needed to achieve it. The Sprint Goal also creates coherence and focus, encouraging the Scrum Team to work together rather than on separate initiatives.
The Sprint Goal is created during the Sprint Planning event and then added to the Sprint Backlog. As the Developers work during the Sprint, they keep the Sprint Goal in mind. If the work turns out to be different than they expected, they collaborate with the Product Owner to negotiate the scope of the Sprint Backlog within the Sprint without affecting the Sprint Goal.
**Excerpt from The Scrum Guide**
Definition of Done
This is the commitment at the Product Backlog Item (PBI) level. This may include testing, deployment, Pull requests, etc, and ensures the quality of each PBI.
The Definition of Done is a formal description of the state of the Increment when it meets the quality measures required for the product. The moment a Product Backlog item meets the Definition of Done, an Increment is born.
The Definition of Done creates transparency by providing everyone a shared understanding of what work was completed as part of the Increment. If a Product Backlog item does not meet the Definition of Done, it cannot be released or even presented at the Sprint Review. Instead, it returns to the Product Backlog for future consideration.
If the Definition of Done for an increment is part of the standards of the organization, all Scrum Teams must follow it as a minimum. If it is not an organizational standard, the Scrum Team must create a Definition of Done appropriate for the product.
The Developers are required to conform to the Definition of Done. If there are multiple Scrum Teams working together on a product, they must mutually define and comply with the same Definition of Done.
**Excerpt from The Scrum Guide**
The client is generally the Product Owner (PO). They should read the Scrum Guide and watch the Product Owner video to understand their role. It is so important to the success of their project:
In order to be a good PO, they need to:
- Be available for Sprint Reviews, Retrospectives and Sprint Planning meetings (approximately half a day for these 3 meetings, for each 2-week sprint).
- Order the Product Backlog. The important things will be done first, in order to maximize the ROI as the budget will run out one day.
- Be available, at least remotely, to unblock a developer if he has questions/impediments. A good PO has a feeling of urgency.
- Ideally, listen in on Daily Scrums. This is optional but means that the PO will have daily insight into the team’s progress.
- Understand Product Backlog Items (PBIs) and be able to explain what they want using Acceptance Criteria. This is the main way that developers and POs sync their understanding of what needs to be done.
- Set a Product Goal (the "why" of the Product)
- Agree on a Sprint Goal for each sprint (the "why" of each sprint)
- Not influence (or anchor) developer estimates with comments like “this one will be easy” and allow the team to come up with converged estimates.
- Respect the Sprint Goal. Understand that the team will only work on things in the Sprint Backlog and don’t expect other things to be done as well. Most things can wait for the next sprint.
Who should be the Product Owner?
It’s hard to give guidance on who in the company would make a good PO. The usual candidate is often extremely busy. It should be:
- Someone with a personal stake in the success of the project.
- Someone who is available
- Someone with a clear vision of the product,
- Someone who has authority with the budget. E.g. They could authorize adding a designer to a sprint for a couple of days
- Someone who has read the Scrum Guide and watched the Product Owner video and understands the role.
It’s possible to outsource the role of PO to someone in the development consulting company, but this is not recommended. Don’t put the fox in charge of the chickens.
“Most dysfunction I see in Scrum teams is caused by a bad Product Owner” - Adam Cogan - Professional Scrum Trainer, Scrum.org, during a TechEd session
All good Scrum teams have a backlog. The backlog is built by taking a conversation and recording it as one or more Product Backlog Items (PBIs) (e.g. Azure DevOps) or Issues (e.g. GitHub)
We recommend using software such as GitHub Issues, Azure DevOps, or JIRA to store PBIs straight after or, better yet, during the conversation, rather than using emails that may never be entered into the backlog.
The Product Owner is responsible for owning the Product Backlog. See the video on "Do you know how to be a good Product Owner?"
- GitHub Issues (Recommended)
- Azure DevOps - E.g. https://ssw.visualstudio.com
The Product Owner is responsible for owning the Product backlog. See the video on "Do you know how to be a good Product Owner?"
There are three options for how to add new PBI (Product Backlog item) to the backlog:
Bad Example - This is a poor way to add a PBI as you can’t order emails by the business priority
- Azure DevOps - E.g. https://ssw.visualstudio.com
Figure: Good Example - Azure DevOps allows you to enter an item into the backlog, in any priority order
Note: You can also create a PBI using Azure DevOps and attach an email directly if needed, without using Team Companion
A task should never have an estimate of more than half a day (4 hours).
If you have a big task with an estimate of more the 4 hours, you should consider breaking it in sub-tasks. In case the estimate has changed during the sprint, the “Remaining Hours” field must be updated in order to have an accurate Burndown chart.
The reason Scrum limits the maximum hours is because you should always know in which task you are working and we believe one single action that takes more than 4 hours might be too generic. Refer to Do you create tasks under 4 hours? to know more.
A team knows how many PBIs they can commit to by measuring their velocity. The Team estimates the highest priority PBIs in the Product Backlog in Story Points. It is very important for teams to estimate tasks effectively. There are several methods for estimating:
- Shirt Sizes
- Fibonacci Extended (1-100)
- Fibonacci Original (1-21)
Let's go through them:
This method is popular with Microsoft teams, but it has the problem of not easily mapping to the common 7 numbers when you enter it into a Task tracking Bug database. e.g.
1 = XS 2 = S 4 = M 8 = L 16 = XL 32 = XXL 64 = XXXL
Please note: In some teams which only use Small, Medium and Large the following numbering is applyed respectively 2, 4 and 8.
Fibonacci Extended (1-100)
Planning Poker is a very effective Product Backlog estimation technique and the most common method is using Fibonacci numbers (1,2,3,5,8,13, etc.). This was made popular by Mike Cohn.
Mike Cohn introduced changes to the original 7 cards, by changing the 21 to 20 and adding 40 and 100 to indicate very large user stories called Epics.
Ken Schwaber (the father of Scrum) says in his Scrum Certification course, that he is not a fan of the extra cards and says he prefers teams keep to the original 7 cards.
Estimating using doubling numbers makes relative sizing simple. An 8 point PBI should be about twice the size as a 4-point PBI. This method also simplifies PBI swapping where a PBI is replaced with PBIs totaling the same number of points.
It has one other advantage over the Fibonacci sequence, it is easier for non-techies because the numbers aren't whacky and the name isn't bizarre.
Estimate 1 2 4 8 16 32 64
Figure: Good example -Doubling simplifies relative sizing
Another method of estimating is the "Thrown method" as described Martin Fowler. http://martinfowler.com/bliki/ThrownEstimate.html
This is particularly useful if you don't have Planning Poker cards. Instead of Fibonacci numbers, estimates are from 1 to 5. It's nice and simple, and you only need the fingers on your hand.
The action is done in the same method as the game 'Rock, Paper, Scissors'. The options the developer can estimate is 1,2,3,4,5
#1 Don't Shout Out It will just influence other people's votes.
#2 Guidelines for Estimating PBIs (aka Anchoring) Every team is different, but you can use the following guidelines for sizing PBIs.
Estimate Value Example PBI 1 A change to a message box
| 2 | - | | 4 | A timeboxed task for 1 day x 1 guy | | 8 | A timeboxed task of 1 day x 2 guys | | 16 | - | | 32 | - | | 64 | More than a month with a couple of guys. Tip: Don't include these in a sprint because they are too risky - ask for them to be broken down. |
Figure: Good example - Example PBI estimates
#3 Using a Chat Program If you are working on a project with a remote team, use Microsoft Teams chat to size PBIs using Planning Poker. Everyone should give their points for PBIs at the same time to avoid influencing each other.
#4 Big PBIs Smell PBIs of greater than 2 days are a smell and PBIs greater than 4 days are a stench. If PBIs are estimated at more than 4 days of work, consider splitting them into smaller pieces to keep them under 2-4 days. See Do You Break Large Tasks into Smaller Tasks?
#5 Use Spikes If you do find a very large PBI, consider using a Spike (aka. an investigation task) to help work out how much work will be involved.
All team members must update their tasks with status, (and remaining hours if you are estimateing tasks) prior to the daily Scrum meeting.
- Reports - Do you know which reports are the most important ones to track your progress?
- Management - Do you have daily stand-up meetings (Scrums)?
In Scrum, there are 4 meetings in total that you need to know about:
Short Version (3:48)
Long Version (12:15)
Note: If you are updating the details of a PBI then follow the rule Do you know when you use @ mentions in a PBI?
In Scrum, meetings are time boxed. Team members should be well prepared in order to accomplish the meeting goals in time.
Daily Scrum Meetings
This is time boxed to 15 mins. All members of the team should be well prepared by:
- Being ready on time
- Having their "Remaining hours" up-to-date – read Do you update your tasks before the daily Scrum meeting?
- Be ready to answer the 3 main questions:
What did you do yesterday? e.g. "Yesterday I did xxx"
What are you doing today? e.g. "Today I will do yyy"
Do you foresee any impediments or roadblocks? e.g. "I might hit a roadblock today because of xxx"
- Remember to say "Let's park that conversation for after the Daily Scrum". Major discussions are not to be conducted during the time boxed Scrum meeting.
- Being online on Skype (especially for team members in different locations).
Sprint Review Meetings
All members of the team must be well prepared by:
- Being available 30 minutes before the meeting
- Setting up and testing the projector with a computer before the meeting starts
- Making sure remote members are connected via Skype and/or TeamViewer before the meeting starts
- Nominating in advance another member of the team to take notes from the presentation
- Deciding, in advance, the order in which PBIs should be presented; priority, sprint backlog order, logical order and minimizing presenter and presentation medium switching should be taken into account.
Controlling the time spent on the PBI presentation
- Practice the demo beforehand if needed to ensure a succinct delivery. This can be in the form of a pre-prepared video if desired
- Inform the product owner what the main goal of the PBI is and tell if the team believe it was done or not
- If the Product Owner previously saw what was done, ideally the member should just mention that and ask if the PBI is accepted
- If the member needs to show something, show a couple of examples and ask if the Product Owner wants to see something else
Sprint Retrospective Meetings
All members of the team must be well prepared by:
- Having all your tasks from the last sprint closed
- Having your sprint feedback ready in advance, so members don’t need to think about it during the meeting, saving time
- Being clear and pointing out issues that need further discussions
Sprint Planning Meetings
All members of the team must be well prepared by:
- Having all bugs and PBIs up-to-date on the backlog
- Having all PBIs on the backlog “groomed” in order of priority (according to the Product Owner)
- Understanding all PBIs and the Product Owner’s priorities
- Being responsible on estimates
- Volunteering to work on PBIs and tasks, even if they are not related to your best skills – read Do you encourage multi-skilled teams?
When you are building complicated software and working with customers it is always nice for them to have some idea on who to speak to about a particular PBI during a sprint. In order to achieve this one of the Team takes responsibility for “looking after” a PBI. They will collect all of the“Done” emails and make sure that everyone follows the Done criteria identified by the team as well as answering any Product Owner queries.
During a sprint it can be useful for:
- The Product Owner to know who to speak to regarding a PBI
- The Team to know who will be presenting the PBI at the Sprint Review
In order to achieve this, one of the Team can choose to be the primary contact for the PBI.
Beware, this is intended for convenience and should not conflict with the following Scrum principals from page 6 of the Scrum Guide
- The Development team is self-organizing.
- Accountability belongs to the development team as a whole
In Scrum, you work only on tasks in a Sprint, and the task must belong to a committed PBI. As such, when you check-in code in Azure DevOps (was TFS), you should associate it with the task you are working on rather than the PBI.
The reason behind this is that doing so provides a better way to track change sets in a Sprint and give full traceability for work done during the Sprint.
Change set 123 was associated to PBI 'As an end user I want to be able to lookup customers'
Bad Example - The change set was associated to a User Story not a Task
Change Set 123 was associated to Task 'Create database fields for customer' which is part of PBI 'As an end user I want to be able to lookup customers
Good Example - The change set was associated to a Task
Often you will receive rich information from your Product Owner (customer) about tasks. That information can be in the form of Word documents, but you generally receive them in the context of an email. This should be done by one person called the scribe.
The scribe will:
- Take screenshots and notes
- Turn them into multiple emails
- Add them into Azure DevOps (was TFS)
You need to keep these so your team can refer to it later, and so you can send a “Done” when the task has been completed. This preserves the history of the task and allows you to keep relevant partied included in any future conversation.
Keep the original email so that you can reply "Done" and delete the email.
You should follow the existing Rules to Successful Projects and attach the email to your task so you can refer to and reply to it later when you close the task:
- Do you know what Outlook add-ins you need?
- Describe the work item request in an email
- Use Outlook Add-in to move the email to a Work Item
Following these simple rules will help your Product Owner understand you better, and allow your team to more effectively collaborate with each other.
An added bonus is that as we are keeping the email history in sync with Azure DevOps. When you “reply all” to the email all of the interested parties to the Task are also included. This notifies those that may have been blocked by your task to keep up to date with its status.
When you create tasks in Scrum you are doing this within a time box and you tend to add only the information you need to remember what the task is. And the entire Team was at the meeting and were involved in the discussions around the task, so why do you need more?
Once you have accepted a task you should then add as much information as possible so that anyone can pick up that task; what if your numbers come up? Will you be into work the next day?
What if the Team runs a syndicate and all your numbers come up? The point is that anything can happen and you need to protect the integrity of the project, the company, and the Customer.
Add as much information to the task as you think is necessary for anyone to work on the task.
If you need to add rich text and images you can do this by attaching an email to the task.
Note: If you are updating the details of a PBI then follow the rule “Do you know when you use @ mentions in a PBI?”
Member of the Scrum Team should understand their responsibilities and respect the implicit contract (promises) they have made.
Role Promises The Organization
- the team that there are stakeholders (including subject matter experts) who will help when needed
<li>the team that there are stakeholders (including subject matter experts) who will help when needed </li> <li>they will help the Scrum Master in the removal of impediments to the Scrum team’s progress </li> <li>the team that they will not change priorities or constraints in the middle of a sprint without team’s consent </li> <li>that being on a Scrum team will not hurt the members’ careers </li> <li>not to divert team members to other work on a Scrum Day during a sprint </li> </ul> |
| Product Owner |
- to supply an initial product backlog
- to prioritize the product backlog when needed
- to be responsive to requests for feedback and clarification
- empowered “voice of the customer” will be provided to answer business domain questions promptly (minutes or hours, not days)
- to attend every Review, Retrospective
- not to change priorities or scope during a sprint
- not to direct team members to do work not agreed and planned at the beginning of the sprint
- to keep the team healthy by focusing on the removal of impediments, both internal and external
- to protect the team from external distractions
- that its work will be transparent, that it will make decisions and solve problems as a group, and that no individual team member will be left behind
- to take prioritization and scope from the product owner on the team driving the team based on stakeholders interests
- to use the stakeholders’ time wisely, by focusing on questions that are relevant to the work being done now
- to do quality work the best way they know how within the constraints set forth by the organization
- to deliver demonstrable product at the end of every sprint for review and validation by the stakeholders
- to endeavor to become multi-skilled by sharing and pairing and not relying on experts on the team for specific functions
- to bring issues, problems, impediments and realities encountered to the team
- to be available and working with the team on every defined Scrum Day of a sprint in which they committed and any required absences will be scheduled before the beginning of the sprint
- to attend every Scrum, Review, Retrospective & Planning Meeting
- to refer any external request that will take more than 15 minutes of Scrum Day time to the Scrum Master
In Scrum there is only one report that the team needs to track their progress.
There are however other reports that matter for management and putting together the bigger picture.
Most devs don't send 'Done' emails... Would you really expect Product Owners to always be checking Azure DevOps (was TFS) or GitHub?
The better approach is:
- If a task/bug came from a client when it is completed, send the 'Done' email to the Product Owner.
- If the task/bug is your breakdown of a PBI (that the developer did to break down a big user story), then only send the ‘Done’ once the entire user story is complete.
Note: Send the ‘Done’ email to the Owner of that PBI.
GitHub Note: If you are using GitHub, you can close the issue with a comment, and @-mention the people you wish to notify - GitHub will then email them for you, assuming they have configured it correctly. This has the added bonus of being visible to everyone else who can see the issue, without needing to CC everyone on your emails.
- Include Task #, Summary, and link to the item in TWA.
- Remember that all your tasks should be under 4 hours
- Follow the Done Email rules
- If you completed the task in a different way than previously discussed, mention it.
- Make sure that every PBI has an Owner as per the rules.
If you are working on a task
When you complete a task that is part of a PBI you need to send a done email to the Owner of that Story.
You only need to add the Task #, Summary and link to the item in WIWA. Remember that all your tasks should be under 4 hours, do spend lots of time on a Done Email for a Task would be counter productive. Add more information if required, for example you may have completed the task a different way than previously discussed.
Make sure that every PBI has an owner as per the rules.
If you are the owner of a PBI
When the last task/bug of a PBI is complete, you then send a comprehensive done email as per the rules when the story had been completed. Make sure you add a list of all of the Tasks that were completed as part of the story and the Done criteria that you completed.
Here is the Definition of Done we followed:
- Compiled/Built locally
- >30% Code Coverage
- All unit tests passed
Then add an illustration to show this.
This is all designed to help you Scrum Team members (Product Owner, Scrum Master and Team) keep a certain quality bar on completion of each chunk of work. Remember that you are not 'DONE' until your team says you are done.
Something you must do it to conduct an internal ”Test Please” prior to releasing anything to a client. This should be conducted by someone outside the Scrum Team and as it is a blocking process must be started within an hour and take no longer than 3 hours to complete.
Rules to Successful Projects
- Do you conduct an internal "test please" prior to releasing a version to a client?
- Do you know the 4 steps to do a "Test Please"?
In Scrum, you should conduct a separate “Test Please” for each of the stories. You might be using the same package, but all the bugs and issues found must be rolled up to the Story Owner as they will need to decide on what needs to be done to deliver their Story.
What happens when you leave all the testing to the end of the sprint? You find things that are not done and you have no time before the Sprint Review to fix them.
Figure: Bad example - if you don’t complete all the tasks the customer will not receive a build in the sprint
One way to mitigate this is to aim for a “ test please ” to occur a few days before the end of the Sprint but you still run the risk of not having enough time to make sure everything is done.
Figure: OK example – Send the “test please” before the end of the sprint so you have time to finish everything
It is preferable to conduct a Smoke Test to make sure that you are comfortable demoing the unit of work you just finished to the customer. One way to do this is to create a Coded UI test for each of the Stories as part of your Definition of Done (DoD) that runs through the functionality you have built.
In this scenario the “ test please ” with the customer happens outside of the current Sprint.
Figure: Good example – Create a coded UI test for each story to prove that it is complete
If you are doing Scrum then you should have a User Story fleshed out with a set of Acceptance Criteria . These Acceptance Criteria are agreed with the Product Owner before The Team committed to the story, and define what the Product Owner will accept as complete. This makes it relatively easy to create some automated tests that test for these Acceptance Criteria and help your Sprint Review go as smoothly as possible.
Any changes found during the Sprint Review get added to the Product Backlog to be prioritised by the Product Owner .
The goal is always to complete PBIs for the Sprint Review.
Often PBIs grow or change and it does not make sense to deliver what was originally proposed in the Acceptance Criteria.
So think of a way to deliver business value and get it in production, then have a hallway conversation with the Product Owner to see if he agrees with you.
Assuming approval, then adjust some of the Acceptance Criteria, add "v1" to the PBI name and move some of the functionality to a new PBI with the same title and "v2".
- Customer and Contact Form v1
- Customer and Contact Form v2
There are two reasons that a PBI can be removed from the sprint.
- Your team notices that they can’t get everything done, and agree with the Product Owner to remove the PBI.
- At the Sprint Review meeting the Product Owner rejects the story
There are a few reasons a team can find themselves in a position where they can't get everything done.
- They underestimated one or more PBIs
- PBIs were blocked by other PBIs
In all cases, when a PBI is removed from the backlog, it moves back to the top of the backlog and any unfinished tasks left in the sprint are closed. When the Product Owner next grooms the backlog, or during the next Planning Meeting, he may decide to prioritise the PBI high enough to make the next Sprint, but he may not.
At the end of a sprint, if a PBI has not been completed and therefore cannot be marked as done:
- Update the Effort to be just what is remaining
- If there has been scope creep, but the original Acceptance Criteria has been met, it might be a good opportunity to mark it as done and move any scope creep tasks into a V2 of the PBI, which can then be prioritised in the backlog by the Product Owner
Having a rejected Sprint is so rare that you should be hard pushed to find any team that has had one.
If you do then this highlights an underlying communication issue and most likely a lack of participation by the product owner.
If however you do get a failed sprint and the Product Owner is not willing to accept the code that has been written then you need to rollback your source code and put all the Stories back onto the backlog.
Every now and then your clients are going to want to change their priorities and have you work on something which they see as more important than some of the items in your current sprint. Provided that it doesn't have any negative effects overall, there isn't any reason why you can't stick to the "customer is always right" philosophy.
So what will you do when this happens?
- Double check that this new item is more important than the current sprint items (if not add it to the product backlog instead)
- Add the new PBI to the current sprint
- Remove another item of similar size off the sprint and back to the backlog
In the rare case where the entire sprint goal and all PBIs are no longer high priority, you can instead cancel the entire sprint and start again:
- Move any left over work/items to the backlog.
- Send a debrief to the client with a note e.g. As per your request we have just cancelled Sprint five and will start on Sprint six. The remaining items have been moved into the backlog.
- Send a Sprint Forecast for the new sprint
This should only be done in extreme circumstances as it is traumatic to the team.
Team members should always know in what task they are working on and make sure Azure DevOps (was TFS) is up-to-date.
It’s natural that everyone spends some time on grooming, making decisions etc, so it’s not expected that all team members work 8 hours per day on tasks. However, ideally everyone should be doing as many hours as possible.
If they are doing something for the team that is not a team meeting or for a task assigned to them that will take more than 30 minutes, they should create a new task with an accurate original and remaining estimates. When helping somebody else with a task, the team member should create a new subtask to that task to cover their help.
To always know the task you are working on is very important for the Burndown accuracy and also make it easy to check what work has been done and what are the impediments.
Exercise – Click Click Scrum
This exercise uses the VS2010 planning poker deck of cards & TFS
Separate out the cards
Separate out these as Chance CardsFigure: Chance cards Separate out these as Point Cards Figure: Point cards
Sprint Planning (What): 20 minutes Sprint Planning (How): 20 minutes Each Day: 10 minutes ( x 9 days = 90 minutes) Review: 20 minutes Retro: 20 minutes
Total for 1 complete Sprint: 170 minutes (~3 hours)
Sprint Planning Meeting (What)
- The trainer acts as PO and gives PBIs & prioritises them
- Students clarify the requirements of the PBIs (Details, Acceptance Criteria)
- Students do Planning Poker to Estimate
- Students break PBIs into tasks
- Students put estimates on each task (typical times for work in a day e.g 4 hours, 8 hours)
Each Day in the sprint
- Get the students “Click-Click” their fingers instead of doing actual coding
- The trainer deals one or two cards from the Chance Cards
- The trainer looks up the meaning of the cards (see table below) and the trainer makes up a suitable PBI that fits the card and the work the students are doing
- The students add or change work items based on the scenario of the Chance cards
- The team reduces the remaining hours on their assigned tasks, with the assumption that each student works 8 hours
- Do the Daily Scrum (describing their day based on the work they just updated in TFS)
NOTE: It is OK to really code rather than use “Click-Click” development as long as TFS is updated.
The Review Meeting
The PO reviews the work of the team (Note: if all the work was “Click-Click” then review the TFS work items to check that they are entered OK).
Students and PO do a standard Scrum retro for the exercise.
Meaning of the Chance Cards
- Draw a point card
- Add the value to the remaining hours of a task
- Record the impediment
- Draw a point card
- Add a new task
- Set the remaining hours of a task to the value
- Draw a point card
- Create a bug
- Add a task to the bug
- Set the remaining hours on the task to the value
- Halve the remaining hours on a task
- Draw a point card
- Create a new PBI
- Set the PBI points to the value
|| 100 | Task blowout | |
- Double the remaining hours on a task
- Cancel all tasks
- Recycle the PBIs to the Product Backlog
Leaves** | The Team is missing a Team Member |
- Reduce the hours the team works by 8 hours
Leaves** | The Team is missing the Scrum Master |
- The team handles the missing SM
Leaves** | The Product Owner is missing |
- The team handles the missing PO
- The team handles the Stakeholders
Disrupting a team member can affect the delivery of the whole Sprint. Product Owners should always avoid giving tasks outside the Sprint. It may seem to affect just one member, but it does affect the entire project.
With Scrum, the team commits to deliver some set of functionality by the end of each sprint and the whole team is accountable for what they engaged to deliver. Missing a team member, even if temporarily can affect the success of the Sprint, the Scrum Master may recommend removing stories to be delivered. Product Owners must be aware of how Scrum works and understand the importance of keeping the team focused on their tasks.
Team members need to be completely transparent with the Product Owner, the Scrum Master, and the rest of the team. Even if someone offers them a free trip to Iceland, they still need to ask permission from the Product Owner as it can affect the Sprint.
Although the team will always strive to complete all the items on the sprint backlog within the sprint, it’s not uncommon for them to not finish all of them. If this is the case, you want to at least make sure that the PO's (Product Owner)’s most important items are done.
Whenever you are choosing your next task, always work from the top down, only skipping items if there is a dependency or another good reason why a lower item needs to be done first.
If a product owner sends an email to the development team with a request, that email should be turned into an Azure DevOps Work Item before any work is started or the work is prioritized on the backlog.
If the email's contents or subject do not need changing, then no response email is required. This would create another unnecessary email in the world.
However, if the subject is unclear, send a response as per the rules Do you know when you should change a subject? and Do you realize the importance of a good email Subject?
If the request from the client is too large for one Work Item, then it will need to be turned into multiple Work Items as per the rule Do you keep your PBIs smaller than 2 days' effort? In this case, you will need to let the client know this and include URLs to each Work Item.
Note: Once you've moved the email into Azure DevOps as a work item, you should delete the original email from your inbox or move it to an Outlook folder called "Moved to Azure DevOps" to avoid duplication.
In Scrum, it's important to flesh out the details of a PBI when it makes sense to do so.
You should estimate your PBIs as soon as you can, but you don't need to break all of your PBIs down into fully-estimated tasks as soon as they're added to the backlog.
However, before starting work on a sprint you should always break the PBIs in that sprint into estimated tasks.
Team Foundation Server uses the remaining hours assigned to Tasks to calculate the burndown. By breaking the PBIs down into tasks with estimates, your burndown will start looking correct right from the first day of the sprint.
Figure: Bad Example - The tasks weren't estimated at the start of the sprint
Figure: Good Example - The tasks were estimated from day one
As part of the update to the Scrum Guide for 2013, there is a concept of a product backlog being "Ready".
Just like how the team has a Definition of Done as a checklist for completing a PBI, the product owner needs a Definition of Ready to get the PBI in a state that’s ready for it to be added to a sprint. This should be done as part of the refinement (aka grooming) process and will greatly streamline the sprint planning meeting.
A recommended “Definition of Ready” would be:
- Has enough detail for the team to action (usually via good Acceptance Criteria)
- Has Business Value assigned
- Has effort assigned
- Is in the Approved state
The lifecycle of a PBI can be broken down into 3 steps:
- Take the next PBI that was approved by the Product Owner
- Is the PBI ready? Check your PBI against your Definition of Ready. "Ready" PBIs must have Acceptance Criteria. A good Definition of Ready also encourages a test-first mentality in requirements e.g. Use Spec Flow (Given, When, Then) and/or create Test Cases and Test Steps first.
- Attach and copy the Product Owner's email into the Acceptance Criteria (as per Do you attach and copy emails to the PBI?).
- Email notification to the Product Owner - use the @ mention rule
- Break down your PBI into tasks.
- Don't forget to make a task for testing! (So that it is visible in the task board). Note: You can also customize the kanban board by adding a new column for testing, but we recommend adding a testing task to the PBI instead.
- From the PBI, create a new branch (so that your work is automatically tagged to the PBI)
- On the Kanban Board, move your Task into "In Progress"
- Checkout your new branch and start coding!
- Code, code, code… (Red, Green, Refactor)
- Push your changes, open a Pull Request
- If you want feedback early, record a Done Video. E.g. Snagit
Is the PBI "Done"? Check your Definition of Done, and then:
- Open a Pull Request
- Get another engineer in your team to do an "over the shoulder" check of the code
- Use Microsoft's "Test and Feedback" Chrome extension to test the app
- Make changes based on feedback (and then get more feedback)
- Complete the Pull Request! Merge changes to master, this automatically deploys (to either Test, Staging or Prod based on process maturity)
- Email notification to the Product Owner – send a Done Email (reply to the original). Big items should have a Done Video
- Check the Acceptance Criteria for notes about email attachments (as per Do you attach emails to the PBI?).
Congrats. Your PBI is now ready to be demonstrated during your Sprint Review! (Note: This is also the same process you follow for a Bug work item)
Having a clear Definition of Done for your team is critical to your success and quality management in Scrum.
Every team is different, but all need to agree on which items are in their "Definition of Done".
There are 3 levels of 'Done' in communication
- Sending a "Done" email
- Sending a "Done" email
- Sending a "Done" email
- Recording a quick and dirty "Done Video"
- Code (showing a full scenario e.g. a user story)
There are 8 levels of 'Done' in software quality
Start with these examples showing typical "Definitions of Done" from beginner teams to more mature teams:
Team - Level 1
- The code compiles
- All tasks are updated and closed
- No high priority defects/bugs are on that user story
Team - Level 2
- All of the above, plus
- All unit tests passed
- Greater than 1% code coverage (not earth shattering, but you need to start somewhere)
Team - Level 3
- All of the above, plus
- Successful build on the Build Server
- Git Branch Policies
Azure DevOps Check in Policy - Change set Comments Policy (all check-ins must have a comment)
- Azure DevOps Check in Policy - Work Items (all check-ins must be associated with a work item)
- Code reviewed by one other team member (e.g. Checked by Bill)
- Sending a Done email with screenshots
Team - Level 4
- All of the above, plus
- All acceptance criteria have been met
- All acceptance criteria have an associated test passing (aka. Automated functional testing with Web Tests (Selenium), Coded UI Tests, or Telerik Tests)
- Tip: Use Microsoft | Test Manager
- Sending a Done email (with video recording using SnagIt)
Figure: Good example - Done video showing the features worked on
Team - Level 5
- All of the above, plus
- Deployed to UAT (ideally using Continuous Deployment)
- Complex code is documented (removing technical debt)
- Product Owner acceptance
Team - Level 6
- All of the above, plus
- Multiple environments automatically tested using Lab Management
Team - Level 7
- All of the above, plus
- Automated Load Testing
- Continuous Deployment
Team - Level 8 (Gold)
- All of the above, plus
- Deployed to Production
Congratulations! You are frequently deploying to production. This is called “Continuous Delivery” and allows you to gather quick feedback from your end users.
You might have everything deployed to production, but it might not yet be visible to the end user. This can be achieved by having “Feature toggles” in place. The actual release of the functionality is a decision that the Product Owner and business takes.
When you've finished a PBI you should record a video to send to your Product Owner and anyone else that is interested. A 'Done' video is much better than a screenshot because you are proving the PBI workflow actually works. Even better, this video can double as documentation or release notes for your users.
When deciding whether a PBI might be a good contender to record a done video for, consider these factors:
- Is it a key piece of functionality that has high business value?
- Would it be difficult to quickly demo in the Sprint Review without a video?
- Is it UI heavy? i.e. would the video be compelling?
- Solo "Done Video" – Camtasia
- Remote person – Zoom or Teams (bitrate is low – the sound is not as good as Camtasia)
- Edit the Video – Camtasia or Adobe Premiere Pro
Here's a quick video describing how to record and edit a quick done video. (Notice how it itself is also in the done video format?)
Figure: How to make a 'Done Video' ** **
**For a great 'Done Video' here are the key things to remember:**
- Start with “Hi everyone, today I would like to show you xxxx”
- Don't just demonstrate your new feature, start by showing the problem you are solving and the pain of why you needed to add the feature
- Record it in one take. It doesn't matter if you stuff up or something goes wrong, treat it like you're having a conversation with them in the room. If it's super bad, just start again.
- It's supposed to be quick and easy to make. If you spend too much time, you will be less likely to want to do it again in the future.
- Be quick and concise, you don't want to waste other peoples' time either!
- In your browser, remember to hide visible bookmark bars, browser tabs, add-in icons, and taskbar items to make it easier to view.
- In your browser, such as Chrome then you should first zoom to 125% ideally.
See Rule: Do you always zoom in when using a projector? (or in this case before the recording a 'Done' video)
- Set your screen resolution to 1080p (1920x1080).
- Use Camtasia to record your screen and webcam (PC and Mac). For Mac you can use Quicktime but it’s not as flexible.
- Don't edit the video, Don't edit the video, just include your face at the beginning and end, using the fading functionality. Tip: If you are using Zoom you do not need to edit the video. Zoom includes your face automatically in the screen capture. Awesome!
- Do not use headphone and mic combo sets as these are not as good as your webcam's microphone
Remember : smile at the beginning and end of the video!
Tip: Some offices have a professional setup. E.g. SSW have the Marantz Turret hardware and desktop recording kit. The Turret is an ideal device to record these videos as it has a professional podcasting microphone, built-in light and good quality High Definition video camera.
Learn more about the Turret:Product Review: The Marantz Turret — Wistia
Camtasia - Let's look at an example by Ben Cull
E.g. SSW TimePRO - Power BI Ad-Hoc Reporting:
Figure: A real example of a 'Done Video' with Fades
Tip: Fix the audio before making any cuts to the video
After recording your video, you need to do some basic sound processing to make the audio awesome. * In the Timeline, select the clip with the audio * On the top left panel, click ‘Audio Effects’ and drag the ‘Levelling’ effect onto your clip * On the timeline, move the new audio meter up just until the audio waveform is about to hit the top * Listen and adjust as necessary
Tip: Camtasia 9 - How to fade-out and fade-in the video track of your face in Camtasia 9
1. With the video track of your face selected, click on **Animations (1)** . Track 3 in the image below. 2. Select the **No Opacity (2)** animation effect for the fade-out. 3. **Drag and drop the No Opacity effect (3)** to the point in the track where you want to fade-out. Adjust the start and end point of the fade using the handles on the animation arrow. 4. Select the **Full Opacity (4)** animation effect for fade-in. 5. **Drag and drop the Full Opacity effect (5)** to the point in the track where you want to fade-in. Adjust the start and end point of the fade using the handles on the animation arrow.
Final Step – Export your video
Follow the steps to export your video:
1. Click the Share button on the top right of the window
2. In the new dialog, select custom production settings
3. In the next window, uncheck the ‘Produce with controller’ option
4. In the ‘Video settings’ tab, copy these settings:
- Frame Rate: 30
- H.264 Profile: High
- Encoding mode: Quality o Increase the quality to 100%
5. In the ‘Audio settings’ tab, make sure the Bit rate is set to 320 kbps
6. Click Next and save your file!
Often bugs are hard to reproduce because they are inconsistently described, and people forget to say what they expected to see. To increase consistency of bug reporting - it's a great idea to add templates for work items in Azure DevOps. It guides people into the pit of success as it helps them fill in all the required info in a clear and concise manner – then you will never see unclear steps to repro a bug again.
Often bugs are hard to reproduce because they are inconsistently described, and people forget to say what they expected to see. To increase consistency of bug reporting - it’s a great idea to add templates for work items in Azure DevOps. It guides people into the pit of success as it helps them fill in all the required info in a clear and concise manner – then you will never see unclear steps to repro a bug again.
Figure: Bad Example – This new bug template doesn’t make it obvious how the team likes their steps to repro
Figure: Good Example – This new bug template guides the user to fill in the steps to repro in an ordered list and even prompts them to fill in what they expected to happen (and what actually happened)
Setting this up is pretty easy.
- First you need to customise the template for a work item type Figure: Customising a bug work item
Choose the form control to edit
Figure: Customising a bug work item form
- Choose the form control to edit Figure: Set the default value for the Repro Steps field (tip: use HTML)
- Save Template
<ol><li>First I did this</li><li>Then I did this</li></ol><div><b>Expected Result</b></div><div>I expected it to save properly</div><div><b><br></b></div><div><b>Actual Result</b></div><div>I got an exception (tip: you can copy/paste screenshots)
When the Product Owner verbally requests a change to a PBI, how do you update the PBI to reflect the change and also keep track of the conversation?
You could send yourself a "To Myself" email and update the PBI description accordingly, but only those people included in the email chain are aware of the conversation.
Instead, what you should do is use the discussions feature in the PBI and mention the user using "@<username>".The benefits of using comments are:
- Quick and easy, no need to compose an email
- History is visible to anyone looking at the PBI (with email, if you don’t cc them, they wouldn’t have a clue)
- Easy to see all important notes/comments in one place instead of digging through email
When someone (especially the PO) asks you to fix a PBI, mention that person in the PBI comments so he knows when it’s fixed.
Example: When replying to "Hey XXX, can you please fix PBI 123?"
Bad example: "I have found the PBI and moved it near the top of our backlog"
Good example: "I have found the PBI, prioritized it near the top, and @mentioned you so you know when it is fixed"
Azure DevOps PBIs
Tip: You can @mention on your pull requests as well.
When discussing a PBI/Issue, Pull Request, or a project in general, it is important to do it in the right place.
Sometimes developers need to discuss code implementations - sometimes to improve the code, other times to explain why something was done a certain way.
This should be done in the Pull Request, if possible comment directly on the line of the code change and once resolved, make sure that the important information is captured in the merge's commit description.
For a new PBI/Issue
As perDo you know when you use @ mentions in a PBI? - Create a new issue mentioning the Product Owner and the related people
For an existing PBI/Issue
Discuss it in the existing PBI/Issue.
For other topics (brainstorm ideas, general discussion, etc.)
Create a PBI/Issue
- use a "discussion" label so that others know that it is just a discussion point and not actionable work yet
- have it checked by the client before publishing it (recommended)
- Discuss it in the discussion tab in GitHub
- In the team channel in Teams
In summary, Email should be the last resort.
Emojis in meeting names makes it easier for people to quickly workout what type of meeting is coming up. It even can make the important meetings stand out.
An easy and fun way to have more fun with Scrum is to use Emojis in your channel names (using Windows Key + .)!
Check out https://www.scrumoji.org/ for the full list.
Figure: Bad Example - The Sprint Review is an important meeting but doesn't stand out in my calendar
Figure: Good Example - The Daily Scrum and Sprint Review stand out and I will definitely not forget to attend
When selecting their tasks, team members should be looking to extend their skills. Scrum encourages multi-skilled workers, rather than having testers, back-end developers, designers etc. In other words, all team members should be able to help completing any task.
This does not imply that everyone is a guru in everything; no doubt some people are especially skilled in a specific area, but team members work together and should be learning new skills from each other.
During task generation and estimation in Sprint Planning, choose something new and ask someone experienced in that area to have a subtask to help you.
This is to make the team multi-skilled and reduce dependencies on individuals.
Sometimes it can be unclear to The Scrum Team whether a PBI can be completed as required. For example the PBI "automatically package with Wise after the automatic build" requires investigation and experimentation to see if this is possible and to provide a meaningful estimate for the original.Figure: Schedule time to dig a little deeper. There's always another layer to uncover
How is experimentation done? In Agile software development, when you have an unknown, you do a spike PBI. A spike is a time boxed investigation with the output being the answer to an experiment or investigation and the resolution of an estimate for the original PBI.
It is then best to write a new PBI “Investigate whether it is possible to automatically build with Wise”. This PBI can be more accurately estimated and the result will allow the original PBI to be estimated or revised.
To embark on the original PBI when it is inestimable would be irresponsible and leave The Team with a potentially impossible PBI and the risk of a failed sprint.
All investigating PBIs must be timeboxed, otherwise the process of investigation can meander and never come to a conclusion.
Note: This gives you work for future Sprints
Tip: There is a further benefit of tagging 'spike' tasks with a consistent label. If your company takes up R & D tax incentives, then you need to be able to query for activities that were 'of an experimental nature'. In Australia this is a 15% credit on each dollar you spend on a developer.
Working together as a team is hard. Especially with the distractions that are around as part of daily office life. You need all three partied to a Scrum Team, the Product Owner, the Scrum Master, and the Team, to work together to achieve the Sprint Goal.
"Scrum defines three distinct roles that must work together as a Scrum team to produce a successful product. The Product Owner is responsible for understanding what stakeholders require, interpreting these requirements for the team, and providing clear prioritized direction. The team is composed of those people actively engaged in building the product. The team collectively and members individually are responsible for building the product according to the priorities and requirements provided by the product owner. The team is completely responsible for deciding how to achieve its goals and how to organize its work. Finally, the Scrum Master is responsible for the health of the process, reporting the progress of the team, and removing impediments to progress."
With these roles come a number of promises between the three parties, the Product Owner, the Scrum Master, and the Team. These promises should be formalized so that everyone knows where they stand.
OK you say you do Scrum, but do you use the "Business Value" field?
That's OK, most teams don't... but it is a terrible shame, because developers go to the trouble of estimating 'Effort' and if you have Effort, all you need is Business Value and you can calculate ROI.
Once you have ROI a Product Owner can use the ROI field to sort priority. Awesome.
ROI (Return on Investment) is an unbelievably simply calculation.
ROI = Business Value / Effort
...of course there are other factors to consider.
E.g. Risk, Dependencies etc and you could make the formula more complicated....
Priority = (Positive Value - Negative Value) + Risk + Dependencies / Effort
...but don't bother.
The product backlog is just a list of items with rough estimates of both development 'Effort' and 'Business Value'. You will find that ROI will tell you great stuff. It is especially useful for finding the easy high value items to kick off a sprint.
Product Owners are too busy for this
If it is good enough for developers to estimate story points... then it is good enough for the Business to estimate Business Value. Usually devs will use the Fibonacci sequence, but since it is a good idea that the business guys use the same scale, it is best to switch to the doubling method of estimating - Do you know how to size user stories effectively?
For example, if the "add rich text box" and "add sortable column headings on the grid" have the same business value of 3, the one with the smallest development effort will have higher priority (the ROI is greater).
In summary, the simple calculated field ROI, can automatically order the backlog tasks for the Product Owner, makes estimating Business Value just good sense.
Note: For co-located teams only.
The scrum team needs a place to gather for all the scrum ceremonies. This room should have useful information on the wall to help the team work more efficiently. We recommend having the following:
- Task Board (to show current work in progress)
- The 8 Steps to Scrum PDF (to show how we work)
- The 3 Steps to a PBI PDF (to know the lifecycle of a PBI)
- Product Roadmap (to let everyone know the large future priorities)
- Definition of Done - aka Done Criteria or DoD (the quality that is being adhered to)
Bad Example – No Product Roadmap is on the wall, so people can be out of sync with the future plans of the Product Owner
Good Example – The Product Roadmap is visible at a glance
Having an electronic task board makes it easy for developers to keep track of tasks.
These are the columns (aka swim lanes) you need:
Near your task board, stick an SSW "Want to submit a User Story?"
- Where to find their project portal
- Who to contact with questions
- How to add tasks to the task board
Print out this PDF and fill in the 2 fields and stick it on own task board.
This is a very common question asked of teams using Scrum. The answer can depend on a lot of things, such as:
- How big is the bug?
- Can it be fixed right now?
- How important is quality to the product?
- Are there dedicated testers as part of the team?
Regardless of your answers, there are basically two types of bugs: those found in code currently being developed (in-Sprint) and those found in code previously thought done (out-of-Sprint).
For stories that are currently in progress, here are some guidelines:
Typically you want to fix all bugs discovered during the sprint or else they could impact the team’s ability to achieve its Sprint goal:
- If it’s a small bug (< 1 hour to fix) and won’t impact the burndown, then just fix it
- If it’s a larger bug (> 1 hour to fix) and won’t impact the ability to achieve the Sprint goal, then create a Bug work item, associate a Task and have a team member perform the fix during the Sprint
- If it’s a larger bug (> 1 hour to fix) and will impact the ability to achieve the Sprint goal, then create a Bug work item to be prioritized (by the Product Owner) and to be fixed in a later Sprint; you may not be able to achieve your Sprint goal
- If another team member finds the bug, then they should create a Bug work item and then the team decides if it can be fixed in the current Sprint or needs to be prioritized (by the Product Owner) to be fixed in a later Sprint, in which case you may not be able to achieve your Sprint goal The team decides how many hours “n” equals
For stories that the team had previously considered done, here are some guidelines:
- If the bug is not critical (i.e. a hotfix), then create a Bug work item to be prioritized and fixed in a later Sprint
- For a critical hotfix, do whatever needs to be done to get the fix into production, knowing that your current Sprint commitments may be impacted Adjust the team’s capacity accordingly, especially if lots of hotfixes start occurring. General tip: don’t create an associated task to fix a bug until the Sprint in which the team commits to fix it
See rule on Do you know how to handle Bugs on the Product Backlog? for how to work with bugs on your backlog.
Part of the Scrum Master's (not ScrumMaster's) role is to protect the team from distractions so they can deliver on their commitments, to ensure agreed process is followed and to help all roles keep their promises.
It is also important that team members do not allow themselves to get distracted and must work based on priority.
Here is a good saying to remember: "It is very important I complete my sprint. Can this wait 1 week until the next sprint?".
Any requests for work or distractions outside the scope of the project that take more than 15 minutes must be declined politely and the distraction notified to the Scrum Master, or, if the request comes from the Product Owner, it can be added as a new PBI as described in https://rules.ssw.com.au/are-you-flexible-with-the-order-you-do-the-work-(i-e-cancelling-a-sprint)
The only exceptions, where a Team Member can start the work before notifying the Scrum Master are:
- Any critical production issues that absolutely requires the attention of the Team Member and nobody else is available
- A client request for work when the Team Member is working on an internal project
- Test please requests, if the total time taken from the Sprint for all Test Please requests is less than 8 hours
In these 3 exceptional cases only, even if the Team Member doesn't get a response from the Scrum Master, the requestor can insist that the member starts the other work immediately.
For details on promises, see the rule “Do you understand the implied contract (promises) between Members of the Scrum Team?”
The role of the PBI Owner is like a mini project manager. The PBI Owner resolves any road blocks, performs the “Test Please” and makes sure there is a good presentation at the Review Meeting. In addition having a PBI Owner makes it easy for Product Owners and others to talk to the right person.
There are five things that the story owner is responsible for:
- Manage / Own the story and its sub tasks
- Make sure a “Test Please” is conducted (or that their story is included in one)
- Make every effort to show the story to the Product Owner before the Sprint Review (aka a corridor conversation)
- Prepare for the Sprint Review. Make sure he ready for the review. Have a scribe, have a demo plan/script and get the story accepted quickly.
- Present the completed Story at the Sprint Review
Note: Make sure you are ready for the review. Have a scribe and how you are demoing worked out before hand.
The objective of the Review meeting is to have the story accepted quickly.
Pure Scrum dictates that the Scrum Master could be one of the developers on the team, but we find this is hard for a developer as he will be split between trying to do the work himself, while also ensuring that the Team still uses Scrum properly.
We find that a better option is to use a separate Scrum Master so his only responsibility on the project is to ensure Scrum is used well and the Product Owner is informed of any developments.
We all know that a visual image can make a complex process easy to understand. Having a visual image of the Scrum process helps everyone, including the product owner and interested stakeholders, understand the process and make sure the steps are being followed.
Here is an image for your war room wall...
Bugs that are introduced and found because of the current work in the Sprint are included in the Sprint and estimated immediately so the burndown remains accurate. All other bugs found independent of the work on the current sprint are placed on the Product Backlog.
See Do you know when to create bugs? for detailed information on identifying when something is a bug, and when to just fix it.
Using the Agile process template
In the Agile template, you can't assign Story Points to bugs, meaning that they will negatively impact on sprint velocity.
Bugs found that are independent of the work on the current Sprint are placed on the Product Backlog as a work item “Bug”. The product Owner then ranks the Bugs with priority amongst the User Stories. Bugs cannot have Story Points allocated to them so User Stories need to be created with Bugs as Child Work Items. This is only done when the PO has prioritized the Bug and the Bug is likely to make the next Sprint. At the Planning Meeting, the PO elects which Bugs are to be included and new User Stories are created to group them appropriately with due regard to Severity and Stack Rank. Once the User Stories have been created, The Team estimates the Story Points for each one; the Product confirms User Stack Rank and the Sprint Backlog is planned as normal.
- Works around the problem of Bugs not having Story Points
- Allows Bugs of the same rank to be sensibly grouped together
- Prevents arbitrary groupings of Bugs which cannot be properly ranked
- Follows the estimate just-in-time philosophy of Scrum
- Prevents small Bugs taking up a whole Story Point
Using the Scrum process template
In the Visual Studio Scrum template, bugs are just another PBI and you can assign a business priority and an effort estimate in Story Points. Bugs that make the cut for the next sprint can be broken down into tasks and estimated as required.
As bugs from previous sprints are just PBI’s, the PO agrees to a list of bugs that will be fixed in the current Sprint.
The team just fixes any new bugs they introduced in the current sprint.
If the team finds bugs due to functionality accepted in a previous sprint they log it as a PBI and will complete the fix in a future sprint, unless it is a critical bug, in which case they raise it as an impediment to the current sprint to the PO.
- Small bug – Text on a label is spelled incorrectly
- Big bug - There is an error thrown when transitioning from page 1 to page 2 when you hold down the Ctrl key
The Visual Studio team provides good guidance on managing bugs in VSTS
A product backlog is a great way to see the fairly small broken up PBIs (Product Backlog Items) that make up your team's to do list but it can be a bit too zoomed in.
To get a better zoomed out look, you should have a product roadmap. This could be using Azure DevOps Features or Epics, sometimes also known as MMFs (Minimum Marketable Features), but the concept is the same...
DevOps and Scrum compliment each other very well. Scrum is about inspecting and adapting with the help of the Scrum ceremonies (Standup, Review, Planning and Retro). With DevOps it's all about Building, Measuring and Improving with the help of tools and automation.
With DevOps, we add tools to help us automate slow process like build and deployment then add metrics to give us numbers to help quantify our processes. Then we gather the metrics and figure out what can be done to improve.
For example with Exception Handling, you may be using a tool like Raygun.io or Elmah and have 100s of errors logged in them. So what do you do with these errors? You can:
- Add each one to your backlog
- Add a task to each sprint to "Get exceptions to 0"
The problem with the above is that not all exceptions are equal, and most of the time they are not more important than the planned PBIs being worked on. No developers like working a whole sprint just looking at exceptions. What should happen is:
- Have the exceptions visible in your development process (i.e. using Slack, adding as something to check before Sprint Planning)
- Triage the exceptions, either add them to the backlog if they are urgent and important
- Add ignore filters to the exception logging tool to ignore errors you don't care about (e.g. 404s)
- Prioritize the exceptions on the backlog
The goal here is to make sure you're not missing important and to reduce the noise. You want these tools to help support your efforts and make your more productive and not just be another time sink.
DevOps (Developers and IT Operations) is a phrase used to describe the relationship and/or communication between Developers and IT Operations.
A DevOps checklist is a simple document that allows development teams to note all of the tasks related to monitoring and application life cycle along with their quality metrics and place them into one of three categories:
- Always Tasks Always Tasks are tasks that should be performed before the start of a new PBI.
- Daily Tasks Tasks that are performed at the start of each day.
- End of Sprint Tasks Tasks that are performed at the end of each sprint.
Basic Action / Task Format
Actions or Tasks follow a basic format of: Action / Task Name | Where the task can be performed | Quality Metric
Figure: Good Example of a Basic Action Table format
Sometimes your team will work on a PBI, finish it in the sprint, and receive feedback about changes or extensions that weren't originally asked for in the Acceptance Criteria.
Bad Example: Unlimited new tasks get added to that PBI so it takes multiple sprints to finish
Good Example: A new PBI is added to the backlog called "<original PBI name> v2". If this then happens again, a v3 is created, and so on
This has the added bonus of allowing the Product Owner to see, at a glance, how many rounds of feedback he's given to the team on each PBI.
Before starting any work, you should ensure developers take a look at your Application Insights data to make sure everything is performing correctly.
Most developers check only this first item before starting their work:
- Check Unit Tests are Green
Figure: Tests are green. I'm ready to start work... or am I?
More advanced teams check their application insights data as well. This includes:
- Look for any new Unhandled Exceptions
Figure: Unhandled Exceptions - Is there anything you don't know about here?
- Look for any obvious performance issues (Server then client).
Figure: Performance - The Server Responses tab shows the slowest running pages.
Gated checkins are used to stop developers from checking in bad code and breaking the build.
This does not contribute to high functioning teams, and instead masks, or even creates dysfunction.
In the retro the team decides to turn gated checkins on because Jonny and Sue keep breaking the build.
The build doesn’t get broken any more, because Jonny and Sue now have to fix their code before they check it in.
This doesn’t mean that Jonny and Sue are writing better code, it just means that they are not checking in code that breaks the build.
Gated checkins will not improve their skill level, change their attitude or improve the quality of their code.
The development ninjas on the team are proud of their code, and check in several times per day. Because the gated checkin takes 10 minutes their workflow is impacted.
They resent Jonny and Sue for having to work this way.
Gated Checkins mask the dysfunction on the team, and introduce impediments to the high performers.
Bad Example – Gated Checkins mask dysfunction
In the retro the team discusses the fact that the build is often broken. After a round table discussion about becoming better programmers and building better quality software, the team decides to the following guidelines:
- The team will all run build notifications so that everyone knows when, and by whom the build is broken.
- If someone needs help with solving a problem, they are going to feel good about asking for help early, and learning something new in the answer.
- If someone is asked for help, they will gladly share their knowledge to ensure that the quality of the project is maintained ,and the team help each other to become better developers.
- Before checking in, the devs will compile and run all tests. **
- If someone checks in and does break the build, they will call out to all members of the team that the build is broken so that no-one gets latest. They will fix the build IMMEDIATELY, and then call out again when it is fixed. (Some teams have a rule that if you break the build three times you have to shout coffee / lunch).
- The team agrees that you don’t go home if the build isn’t green. If it comes to the end of the day and you are not sure your code will not break the build – do not checkin. Create a shelveset and resolve the issue properly the next day.
If you have checked in, the build is broken, and you cannot fix it before going home, you must email all devs on the team, and the product owner with an explanation.
- The status of the build is reviewed in every daily scrum.
Good Example – The whole team should be constantly aware and invested in the status of the build, the quality of the software and in encouraging each other to better developers.** I actually don’t follow this rule when working on small teams of awesome devs, who write code against tests and checkin frequently.
Instead I encourage the process to be:
- checkin 4-5 times a day
- write lots of tests
- if the tests that you are working against pass- checkin and let the build server do a full compile and run all the tests
- if you have broken the build, call it out, fix it immediately and then call it out again.
This is the most productive way for small teams of awesome developers to produce great code… and it's fun !