Asynchronous Daily Stand-Ups

At LifeTime, we don't care too much about where and when someone does their work, as long as it gets done. This approach somewhat clashes with the idea of a daily stand-up with a fixed schedule. I'll look into why that is, how we tackled it and our considerations along the way.

What's the problem?

The development team I'm part of uses a pretty straight forward approach to software development: four week iterations with a planning meeting at the beginning and a retrospective at the end, as well as daily stand-up meetings. Since most of us work remotely, in the past we did our stand-ups using Zoom (where everyone actually sat in some chair instead of actually standing up). And as everyone has their own schedule when it come to work, we started the stand-ups at 11am to make sure no one had to join while still in bed.

The start time has been a regular topic in our retrospectives. For some people on the team the timing was just perfect since they just finished their morning coffee at 11am, while for others, who start their workday earlier, it was an unwelcomed interruption to their work. We debated the timing but weren't able to find a one-size-fits-all solution. At the same time we agreed that we want to keep a daily stand-up, not only for its obvious benefits but also for the social aspect of it. After all the stand-up was sometimes the only occasion where we would meet each other face-to-face.

A bot to the rescue

We set out to do some research since we figured we probably weren't the only ones with this problem and we were right. Not only that – there were also ready-to-use solutions available that fit our workflow. The idea was simple: instead of doing a face-to-face stand-up, just use your favorite chat tool and make everyone post an update as soon as they start their day. And to make sure no one forgets, set up reminders. We use Slack and all that would work out of the box, but there are even better solutions in its app ecosystem: specialized bots for asynchronous daily stand-up meetings. These allow for simple configuration of reminders and furthermore provide structure for status updates. The one we went with is called Geekbot.

How does it work? We set it up in a way that it asks every team member the three typical daily stand-up questions ("What did you achieve yesterday?", "What are you planning on doing today?", "Are there any roadblocks?") as soon as they come online on Slack for the first time each day after 8am. The answers are then posted to a channel private to the team, which is used for daily posts only. From there on everyone probably has their own way of handling the posts to that channel. I myself scan through them when I start working and later whenever there's a new post. If there's something that needs attention, e.g. if someone's blocked by something or someone, we discuss the details in a suitable channel, not in a thread on the daily post itself, to keep the daily channel clean of everything that's not a status update.

Geekbots post in our daily stand-up channel

With Geekbot set up, we had achieved half of what we wanted. Still missing was the social aspect I was talking about earlier, but the solution to that was actually pretty easy: we set up an optional daily 15 minute Zoom call at 3pm called "Product-Coffee" (we are the Product-Team, hence the name). Whoever is available at that time and not in some kind of deep work and is interested in socializing shows up in that meeting. Sometimes there's no one, most of the time a couple of us and I think it's never been the case that the whole team of 8 people showed up. The range of topics is broad: latest posts on /r/programming, vacation plans, newest gadgets, latest stories with the kids or sometimes something work related.

These two ideas combined seemed to offer what we where seeking. Before committing to it, we tested it for four weeks and scheduled a review after that. Feedback was mostly positive so we decided to keep it and have been using this approach successfully for about 11 months now.

On to the next

Switching to an asynchronous daily stand-up enabled us to get rid of a 15 minute meeting every day, which is great, because meetings are not. I like taking a couple of minutes in the morning to think about and write down my plans for the day even more than just talking about them in a classical stand-up. And on top of that, having a place specifically for casual conversations with the people I so much enjoy working with, is something I like a lot!

Next in line for an async overhaul is a weekly 45 minute meeting where we look at weekly goals and higher level issues ("Product-Weekly"). That one will be quite a bit harder to tackled as that's the place where we usually discuss a lot of things. Eventually I'd like to get rid of all synchronous meetings in favor of asynchronous solutions, so everyone on the team has complete freedom in how they structure their work.