‘Tis the season of 🎁giving. Now that we’ve brought Ben on, along with him has followed ample holiday cheer.
Ben suggested — and we swiftly agreed to — our first annual Savas Claus™: the name we chose for our year-end holiday gift giving tradition. Oft referred to as Secret Santa, a group of people buys gifts for one another while keeping the giver and receivers anonymous until the big reveal. It’s a lot of fun.
Typically, to randomly assign gift receivers to their respective givers, you write everyone’s name down on paper, put the names into a hat, and each person blindly picks a name for whom they get a gift. However, this analog approach has one major flaw: one can easily end up with oneself:
First, we knew we had ahead of us one of the two hard problems in computer science: cache-invalidation, off-by-one errors, and naming things. Giving the naming task the gravity it deserved, we put it to a poll. Savas Claus™ prevailed by a narrow margin over Secret Savas (its main critique: being too close to “secret service”). Given the aforementioned self-selection consideration (“the Kevin problem”) and the fact that our team is distributed, we went for a digital solution. After all, we are web engineers.
Since Slack is so deeply ingrained in our day-to-day, we looked for a solution there first. A Secret Santa Slack app does exist, yet it didn’t afford us the flexibility and panache we were going for — plus it’s way more fun to make your own! So we (well Chris) got in some weekend time to build a simple Slack app that would serve our needs during our weekly Monday morning team-wide status call.
We use tools on a near-daily basis that randomize the order of our team, for purposes like who gets to choose the lunch spot each week when we go out, or to randomize the order we speak during our weekly status call. So, adding the Savas Claus™ functionality was a natural extension to what we already had. The app creates a random order of the team (the “givers”), generates a second randomly ordered list of the team (“the receivers”) and pairs them with each other. If there are any repeats among the two lists in the same slot, the app automatically regenerates the second list and will repeat until the lists share no one in the same slot, and therefore receivers can safely be assigned to givers. With the lists vetted, the Slack app privately messages each giver notifying them of their respective recipient. The message looks something like this:
The team is currently prepping and/or shipping their gifts before our “unwrapping” virtual party/social of sorts in a couple days. No doubt we’ll use our “Savas Shuffle” Slackbot to determine the order for who will open their gifts first. Follow us on Twitter and we’ll share the real results (the gifts!) from our first annual Savas Claus™.