Introduction
As detailed in the development model document, this project was initially divided into seven sprints, spanning a total of twelve weeks. It was divided into two milestones of four and eight weeks respectively.
The first milestone was divided into two two-week sprints and had a goal of completing planning documentation as well as the plug-in tracer prototype. This milestone was moderately successful, with some prototype work overhanging into the production milestone. This overhang continued to have an impact to the project timeline all the way until the final sprint. The client reviewed the prototype once completed and was happy with the general user interface and approach to that point.
The second milestone spanned 8 weeks and was divided into three two-week production sprints and two one-week hardening sprints. The goal of this milestone was to take the Twitch plug-in from prototype to completion while also assessing the viability of the Twitch game stretch goal. Unfortunately, by the time the Twitch plug-in development was completed, there was no remaining time for the stretch-goal. The client and I may still agree to work on this in the future, but it will be excluded from the scope of this specific project.
Implementation
Each of the following sprint reports was completed within a day or two of a sprint ending. The goal of these reports was to analyze progress so far, measure velocity, and roughly predict when I would complete the project.
Each report contains the following information:
- The Epics that were pulled in, including their initial high-level estimates (noted as HLE going forward), a post-task breakdown revised estimate, and how much overhang was remaining at the end of the sprint.
- The sprint’s actual velocity in points.
- A timeline predicting the project completion date based on updated estimates and velocity, compared to the original planned completion date.
- A summary of what happened in the sprint, the client’s review feedback, the remaining overhang items and impacts to the project.
Sprint 1 (Prototyping): (June 18 – July 1)
This is the first prototype sprint of the project. Given that this was the first sprint of the project, I just pulled in the number of tasks I thought I could get through in a two-week period. My estimates were fairly accurate with only a small amount of overhang (detailed below).
Two epics were tackled in this sprint: the donations config (which includes set up of a lot of foundational server-side logic) and the donation timer impacts, which is one of the systems that relies on the configuration page being done.
Start of sprint task breakdowns kept overall points in line with original HLEs. The donations config epic tasks exceeded the original epic’s HLE by 2 points, but the tasks came in slightly under for the donation timer impacts epic.
Between overhang and remaining high-level estimates, there is 29 points remaining in the prototype. My current velocity is 18 points per sprint, so I expect the prototype will carry into the third sprint. Prototyping was intended to be completed during the first two sprints of the project, so this is slightly later than originally anticipated and will delay production. Overall, I am trending about two weeks behind where I wanted to be.
There wasn’t much to review with the client this sprint, but we discussed progress and reviewed upcoming priorities and challenges.
Epics in Sprint and Task Breakdowns
Epic: Donations config (prototype) | HLE | |
Pre-sprint HLE | 13 | |
Start of sprint HLE (post-task breakdown) | 15 | |
End of sprint remaining HLE | 2 | |
Task Breakdown | Plan Estimate | Overhang |
Server: Setup socket server | 5 | – |
Server: Setup message system | 3 | – |
Server: Setup file IO | 2 | – |
Server: Setup socket subscription management | 3 | 2 |
Front-end: Setup configuration page HTML form and CSS | 1 | – |
Front-end: Define IConfig class with server helpers | 1 | – |
Epic: Donation timer impacts (prototype) | HLE | |||
Pre-sprint HLE | 8 | |||
Start of sprint HLE (post-task breakdown) | 6 | |||
End of sprint remaining HLE | 1 | |||
Task Breakdown | Plan Estimate | Overhang | ||
Server: Setup timer and donation config data management | 3 | – | ||
Front-end: Create config class with form submit handlers for donation and timer fields | 2 | – | ||
Front-end: Add fake donation debug buttons to config | 1 | 1 | ||
Overhang
A total of 3 points of overhang will need to be carried over into next sprint.
- Server: Setup socket subscription management (2): The broadcasting system that the server uses to send events to clients needs to be finished.
- Front-end: Add fake donation debug buttons to config (1): this work hasn’t been started yet.
Velocity
Sprint | Points Completed |
1: Prototyping (June 18 – July 1) | 18 |
Avg (non-hardening): | 18 |
Remaining Timeline
Sprint 2 (Prototyping): (July 2 – July 15)
This is the second prototype sprint of the project. When pulling tasks into the sprint, I still based this on what I thought I could accomplish, to see how close my velocity would land to last sprint. I was able to complete slightly more than last sprint but was clearly too aggressive with what I brought into the sprint given the amount of overhang.
Four epics were tackled in this sprint. The overhang from the donations config and the donation timer impacts was completed. The countdown timer and donation stats tracker were also worked on – meaning all prototype-related epics are now complete or in progress.
Start of sprint task breakdowns decreased the overall point estimates slightly. The stream countdown timer epic tasks ended up being one point less than the original epic’s HLE, while the donation stats tracker estimates stayed the same.
Due to overhang, there is 8 points remaining in the prototype. My velocity for this sprint was 20, making my average velocity 19 points per sprint. This means I should easily be able to complete the remaining prototype work next sprint but will end up pushing out production work by an equal amount. Overall however, I was able to pull in the estimated final date by a few days due to the higher velocity this sprint.
Excluding the remaining overhang, I was able to review most of the prototype features with the client during this sprint. There were a few suggestions and clarifications for front-end visuals and how we will polish things as we bring them across the finish line. No major changes were required.
Epics in Sprint and Task Breakdowns
Epic: Donations config (prototype) | HLE | |
Pre-sprint HLE | 2 | |
Start of sprint HLE (post-task breakdown) | 2 | |
End of sprint remaining HLE | 0 | |
Task Breakdown | Plan Estimate | Overhang |
Server: Setup socket subscription management | 2 | – |
Epic: Donation timer impacts (prototype) | HLE | |
Pre-sprint HLE | 1 | |
Start of sprint HLE (post-task breakdown) | 1 | |
End of sprint remaining HLE | 0 | |
Task Breakdown | Plan Estimate | Overhang |
Front-end: Add fake donation debug buttons to config | 1 | – |
Epic: Stream countdown timer (prototype) | HLE | |
Pre-sprint HLE | 13 | |
Start of sprint HLE (post-task breakdown) | 12 | |
End of sprint remaining HLE | 5 | |
Task Breakdown | Plan Estimate | Overhang |
Server: Handle timer update messages | 4 | – |
Server: Handle timer start/stop messages | 3 | 3 |
Front-end: Setup timer page HTML and CSS | 1 | – |
Front-end: Create timer class with countdown logic and start/stop functions | 3 | 1 |
Front-end: Add timer start/stop buttons to config page and hook-up | 1 | 1 |
Epic: Donation stats tracker (prototype) | HLE | |||
Pre-sprint HLE | 13 | |||
Start of sprint HLE (post-task breakdown) | 13 | |||
End of sprint remaining HLE | 3 | |||
Task Breakdown | Plan Estimate | Overhang | ||
Server: Handle donation update messages | 5 | 1 | ||
Server: Setup donation message creator | 2 | 2 | ||
Server: Setup server-side donation handlers | 3 | – | ||
Front-end: Setup tracker page HTML and CSS | 1 | – | ||
Front-end: Create tracker class with logic to display proper text based on donation type | 2 | – | ||
Overhang
A total of 8 points of overhang will need to be carried over into next sprint.
- Server: Handle timer start/stop messages (3): This work hasn’t been started yet.
- Front-end: Create timer class with countdown logic and start/stop functions (1): didn’t finish the start/stop timer portion of this yet
- Front-end: Add timer start/stop buttons to config page and hook-up (1): This work hasn’t been started yet.
- Server: Handle donation update messages (1): Still have a bit of cleanup to do for these messages
- Server: Setup donation message creator (2): This work hasn’t been started yet.
Velocity
Velocity | Points Completed |
Sprint | Points Completed |
1: Prototyping (June 18 – July 1) | 18 |
2: Prototyping (July 2 – July 15) | 20 |
Avg (non-hardening): | 19 |
Remaining Timeline
Sprint 3 (Production): (July 16 – July 29)
This is the first production sprint of the project. However, the first portion of this sprint was still dedicated to wrapping up prototype work. When pulling tasks into the sprint, I based the point target on my average so far (19 points). However, I was able to wrap up my all 19 points of sprint items before the end of sprint, so I ended up pulling in one more item from the donation config epic.
Six epics were worked on in this sprint. The overhang from the prototyping work was all completed. The production tasks for the stream countdown timer, donation timer impacts, and donation stats tracker epics were all completed. The donation config epic still has tasks remaining (more info below).
Start of sprint task breakdowns increased the overall point estimates. The donation config epic originally had an estimated 5 points of work, however once I performed the task breakdown it was much higher (14 points). Of those 14 points, I was able to complete 6 this sprint (including the extra tasks I pulled in), so 8 will be remaining for next sprint. The remaining epic estimates were accurate after task breakdowns. This was unsurprising as they were mostly small epics or overhang.
There is no overhang from this sprint. My velocity for this sprint was 20, meaning my average velocity remains at 19 points per sprint. Although I was able to work ahead this sprint, this was largely offset by the increase in points for the donation config epic. As a result, the estimated project completion date has now been pushed out to September 18th. The reason this is such a large date increase for a small number of points is because we are now carrying production work through the second hardening sprint, which originally would have had 0 planned burndown.
Early in the sprint, the client and I performed the final review of the prototype and agreed that I could formally proceed into production work. We reviewed the production priorities for this sprint and next sprint. Some tasks were moved around but without any material impact.
Epics in Sprint and Task Breakdowns
Epic: Stream countdown timer (prototype) | HLE | |||
Pre-sprint HLE | 5 | |||
Start of sprint HLE (post-task breakdown) | 5 | |||
End of sprint remaining HLE | 0 | |||
Task Breakdown | Plan Estimate | Overhang | ||
Server: Handle timer start/stop messages | 3 | – | ||
Front-end: Create timer class with countdown logic and start/stop functions | 1 | – | ||
Front-end: Add timer start/stop buttons to config page and hook-up | 1 | – | ||
Epic: Donation stats tracker (prototype) | HLE | |
Pre-sprint HLE | 3 | |
Start of sprint HLE (post-task breakdown) | 3 | |
End of sprint remaining HLE | 0 | |
Task Breakdown | Plan Estimate | Overhang |
Server: Handle donation update messages | 1 | – |
Server: Setup donation message creator | 2 | – |
Epic: Stream countdown timer (production) | HLE | |
Pre-sprint HLE | 2 | |
Start of sprint HLE (post-task breakdown) | 2 | |
End of sprint remaining HLE | 0 | |
Task Breakdown | Plan Estimate | Overhang |
Front-end: Apply Extra-Life branding and fonts to timer | 1 | – |
Front-end: Review Look with user and sign-off | 1 | – |
Epic: Donation timer impacts (production) | HLE | |
Pre-sprint HLE | 2 | |
Start of sprint HLE (post-task breakdown) | 2 | |
End of sprint remaining HLE | 0 | |
Task Breakdown | Plan Estimate | Overhang |
Server: Setup message parsing from Twitch and Extra-Life events to determine amount of time added | 2 | – |
Epic: Donations config (production) | HLE | |
Pre-sprint HLE | 5 | |
Start of sprint HLE (post-task breakdown) | 6 | |
End of sprint remaining HLE | 0 | |
Task Breakdown | Plan Estimate | Overhang |
Front-end: Handle Twitch oAuth redirect and send data to server | 2 | – |
Server: Handle Twitch oAuth code and token requests | 3 | – |
Server: Handle Twitch oAuth messages, reconnects and keep-alives | 1 | – |
Epic: Donation stats tracker (production) | HLE | |
Pre-sprint HLE | 2 | |
Start of sprint HLE (post-task breakdown) | 2 | |
End of sprint remaining HLE | 0 | |
Task Breakdown | Plan Estimate | Overhang |
Front-end: Apply Extra-Life branding and fonts to timer | 1 | – |
Front-end: Review Look with user and sign-off | 1 | – |
Overhang
No overhang will be carried into next sprint.
Velocity
Sprint | Points Completed |
1: Prototyping (June 18 – July 1) | 18 |
2: Prototyping (July 2 – July 15) | 20 |
3: Production (July 16 – July 29) | 20 |
Avg (non-hardening): | 19 |
Remaining Timeline
Sprint 4 (Production): (July 30 – Aug 12)
This is the second production sprint of the project. When pulling tasks into the sprint, I based the point target on my average so far (19 points). This was accurate to the amount of work I was able to complete during this sprint.
Two epics were worked on in this sprint. The remaining tasks for the donations config production work were completed, and work was started on the donation announcements epic.
Start of sprint task breakdowns decreased the overall point estimates. The donation announcements epic ended up being smaller (16 points from 21) after task breakdown. 11 of these points were completed this sprint, and 5 are scheduled for the next sprint.
There is no overhang from this sprint. My velocity for this sprint was 19, meaning my average velocity remains at 19 points per sprint. Due to the decrease in points for the donation announcements epic, the estimated project completion date has now been pulled in to September 14th.
The next sprint is one of two hardening sprints scheduled for the project. During this hardening time, I will be aiming to address the following:
- Complete the donation announcements tasks
- Perform another user review on functionality so far (including the donation announcements functionality completed above)
- Address the following known bugs:
- Issue with socket server disconnecting from Twitch event sub server due to thinking the keep-alive messages have stopped (when they haven’t)
- Issue with timer automatically starting when timer page is loaded
- Lastly, I will aim to update existing documentation so far, and complete a first pass on the test plan for what has been implemented
The client and I reviewed progress so far, with only a couple small notes from the client to clarify typical Twitch authentication flows they have experienced with other applications. We also discussed my current concerns with the projected timeline landing mid-September. The client is ok with this new timeline, but if it ends up extending beyond October 1st, we will need to look at cutting some scope to have it done before then. We reviewed the goals for the upcoming hardening sprint and agreed to perform another user review during that time.
Epics in Sprint and Task Breakdowns
Epic: Donations config (production) | HLE | |
Pre-sprint HLE | 8 | |
Start of sprint HLE (post-task breakdown) | 8 | |
End of sprint remaining HLE | 0 | |
Task Breakdown | Plan Estimate | Overhang |
Server: Store user information in an input file instead of hardcoded (app client id, client secret, broadcaster id) | 2 | – |
Sever: Handle Event Sub notification subscriptions and message handling | 3 | – |
Server: Handle Extra-Life API calls and data processing | 2 | – |
Server: Connect Twitch Event Sub and Extra-Life API events with existing server infrastructure to properly trigger timer and donation config updates | 1 | – |
Epic: Donation announcements (production) | HLE | |||
Pre-sprint HLE | 16 | |||
Start of sprint HLE (post-task breakdown) | 11 | |||
End of sprint remaining HLE | 0 | |||
Task Breakdown | Plan Estimate | Overhang | ||
Server: repurpose Twitch event sub oAuth token for Twitch IRC chat server | 2 | – | ||
Server: handle mandatory chat server messages that need to be sent to server (custom pong, commands, nickname, join requests) | 5 | – | ||
Server: handle incoming chat server IRC messages | 3 | – | ||
Server: integrate Twitch-provided IRC message parser | 1 | – | ||
Overhang
No overhang will be carried into next sprint.
Velocity
Sprint | Points Completed |
1: Prototyping (June 18 – July 1) | 18 |
2: Prototyping (July 2 – July 15) | 20 |
3: Production (July 16 – July 29) | 20 |
4: Production (July 30 – Aug 12) | 19 |
Avg (non-hardening): | 19 |
Remaining Timeline
Sprint 5 (Hardening): (Aug 13 – Aug 19)
This is the first hardening sprint of the project. This sprint isn’t concerned with velocity, but is instead used to address bugs, check-in with the user, update documentation, and complete tasks if there is time remaining.
Specifically, the goals of this hardening sprint were to:
- Complete the donation announcements tasks.
- Perform another user review on functionality so far (including the donation announcements functionality completed above).
- Address the following known bugs:
- Issue with socket server disconnecting from Twitch event sub server due to thinking the keep-alive messages have stopped (when they haven’t).
- Issue with timer automatically starting when timer page is loaded.
- Lastly, I will aim to update existing documentation so far, and complete a first pass on the test plan for what has been implemented so far.
All of the above items were accomplished during this sprint. Hardening sprints aren’t added to overall velocity, so the project velocity remains at 19. Due to being able to burn down some tasks in this hardening sprint, I was also able to pull in the dates for the plug-in to September 3rd. Again, the reason why burning down these points had such a big impact is due to now landing production work before the second hardening sprint.
The client and I did another full walkthrough of all the completed features so far. They sat down at the development computer to use the plug-in as they would expect it to work (with obvious caveats where functionality doesn’t fully exist yet). No major changes came out of this, and the client and I feel we are on the same page with where the next couple of weeks will proceed. We discussed my current concerns about the complexity of the donation effects feature and re-iterated that if the timeline stretches beyond October 1st, we will need to cut scope.
Epics in Sprint and Task Breakdowns
Epic: Donation announcements (production) | HLE | |||
Pre-sprint HLE | 5 | |||
Start of sprint HLE (post-task breakdown) | 5 | |||
End of sprint remaining HLE | 0 | |||
Task Breakdown | Plan Estimate | Overhang | ||
Server: hook donation message generator into chat message sender | 5 | – | ||
Overhang
No overhang will be carried into next sprint.
Velocity
Sprint | Points Completed |
1: Prototyping (June 18 – July 1) | 18 |
2: Prototyping (July 2 – July 15) | 20 |
3: Production (July 16 – July 29) | 20 |
4: Production (July 30 – Aug 12) | 19 |
5: Hardening (Aug 13 – Aug 19) | 5 |
Avg (non-hardening): | 19 |
Remaining Timeline
Sprint 6 (Production): (Aug 20 – Sept 2*)
This is the last planned production sprint of the project. Initially my plan was to pull in 19 points of work, given my average velocity up to this point, meaning that approximately 2 points of work would carry over into the final hardening sprint. However, the basic donation effects epic ended up being far less work than anticipated (see below). As a result, I was able to complete this production work and my planned hardening tasks within the first week of this sprint. This makes the effective end date of this sprint (and project) August 26th.
One epic, the basic donation effects, was worked on in this sprint and all tasks were completed.
Start of sprint task breakdowns significantly reduced the overall point estimates. The basic donation effects epic ended up being much smaller (6 points from 21) after task breakdown.
As I was able to complete the production work quickly, I was also able to complete my final hardening sprint items:
- Perform another user review on final functionality (including the donation announcements functionality completed above)
- Perform a ‘dry-run’ stream with the user in order to confirm things are working as expected in a live setting
- Complete project documentation (final updates to design and implementation docs), as well as a full test-plan review
- Lastly, I was able to address the following known bugs:
- Notifications override each other when multiple donations occur during the notification playtime
A note regarding the game stretch-goal: Although the plug-in has been completed ‘earlier’ than the original estimated final project date, the remaining two weeks of project time will not be enough to implement the game. Based on a high-level estimation of the game, it will take about as long as the plug-in. This may be something the client and I explore at a later time, but for now we have agreed to defer this part of the project.
The client was very happy that the donation effects/notifications feature was easier than expected and that I was able to complete the plug-in before the beginning of September.
We sat down together and worked through the requirements checklist and test plan to verify that everything was working as expected. I informed her of the results of the longevity stress test, and we also had a chance to perform a developer-local dry run stream where she streamed and I ran the plug-in on my developer computer. A couple of donations came in during this stream, and everything appeared to work as expected.
The client also expressed that they would like to perform the live test a bit later than originally planned in order to line up with her Extra-Life campaigning a bit better. We agreed that, given the success of the developer-local test, deferring this to a later date would be low risk.
Lastly, we also discussed the game stretch-goal and my high-level estimates. Given how large the project would likely be, we agreed this would be deferred to when we both have time again to collaborate on it.
Epics in Sprint and Task Breakdowns
Epic: Basic Donation Effects (production) | HLE | |||
Pre-sprint HLE | 21 | |||
Start of sprint HLE (post-task breakdown) | 6 | |||
End of sprint remaining HLE | 0 | |||
Task Breakdown | Plan Estimate | Overhang | ||
Front-end: Setup notifications page HTML and CSS | 1 | – | ||
Front-end: Create notifications class with movie player logic | 2 | – | ||
Front-end: Setup transitions logic to display text at different video locations | 2 | – | ||
Server: Edit donation notifications to include donation message | 1 | – | ||
Overhang
No overhang will be carried into next sprint.
Velocity
Sprint | Points Completed |
1: Prototyping (June 18 – July 1) | 18 |
2: Prototyping (July 2 – July 15) | 20 |
3: Production (July 16 – July 29) | 20 |
4: Production (July 30 – Aug 12) | 19 |
5: Hardening (Aug 13 – Aug 19) | 5 |
6: Production (Aug 20 – Sept 2*) | 6 |
Avg (non-hardening): | 17 |