Microsoft Teams Reactions & Raise Hand System Design
The interviewer's prompt sounds like a warm-up: "Design the live reactions feature in Microsoft Teams meetings: a participant clicks applause, like, heart, laugh or surprised, and everyone in the meeting sees it float across their screen. Then extend your design to support raise hand."
Now meet Maya Chen, a staff engineer at Contoso in Seattle. It's Thursday, 10:12 a.m., and she's one of 1,000 people in the quarterly engineering all-hands. The CTO announces the launch. Maya clicks applause three times, and so do 600 colleagues, all within five seconds. That's 1,800 reactions, and if each one were delivered to every participant, the meeting would push 360,000 messages a second for one round of applause. Everyone should see a wave of applause and a counter. Nobody's audio should stutter. Half an hour later, Q&A opens and Maya raises her hand. She is fourth in line. Then her Wi-Fi drops for eight seconds. The applause sent during the gap is simply gone, and nobody minds. Her raised hand must still be there when she comes back, and it must still be fourth.
The Trap Built Into "It's Just Another Emoji"
Two failures come up again and again:
- The Chat Message: every reaction becomes a database row, an acknowledged request and a guaranteed delivery. Signal: never noticed that a clap delivered five seconds late is worse than a clap never delivered, and built durability for data nobody will ever read.
- The Sixth Emoji: the reaction pipeline is lean and lossy, which is correct, and then raise hand gets bolted on as one more reaction type. Hands go missing on reconnect, late joiners see an empty queue, and nobody can say who was first. Signal: copied a mechanism without asking whether the new feature has the same physics.
The passing answer sees that the two features look alike on screen and are opposites underneath. A reaction is a firework: seen now or never, safe to drop, safe to merge into "×41". A raised hand is a flag on a pole: it stays until someone takes it down, its order matters, and losing it is a bug. The design shares one socket, one gateway tier and one owner per meeting between them, and gives each its own contract.
The one-line idea: A reaction is an event you can lose; a raised hand is state you must keep. Same button, same socket, opposite physics.
Sign in to continue reading
The rest of this lesson is available with a free account. Signing in with Google or Microsoft is free.
Sign in to read the full lesson