We’ve re-entered the world of training service dog puppies. This time, the team is bigger – the whole family is participating. How do we keep everyone organized? Turns out, Agile is a natural fit.
Backlog – All the commands we need to teach her
The Puppy Raisers Manual describes all the commands the puppy must master. Each command is a work item, or story. The story list is impressive and overwhelming. There are dependencies. We’ll need a plan, but for now lets just add all of the stories to the backlog.
Grooming the Backlog – Prioritizing and Pruning
We have just over 18 months to master all of the commands she will need to be successful. It’s achievable, but will take some planning. We can’t train everything at once, there’s too many commands. We’ll confuse ourselves and frustrate the puppy. She won’t be able to master some commands until she’s more physically and mentally mature. We want early success, so we pick stories that match her abilities. Behaviors like house breaking, eye contact, and name recognition are easier to train when she’s young. Others, like stay and here, need to wait until she develops more impulse control. Because there are dependencies, we plan training that builds advanced behaviors on mastery of simpler ones. For instance, we train sit, down, stay, here in that order.
Sprint + Kanban – What We’re Doing Right Now
The groomed backlog is our map of what to do next. So we don’t train too many behaviors at once, we set a WIP (work-in-progress) limit. Using a pull system keeps us from beginning a new command until one of the current commands is mastered. Complex stories are split into smaller stories. Some commands are mastered quickly, some take a little longer.
We manage our progress in monthly iterations. After each iteration, we provide updates to our stakeholders, Canine Companions for Independence, assess our progress, groom our backlog, and hold retrospectives. We might plan a series of iterations to create a target schedule but, ultimately, the puppy sets the pace.
We keep track of our progress using a visual board. It let’s everyone know what she’s mastered, what she’s learning, and what’s coming next. Nobody spends time on fast recall before she’s mastered sit and stay. So, if sit and *stay *aren’t really mastered, we file a bug report.
Daily Stand-ups
Every night at dinner, we have a short discussion of our progress and exchange ideas to make the team better. Any techniques that worked particularly well? Lessons learned? Need anything?
Demonstrations
We interact monthly with Canine Companions to review training progress and demonstrate newly learned behaviors. We record demonstrations to video. The stakeholders give us feedback on our progress, their expectations, and guidance on what we should do next.
Regression Testing
We expect her to remember everything we teach her. Many commands are part of her every day activities. Others, we periodically test and reinforce.
Retrospectives
After we send the update to Canine Companions, we hold a retrospective. It’s an opportunity to examine our team and our training process. It’s a chance make adjustments to the big picture.
Occasionally, a significant event will trigger a retrospective. (Oh my gosh, she just regurgitated a sock. Does anybody recognize it? No? Really?- True story)
Continuous Delivery
Even though our long term goal is service, she is also a resident of our household. Because of this, the behaviors she learns improve her experience, and ours. As a result, we expect her to be a good citizen in our home and in public.
Refactoring
Occasionally a command needs a little more work or an adjustment. Sit and down commands, for instance, require the puppy to go all the way down to her haunches. As they grow stronger, dogs tend to hover instead of sit. We have to change our training technique to correct it.
Tech Debt
Failure to learn some commands has consequences that increase over time. We want to keep tech debt to a minimum, since the consequences are real. Waiting to fix a house breaking issue, for instance, causes issues that are hard to correct if not immediately addressed
Bugs
The puppy is constantly learning, whether or not we are intentionally training her. On occasion, we accidentally reinforce unwanted behavior. Accidental training usually triggers a bug report.
Sometimes we get complacent with a command she’s mastered. For instance, she is supposed to wait at the door until invited in. Sometimes we remember this. Sometimes we just want to get everyone out of the rain. When she forgets how to wait, we need a bug report.
Code Smell
Make your own joke here. See Tech Debt.
Usability Testing
We also have cats. They’re great at giving feedback, but they’re lousy at suggesting alternatives. They hate everything.
On a serious note, service dogs spend their entire career in public. We prepare them by including as much public socialization as possible. As a result, we highlight areas for improvement and provide feedback to stakeholders that could inform career options.
Release Candidate
We call it Turn-in Day. It’s the day each puppy is matched with a client and deployed into the wild. We worry about this day! We dread this day! We celebrate this day!