Work-life balance is taking on a new meaning for many. The dev team at LinearB is no exception now that we’re abruptly working from home.
My team works out of our Tel-Aviv office. There are 10 of us here. Recently, we decided to prepare for our team to operate remotely for an extended period. To do this, we decided to run a remote “test day”. What we didn’t know at the time is that the remote prep day ended up becoming the first day of the new “normal” way for our team to work.
//Editor’s note: over the last week, we’ve really gotten tired of saying “in the new world” or “since the coronavirus-induced change” or “now that we’re all remote” so our shorthand is just to say “PCV”, for Post-COVID-19”. You’ll see PCV used throughout the article.
The main purpose of the remote prep day was to assess how successfully our team could run while not in the office including:
-Understand the impact on our release process
-Be responsive to our external customers and internal teams
-Support our team to work productively PCV
-Determine if our meetings are the right length and frequency
-Maintain our high level of communication and camaraderie
Our team has always worked in the office. In normal times, we all work in an open office environment, with desks all in the same area. If there’s a question, the answer usually lies within 10 feet. Given this, running through our first release while 100% remote was a great test of our process.
Test: Can we access the systems we need to release PCV?
For our systems, we use the cloud-based versions of Jira and GitHub, so we were able to access those systems as if we were in the office, without a VPN or additional login steps. The same goes for our AWS instance.
When we release, we post the Jira ticket containing all the JIRA stories and artifact tags we’d like to push, the links to the PR in GitHub, and any notes in our slack channel to keep everyone updated. This is especially important when working remotely so that everyone can see that the release has happened.
Test: Will our current process adapt?
Our current release process:
-Automated CI tests run
-Release the feature to dev environment and developers manually test it
-Run E2E automated tests
-If it passes ALL tests, Invite product management to review
-Cycles of changes based on PM review
-Merge all Pull requests related to the new feature after our CI checks passes well
-Our CD will push it automatically to staging environment
-Test against our live data (we use LinearB internally too :))
-Ask PM for final approval
-Push to production
We have a dedicated Slack channel to update the team on the status of our releases.
Overall, we thought that the process wouldn’t need a lot of updating and after having completed our first release with a fully remote team, we validated that. During our first release, the team completed each of the steps and the release went out as expected.
Test: How will PR reviews work now that we’re remote?
The review process was found to be the biggest sticking point. Steps needing review from other devs or our PM had to be more explicit and we needed to allow for additional time. As a dev, you can’t ask the person sitting next to you to just take a look at something PCV.
What stayed the same?
-1 Our systems and how we accessed them.
-2 Our release process, the steps we take as a team to push new releases.
-3 Once reviews are complete, our actual time to release stayed consistent.
-1 The way we conduct PR reviews. It’s no longer sufficient PCV to ask the dev sitting next to you to look at something and shoot them a link in Slack. We need to be more regimented about reviews and going forward we are scheduling review meetings.
-2 Our cycle time jumped. A big reason was that our pickup time for reviews jumped. I think this is mainly due to being remote. We can’t just tap someone on the shoulder and ask for their time. Also, if a reviewer has a question, we can’t answer it verbally without a Slack call or Google Hangout.
We have some awesome customers and pride ourselves on how we support them. A big component of this question was answered by our release process (see above). With the release question answered, we can be sure that updates, hotfixes, etc can get to customers without interruptions.
So, our focus here was more on our internal process and how we can efficiently route issues and respond PCV.
Test: Will our current issue ticket routing process work PCV?
What I discovered during our remote day is that our (potentially) over-engineered review process is now set up perfectly for remote work. We have a fairly rigid documented process for responding to customer support tickets. All tickets are taken in by customer success, before they get to us. We create a Jira ticket, validate there is an issue, and then decide how/when we can respond. In general, communication back to the customer routes through customer success so we can ensure a consistent voice.
What stayed the same?
-4 Our process overall held up. Because our front line customer service are mostly not in the same office, we had already built our process around this. They continued to field customer issues and quickly pass onto us with a Jira ticket.
- Is it weird to say nothing? Our process will remain in place. One thing I did learn was that when it comes to processes and documentation, there’s no such thing as over-engineered. With a relatively small team, it would have been easy to operate on a more as-needed basis, but I’m glad we’re not building this process while dealing with the transition to remote work.
Ensuring productivity was a big unknown. I needed to make sure the team was set up well to continue to hit our commitments, and then I needed to understand when it was appropriate for me to step in and unblock a team member.
Test: How would our team adjust to a remote work environment?
Most of our team is married with kids. With schools closed and kids home, and spouses also needing to work from home, this is a big challenge. Some on the team have a room, closet, or other space with a door that they can close off. This is ideal. For others, being out in the open is a necessity. The bottom line is that I needed to trust my team to find an environment that works for them. This includes being flexible with working times and being available to help them think through how to deal with a workplace that suddenly included spouses and kids.
Test: Does our team have the right equipment to work remotely?
I had a fear about equipment for my team. Specifically, many generally leave their power cords in the office but take their laptop home in the normal course of things. In the office, we also have 2nd monitors, good chairs, etc to make sure they are comfortable and productive. We worked with our team and had conversations about getting any needed equipment. A good set of headphones is a must. This is also been the main topic of conversations on my 1 on 1 meetings. Some team members were able to order desks and chairs, and others even rearranged some things in their house to clear out a space to work.
Test: How will I know when I need to step in and unblock my team to keep us delivering?
For me, this was a challenge. In the office, it’s easy to understand when someone is blocked, and it’s easy for them to get unblocked. We communicate our commitments in our morning daily and follow up with them in the new afternoon sync meeting. We had a situation this week where 3 team members were working together on a new feature and made some pretty aggressive commitments. To be honest, I was skeptical they would hit their commitments, especially given that they were splitting the work between the 3 of them and then bringing it together at the end. On the daily sync I was prepared to hear them say they needed to push, but instead, they told me it was done and working in our dev environment.
What stayed the same?
-5 Communication continues to be of utmost importance. On our team, we have a rule: If you get stuck, tell someone as soon as possible. It doesn’t have to be your team lead or manager, etc. Just tell anyone. We are all here to support each other. This rule still applies PCV, maybe now more than ever.
-6 We use LinearB to help us identify bottlenecks. We call it LinearB on LinearB. Even though we sit in the same place usually, LinearB helps me get additional visibility into the whole team without doing the “walk-around”. It is even more useful now that the walk-around isn’t a feasible option.
The team view lets me see which teams are overloaded and how I can distribute work.
-3 We found the need to add a 2nd daily “sync” meeting in the afternoon.
-4 We definitely needed to adjust for environment. I learned to use environmental disruptions to my advantage. During meetings, we used kid interruptions as team-building opportunities that brought some lightness into our conversation. We would pause (when appropriate) to talk to the kid who walked into the shot. It helped our team to understand it wasn’t a huge issue or something to be embarrassed about and helped the families to feel more comfortable with the situation.
-5 Unfortunately, though not unexpectedly, our productivity took a hit PCV. This started before we all had to go remote. You can see below where our current iteration and the one before had productivity dips. This was happening as our team was preparing to go remote, schools were getting canceled, etc. Not unexpected. This also impacted our cycle time. My job now is to get the team re-focused and to quickly regain our superb delivery cadence.
In addition to release procedures, our team has a number of regular meetings and a way of operating. We have a daily standup, weekly retro meeting, sprint planning, etc. On our remote day, we had 2 meetings to run remote, our daily and weekly.
Test: Will Google Hangout support our meetings? Do we all have adequate internet connectivity?
PCV, our meetings are now all web meetings. We use Google Hangouts, which has been known to be buggy at times. For us, GHO worked great. I quickly got used to the view that our US team tells me is called the Brady Bunch view. Audio and video worked great.
Test: Will everyone remember the meetings, show up on time?
In the office, we have regular times for our team meetings, but the reality is I generally gauge the room to see when is a good breaking point. I can call the meeting to order when everyone is ready rather than at exactly 10:30. I was actually shocked that for our meetings so far everyone has shown up on time.
What stayed the same?
-7 We got the same information communicated. In our standup everyone was open and clear about blockers and what they hoped would get done.
-6 We have a couple of single people on our team that live further away from the office. Given that they are living the “single nightlife” they are occasionally (ok, frequently) late for the standup, usually blaming traffic :).. For our online version, everyone was on time and used the time efficiently. The same could be said for our weekly meeting. I’m thinking about making this change permanent 🙂
-7 Going forward, I am adding another daily touchpoint. This was to make up for the impromptu interaction during the day that I felt we were missing out on.
-8 Items that we might have talked through as a team in person were quickly “taken offline” and I needed to follow up with people 1 on 1 later. Maybe the meeting was too efficient . . .
I was concerned about what things people are more comfortable working on together. We have jointly assigned branches and as a team, we regularly engaged in planning and strategy sessions on a whiteboard. Our team also has a great camaraderie with each other. We genuinely enjoy spending time with one another and didn’t want to lose that.
Test: Will we be able to support jointly assigned branches and tasks?
Jointly working on branches actually worked much better than I thought. Two of our developers, Noam and Zuki, had a joint assignment. They opened a Google Hangout that lasted a couple of hours. This replicated the experience of working at adjoined desks, and maybe even worked better because they didn’t have to worry about the distraction of co-workers working around them.
Test: Will we be able to maintain our team chemistry PCV?
Our team has a great chemistry. We hang out over lunch and play basketball and talk politics. We genuinely enjoy spending time together. Because of this, we are very comfortable talking to others on the team about getting unblocked or the best way to tackle a task.
What stayed the same?
-8 We still genuinely like each other. Because of Slack and Google Hangouts, we are still able to connect with each other to resolve problems as needed.
-9 We needed to rely on Slack even more for our chemistry. We have a channel called #family where we share what has become our work-life integration.
-10 We’re missing the basketball. Our new daily afternoon sync meeting has helped this a bit. We open with a few minutes to connect on non-work related topics.
-11 One additional piece of working together that is changing is the whiteboarding. I am investigating a couple of options, like WebWhiteboard. This is particularly useful for when we are in-between iterations and planning the next one. We haven’t hit that point PCV, so I’ll know more in a couple of weeks.
To be honest, when I started planning our remote prep-day, I thought that I would have a week or two to digest what happened and make adjustments before an extended period of working remotely. As we all saw, the world changed quickly in a week, and we’re now all abruptly working from home. In reality, what we thought was a remote “test” day became the first day of an extended time of working remotely.
In connecting with my peers at other companies, I think one of the biggest concerns is visibility into the team now that everyone is dispersed. I have been encouraging them to try LinearB. Having the extra layer of visibility helps me understand where I can be most useful and how the team needs to adjust to continue to hit our iteration deadlines.
If you’re taking your team remote and want to connect about what I learned or give me ideas for how your team has overcome some of the remote obstacles, reach out! I’d be happy to connect at email@example.com or on LinkedIn.