Working all-remotely

With the recent uptick in interest in remote work, I thought it would be a good time recap my experience of working at GitLab, an all-remote company, over the past 7 months. It hasn't been without its adjustments, but overall I'm a proponent of this style of work and think it is the future of software development.

Background

I spent the majority of my career as an engineer and manager at a small software company in Lake Tahoe, NV, USA. While Tahoe is a 3 1/2 hour drive from Silicon Valley, it is far from being a tech hub. Our location compounded the common problems of hiring, and we eventually needed to consider remote work.

My first remote management experience was working with a consulting company in the Bay Area, but we eventually moved on to placing developers in Latin America. We specifically chose that location to overlap with our working hours in North America -- which was probably a prudent decision.

While we got some things right (we hand picked developers and treated them as part of the core team), because most of the team, including management, was colocated at the headquarters, I don't think we ever truly succeeded at integrating the teams.

Going all-remote

Fast-forward a few years: I joined a start-up in a fully colocated office in Raleigh, NC, and then last year, my wife and I decided to move back Tahoe, which basically meant working remotely. I was fortunate to accept a position as an Engineering Manager at GitLab, which is the world's largest all-remote company.

There are two aspects which differentiate working at GitLab from my previous remote experiences.

  • GitLab is ALL-remote -- not even the CEO has an office.
  • GitLab's employees are geographically dispersed worldwide.

While those differences present challenges, I also believe they are fundamental to the success of the model.

Working worldwide

There are trade-offs in every decision, but I believe history will be on the side of all-remote work -- specifically for software development. The benefits of a distributed team (including being able to hire around the globe and work around the clock) outweigh the drawbacks, but there are some differences.

For the first couple months I felt I was managing into the void. The nearest person on my team is an 8 hour time difference away. It wasn't until recently that this started feeling normal.

While I don't track my time, I suspect I work a more or less a 40 hour work week, but I don't work a contiguous 8 hour day. While we strive to work asynchronously, I have some scheduled meetings over Zoom. While it is possible to work a contiguous day (and I suspect most do), considering that all of my team, excluding myself, works within a few hours of GMT, I've decided it is easier for me to adjust my schedule.

In practice it means my early mornings (7-9AM PST) are usually booked to overlap with the end of day in Eastern Europe, and by my own design, I also have meetings once a week at night -- after 10PM PST. I tried taking 6AM PST meetings, but found I couldn't function effectively at that time of day.

Some late mornings and afternoons are set aside for Asia-Pacific meetings, but mostly they are meeting free. Powder day in Tahoe? Hit it! Nap? At times, I'll siesta (as my wife would say) after my morning meetings, or head to the gym in the early afternoon when nobody is there.

Does this work for everyone? Maybe not, but I think all-remote is about being flexible and finding what works for you. If you value your downtime it is rare that someone will expect you to respond right away.

Working asynchronously

The biggest adjustment for me, and an area where I can still improve is working asynchronously.

I came from an environment which valued quick, real-time communication. When you are work in an all-remote, globally distributed environment, that doesn't work so well. During most of my working hours, my team is offline, sleeping, or otherwise unavailable.

This forces communication to be written and documented. At GitLab we make heavy use of our own software. At the core, Git itself provides excellent support for distributed software development, and GitLab adds additional tools for collaboration. While we have other communication mechanisms, the content in GitLab is the single-source of truth. GitLab is only one tool, and obviously not required for all-remote work, but I do think having a location for maintaining the source of truth about work being done is critical.

Timezone ping pong

One of the side effects of working asynchronously is something I call "timezone ping pong." What can happen when you are collaborating on work such as a code review, is you will leave a comment during your working hours, the other person will get back 12 hours later during their working hours, then you make another comment 10 hours later, etc. Coming to a resolution can seem like a slog.

I don't have solution to this, but I have a couple ideas

  • Try to anticipate the questions of collaborators
  • Don't let one project block you

Asynchronous communication can not be treated like real-time dialogue, and that has some benefits. It forces conversations to be premeditated, and, again, documented. For code reviews for example, this can mean understanding coding guidelines to prevent back-and-forths of agreed upon standards. Thorough and premeditated conversation is an area of constant improvement, but I believe the overall result is a more thoughtful resolution.

Working asynchronously often requires keeping multiple threads of work moving forward simultaneously. For instance as an engineer if you are waiting for feedback from a counterpart team such as Design or Product Management, you should be prepared to move onto another task. This type of context switching becomes more natural over time as your conversation pipelines grow, but it takes some time to adjust to.

Physical environment

Remote work can have the cost saving benefit of not needing to manage physical office space [1], but is also isn't a get-out-jail-free card for employers, as they should be prepared to handle the costs of setting up remote work spaces for their employees.

Fortunately I had a dedicated home office setup before I started working remotely -- a couple tweaks and I was ready to roll. Not everyone has that luxury though and others obtain office space outside of their homes. I don't think I could pull off my non-contiguous schedule without a home office, but that schedule also isn't a requirement for working remotely.

Having worked in open office space environments, working in my home office is a huge benefit for me. Not only can I work from Tahoe, I can have undisturbed time for work and can take breaks in my own house. I'm an audio enthusiast, and setup a stereo system just for my office. It is fantastic!

My office gear includes a 15" MacBook Pro, two 27" 4k monitors, a good USB camera for meetings, a mechanical keyboard, and an office chair of my choice (which I previously owned).

I also wasted no time in investing in a good coffee solution.

Mindset

It is a convention to have the camera on during Zoom meetings. This is a good thing as it forces me out of bed and to actually get dressed. This might seem strange, but it is a formalism which signals that the day has started, or I might be tempted to spend the day in my robe.

Also, a common concern of remote workers is motivation. I will admit I've struggled with this from time-to-time, but I found a few things help.

In an all-remote company, especially as a manager, you are pinged with updates from your collaboration tools around the clock which can feel like an endless deludge. I force myself to clean out my status updates everyday, otherwise they pile up into an unpenetrable mess.

Secondly, and this can help in general, I try to do the smallest thing that will move a task forward. Usually one task leads to another and the problem goes away, but I don't want to trivialize this. There can be a lot of distractions working remotely, especially at home, and it isn't unusual to lose motivation.

Social

I haven't met any of my colleagues face-to-face, and that might be the case for awhile. In the past, my professional and social lives have often intersected. In retrospect, I'm not sure if this is a great idea, and I could improve at fostering a social life away from work.

All-remote doesn't eliminate politics, but it changes them. For one, you don't have to worry about missing out on opportunities or discussions because you didn't meet socially. I believe GitLab is more results focused as a result of being all-remote.

We do have water-cooler type chats and I enjoy the cultural diversity of working with people from around the world, but if you are looking for a socially driven work culture, or thrive on the close comraderie with your colleagues, then working remotely might not be your best option. At this point my life, that isn't something I feel like I'm missing out on, but I could see how someone in a different situation might miss the social aspects of colocated work.

Conclusion

I still have much to learn on when it comes to working all-remotely, specifically regarding asynchronous communication, but it is difficult for me to imagine going back to an open office. The ineffeciency of working colocated becomes more obvious when you start working all-remotely, and with the recent health concerns of working colocated in a traditional office, I think we are at the beginning of a long term trend toward remote work.

[1] In retrospect it blows my mind thinking about how many resources a typical growing startup spends on physical office space. I also remember working as a consultant and causing a stir because I sat in the wrong office.