DEV Community

Cover image for We had a person whose job was to say "3, 2, 1"
Matt Fauveau
Matt Fauveau

Posted on

We had a person whose job was to say "3, 2, 1"

Here's how we pointed tickets.

Everyone on Zoom. Ticket goes up. Each engineer types their number into the Slack thread but doesn't hit enter. Then you thumbs-up the message above to signal you're ready. Everyone waits. Once the reactions are in, the DoE counts down out loud: "three, two, one, point." And you hit enter.

Read that again. We had built, by hand, out of a video call and an emoji, a synchronized reveal mechanism. That's it. That's what planning poker is. We just implemented it in people.

And it half worked, which is the frustrating part. Someone's finger slips and they post early, so now everybody's seen a 5 before the count. Someone's Slack lags and their number lands two seconds late, which reads as hesitation whether or not it was. Someone joins the call late and asks what we're pointing, and we go around again. The countdown itself takes six seconds but the ritual around it takes ten minutes.

The estimating was never the hard part. Five engineers who know the codebase can size a ticket in ninety seconds (that being said, some engineers will actually look at code, but that's a story for another time). What eats the hour is the choreography.

And then the number goes nowhere. It sits in a Slack thread. The board lives in GitHub. Between them is a person remembering to type it in later, and often that person doesn't. I've seen sprint boards where a third of the tickets had no points, not because nobody estimated them but because the transcription step quietly failed. Two weeks later somebody asks why velocity looks off.

So I built Repoker, which is mostly just the countdown, automated. Pull in a ticket, everyone picks a card, everything flips at once because a machine is doing the flipping, and the agreed estimate writes itself back to GitHub Projects. Nobody says "three, two, one." Nobody thumbs-up anything. Nobody transcribes.

Vote as a team, live. Everyone picks a card. Votes stay hidden until the reveal.

It's entirely Cloudflare underneath: Workers for the app, Durable Objects with per-room SQLite so each session's state stays isolated, D1 for what outlives a session. Real-time voting is close to the canonical Durable Object use case. It's also themed around Casino Royale, just for fun.

I got things wrong along the way. The reconnect logic was the fun one: a WebSocket loop that, under a specific tab-backgrounding condition, fired about eight thousand requests before I noticed.

It's currently free, please try it and give me feedback. If your team still has someone counting down out loud, I'd like to hear how that's going.

Top comments (0)