Planning Poker for remote teams — the story of an open-source project
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:
What is needed for a simple planning poker tool? Our requirements were:
- it needs to be a real-time application
- it must be super simple to set up
- it should facilitate discussion and consensus
- 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.
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.
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.
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.