DEV Community

loading...
Cover image for Building Standup Roulette

Building Standup Roulette

Amruth Pillai
Designer and Developer. The very last of my kind. I belong both on Dribbble and GitHub.
・2 min read

At Grover, in my squad, like most squads, we do stand-ups every day. To make things interesting and to keep the whole team active, we suggest to have different hosts every single day within our team. Someone to run through the Kanban board and take down action points.

For a short while, we were doing this manually, where we would nominate someone at the end of the call, which was going great, but it has its pitfalls. Like not remembering who we nominated the previous day, or forgetting to nominate someone altogether.

Hence, Standup Roulette was born.

This is a simple Node.js script, hosted on Pipedream, that runs about 30 minutes before our actual stand-up, which does the following:

  • Get all members of our Slack channel
  • Exclude members who are on specific schedules
  • Pick a random announcement message, replace the placeholder with the user ID
  • Post the message on Slack

In the meanwhile, it also makes use of Pipedream's workflow-level state management, $checkpoint, so we are able to store information across runs. So I simply store an array of history which contains the last n - 1 user IDs who have already hosted recently, where n is the number of members in the channel.

This history array is also appended to the exclusion list so we don't get the same person hosting twice in a row, or too often.

You can check out the Pipedream workflow we use right here:
https://pipedream.com/@AmruthPillai/standup-roulette-grover-x-squad-scheduled-trigger-p_n1CowNy

Try it out at your workplace as well and let me know how it goes!

Thank you for reading.

Discussion (2)

Collapse
olestourko profile image
Oles Tourko • Edited

The last team I was on had almost the exact same situation as yours, I figure its probably rather common. I've been building a dedicated Slack app called Pickle (pickle.bigbunny.io) for rotations like these. It round-robin picks for recurring tasks, keeping track of the rotation automatically. It has a bunch of configurability, like automatically asking people to confirm/decline, retrying with the next person in line, probability-weighted picking, etc..

Pickle works a little differently in that you invoke it from Slack, for example: /pickle #channel Standup host --exclude @me @Fred

I like how yours lets you exclude users based on the day, very useful. Can Pipedream be set up to listen to Slack events, like giving a unique URL to a script and executing it when its hit? Haven't tried cloud-hosted scripting yet myself.

Collapse
amruthpillai profile image
Amruth Pillai Author

Woah, Pickle really gets us out of that pickle of having to pick someone. Great product, I love that you've thought through the flow, including getting approval from the person (in case they are busy, or maybe if they are OOO?).

Thank you, that would be a great addition to your product as well, to add rule-based picking, so you essentially validate before every pick. And yes, Pipedream does allow that. It was my first time trying it out as well, and while it does have it's quirks, I feel it's a great up and coming product by its own right and looking forward to what the team builds on from here.