Planning Poker for remote teams — the story of an open-source project

Gergely Bihary
Firebase Developers
4 min readMay 17, 2022

Planning projects is difficult, especially when you are working remotely. This article tells the story of planningpoker.live, which was created during the pandemic to help my team estimate while working from home.

At Prezi, we worked in a usual SCRUM setup that must be familiar to many software engineers — planning meetings, stand-ups, and retros. During our planning meetings, we estimated projects/cards while sitting around a table and showing hands-on the count of three. This worked well before the pandemic, but as soon as we had to move to Zoom it wasn’t so efficient anymore. It was no longer easy to tell what the consensus was and it was easy to mess up the countdown and fall victim to bias by seeing other teammates’ votes before revealing your own.

In order to have more effective planning meetings, we turned to the internet to find a tool that would allow us to have the same experience of being in the same room together. We tried several apps, such as scrumpoker.online or firepoker.io and while they are excellent free solutions, they didn’t quite fit with the workflow that we were used to.

So, given that I like creating new projects and thought that making a new planning poker app would be fun, I set out to create planningpoker.live! This meme perfectly represents the thought process:

An extra planning poker app — why not?

What is needed for a simple planning poker tool? Our requirements were:

  1. it needs to be a real-time application
  2. it must be super simple to set up
  3. it should facilitate discussion and consensus
  4. it should be safe and secure to use

As I am familiar with Angular, the application was created with this frontend framework. Angular allows a couple of nice things out-of-the-box: modularisation, pre-rendering and great integration with Firebase. These are all a great help when building a project with limited resources (my time), while still having a valuable impact.

Pre-rendering improves SEO and load times on the landing page

To satisfy the first requirement, the application is using Firestore as its “backend” to create real-time estimation rooms that are individual documents in the database. When you create a new room, a document is created and others are able to join with a unique user ID. The frontend is subscribed to changes in the room and handles votes, members, and other configuration changes via this subscription.

To achieve (2), the application does not require users to authenticate when creating a new planning session. Users only need to set a nickname and create a new room. Having such a relaxed game creation experience means that there must be something that helps keep the database spam-free. The app uses two Firebase features to help keep it secure: Anonymous Authentication and App Check. With Anonymous Auth, users are signed in with a temporary account that is rate-limited, so the same IP address cannot create hundreds of users. Further, Firebase’s new feature App Check helps make sure calls to the backend originate only from your own, genuine, app. This prevents attackers from spamming your app with fake requests.

To facilitate good discussions (3), the app needs to display statistics about the planning session. What we found useful were:

  • the average value of the votes
  • highest value vote
  • lowest value vote

This way, after a round we can discuss why someone voted high or low — and this information is clearly displayed on the UI.

See votes, members, and issues being discussed on simple UI

To maintain some sense of security for such an “open” application (4), a Cloud Function was set up to remove stale data. This makes sure that old rooms are not kept in the database. Still, if someone manages to guess your room ID, they could “bomb” your room. As a future improvement, there could be an option to guard rooms with a password or a requirement for signing in.

Once we began using the tool at Prezi, several additional feature requests came in. One of the more interesting ones was being able to use T-Shirt sizing when estimating. This came from a colleague who joined Netflix, where their team relies on this estimation scale. Further, some teams use card values/scales that are not part of the templates in the app. To make the app work for these teams as well, you can also add a custom card set.

Custom card decks for XXL projects

So, what’s next for this project? I enjoy building it as a hobby, so my intention is to keep adding features that I find valuable and try getting more traction amongst the other great tools out there.

Do check out the current version here and let me know what you think. If you are a SCRUM Master, check out all of the features and the small FAQ to get started with the app. If you are a developer and you find a bug or have a killer feature idea, open a PR and collaborate on this project.

The cards picture above is from Anna Shvets on Pexels. The standards comic is from xkcd.

--

--