Smart Choices - rewarding good behavior
Teaching and rewarding kids for good behavior is difficult and many tactics can be used to accomplish this. I want good behavior to be the expectation for my children and I don’t want them always to expect a reward for good behavior. Especially when, in practice, good behavior is not always noticed OR rewarded (but that’s a whole different story).
This past summer, we hit a breaking point with our children. That sounds dramatic, but, in the moment, we were struggling to get our kids to do simple chores and follow directions without it becoming a battle.
The idea
One evening, my wife turned to me and said, “I have an idea for an app…” As iOS developers, how often do we hear this and suffer through the unsolicited pitch?
“I want an app where the kids can push a button and it will randomly reward them, but not all the time.”
The idea was simple enough that it could be built in a day. So, I started asking questions to understand how she wanted the app to… ahem… behave:
- How random? Start by rewarding more frequently then decrease the frequency of rewards.
- What does it look like when the user (kids) is rewarded? Just show if they “won” or not.
Wow, so simple.
At first, I thought, “I could just build a Shortcut that does this.” Then the iOS platform evangelist on my shoulder said, “But you could build an app and add Shortcut and Siri support. Maybe an Apple Watch app.”
Scope creep comes for us all.
MVP
So, one afternoon, I developed the MVP. And really, this was the minimum viable product. So “minimum,” I doubt it would make it through app review in this state.
But, it could be distributed via TestFlight to an internal team of two - 1) The developer (me) and 2) the product owner (my wife /Borat). And distribution via TestFlight allowed me to dip my toes into using Xcode Cloud to build and deploy when merging new changes.
Here’s the first version of Smart Choices:
- A button
- An alert if you “win” or “lose”
- If you shake the device, you get a very basic debug view
Very MVP. But building simple ideas like this is important, it gives you a lot of freedom to try new things - and importantly, learn something new.
Dogfooding
We used this with our kids for a few days and the kids were always excited and looking for ways to get “button pushes.” Did we turn our kids into slot machine addicts? Maybe. But they were motivated to do things when we asked the first time and sometimes without us having to ask at all.
My wife had a feature request - can we keep a list of rewards in the app and display them when our kids are rewarded? Maybe only show three random rewards for them to choose from?
Version 2
With that feedback, I added a static list of rewards and a sheet that popped up when being rewarded. I wanted to spice it up with haptic feedback and a confetti animation.
The sheet, haptics, and confetti made the reward experience feel… well, rewarding. The kids were delighted with the additions and it gave them more agency in choosing their reward.
I included an escape hatch showing the full list of rewards when maybe the random list of three was inappropriate for the circumstances. For example, if it was bedtime and the rewards given were extra TV time, going swimming, or getting to eat something sweet.
I also added an option to force a reward to appear if we felt like one of the kids went above and beyond and wanted to reinforce that behavior.
Our oldest caught on to the concept of “odds of winning” and hit a particularly egregious bad-luck streak. To combat this, I added an internal losing streak counter that would force a reward if the losing streak exceeded the odds of winning.
Yes, we are gamifying good behavior and, I reinvented slot machine and loot box psychology. But, after a few weeks, the excitement of the app died down for the kids, and most of the good behavior stuck.
In the meantime, I added more features to the app…
I briefly touched on a few topics that I hope to write about in the future, but please don’t hold me to it. I’m busy raising my kids.
- Xcode cloud CI/CD and TestFlight
- Adding a WatchOS app
- Adding Siri and Shortcuts support
- More features and monetization
If I get around to writing about a topic, I’ll link to it here.