Born Remote

Cross-posting a blog post I wrote for Flux Engineering Blog.

Flux started as a remote company, with Max and Nick in California and me in New York. We had known each other for a long time and decided to build Flux as a distributed company from day one. Now Flux has three offices: San Francisco, New York, and Portland.

We are often asked how we handle the remote situation because it’s not very common to see an early-stage startup so distributed. My one-sentence answer is to see it as an advantage.

There are some benefits we can easily see in distribution:

  • Bigger talent pool. So you can hire people from multiple locations without needing them to move.
  • Lower cost, to company and to individuals. Bay Area and NYC are notoriously expensive. Portland is much more affordable. One of our team members actually moved from SF to Portland. We are all glad Flux can provide such an opportunity for him.

But what about the shortcomings? Communication gaps? Hard to bond? Below I’ll talk about what we do to make a distributed teamwork. Some shortcomings can actually be turned to advantages if handled well. That’s why I say we should see distribution as an advantage.

Asynchronous By Default

As a tech company, a majority of our production activities are software development, which is usually done better when people can focus without too much “tapping on the shoulder”. A distributed team structure makes “asynchronous communication” our default mode.

One signature of asynchronous communication is to do daily standup on Slack. We use a bot from Standuply and named it “Standup Steve”. Everyone answers questions from the bot, and compiled answers are posted on a channel. In this way, we get the basic caught-up without the hassle of dialing in a crowded call for 15 minutes.

For a given development task, an initial discussion usually happens in a weekly meeting, which is the only default synchronous communication step that circulates info to get everyone up to speed. Most following work happens asynchronously: writing design documents, coding, reviewing, testing, shipping.

We still do quick calls spontaneously from time to time, but the default way is to communicate in non-interrupting ways such as comments on tickets, wiki, and pull requests.

The default asynchronous communication pattern also enables more flexible work hours. We tend to do more communication and real-time collaboration during the overlapping hours between east and west coasts, and treat non-overlapping hours (morning ET and late afternoon PT) as unofficial “quiet hours”. If someone wants to travel somewhere (like Hawaii) and work remotely, or someone sometimes has an odd cycle (like a real night owl), it can work well as long as they follow the rhythm and people know when to expect them online and open for calls.

A side bonus of asynchronous communication is more knowledge gets written down. It’s natural to write a self-explanatory document to initiate a discussion, which naturally becomes the document and keeps records of some considerations. For deeper tech design discussions, it’s often more efficient that way, because people need time to digest and think things through.

Connect as Human

Human is social. People build initial trust more easily by seeing each other and feel they spend time together. This is true for remote/distributed teams and is probably the biggest “obstacle” people have in mind for remote working. There are a few things we do in Flux to make sure we connect in a more human way, besides codes and documents.

For example, we always turn videos on when having meetings. Face time, even through video, is precious. And it helps convey emotion better and reduce misunderstanding. That’s why we often see intense arguments, sometimes irrational, happen in emails or comment threads, but video or in-person discussions rarely escalate as quickly. We also grow more aware of this “phenomenon” and would switch to video calls whenever some discussion on Slack gets complicated.

You can actually have fun on video calls. Last month we did our first “board game afternoon” on Zoom! We played Avalon with the help of a brilliant website Avalon.fun. It was an absolute blast! Games flew smoothly, so many fun moments!

We also do whole-company offsite! This week is the second time we gather from three cities to one place to spend a few days together. It’s useful to build initial connections and trust. And some “downtime” to connect outside work is invaluable in the long run. Flux is still small enough we can get everyone together and literally stay under one roof (a moderate house rental from Airbnb).

Last but not least, we have a few channels on Slack as our “water cooler” place, where we post funny stuff from internet or have casual chats. At this “family” stage, everyone knows everyone outside work. Personal details bond people together.

Canyonlands与Arches

美国的国家公园里面Arches的有名程度应该能排在前五,犹他州车牌上Delicate Arch的样子可以算是人尽皆知了。这几年刷的国家公园多起来就挺想去Arches的,这次终于成行,还捎上了两个同事。

提到Arches就不能不提Moab,这个处在Arches门口的小镇是个户外胜地,附近各种国家和州立公园,拱门(arch)这种地形多到公路边上都散落着不少。小镇上很多旅店,吃喝也都不错,是个户外休闲的好地方。

这趟旅行虽说一定程度上是冲着Arches NP去的,但其实在Canyonlands NP上花的时间还更多些,去了两次,加起来一天半。Canyonlands这个公园离Moab一小时车程,1960年代才建立,相对来说不太知名,但非常有料。Canyonlands NP占地广大,分成几个区域,分别有不同的入口。里面游客和设施稀少,middle of nowhere的感觉很强。

我们第一天去了以大片石林地貌得名的Needles区域,走了Druid Arch Trail,大约11英里。前面大多平坦只是有时候路线比较隐蔽容易走错,最后一小段很陡。到最后看到的Druid Arch比想象的巨大很多,很壮观。这个trail和Chesler Park Loop是Needles区域两个比较热门的trail,有一半左右是重合的,都很推荐。经常要在干涸的河床上走,沙子有点多。我们去的时候在后半程看到一些水源,但总的来说还是比较干旱的地貌,不确定是不是常年都有水。

Druid Arch

之后又去了Island of the Sky这个区域半天。这里是一个海拔一英里高的陆岛,从Moab开车过去只要四十多分钟,穿过唯一的连接点”The Neck”就到了这个“岛”上。这个区域的hiking trail相对比较少,我们先走了一个很短的trail去看了Mesa Arch,这个arch很适合拍日出,其他时间有雪山的view也挺好看。然后去看了Upheavel Dome,这个地方像一颗大流星砸到山里之后的爆炸现场,很酷炫有点像游戏场景。最后去走了Grand View Point Trail,这是这个区域最主要的trail了,可以向各个方向俯瞰下面的大平原,平原上有形状蜿蜒边缘齐整的盆地,看起来好像是一下子陷落形成的。远处可以看到更高的悬崖,整体感觉很像大峡谷虽然这个宽度有点太宽了估计不能算是峡谷。

Mesa Arch
Upheaval Dome
Plain, and the hand-shaped basin

在去Canyonlands这两个区域之间我们去了Arches National Park一整天,可以说时间还蛮充足,把这个公园基本看了个遍。Arches就是以十分密集的arch闻名,一天下来看了数十个arch,各种姿势的看了个遍,感觉略有点审美疲劳不过最后的Delicate Arch还是对得起它的名气。

早上先一路冲进最里面的Devil’s Garden,走了Double O Arch Trail。这个trail上有6个被命名过的arch,最有名的是Landscape Arch,跨度最长而且近些年崩掉了一点所以看起来超纤细,不知道什么时候就要挂的感觉。其他感觉比较好玩的是Partition Arch,一左一右两个窗户的样子,看出去的景致也很好。Trail末端的Double O Arch一上一下两个孔,看着还行拍出来一般般。Trail本身很好玩,不少爬石头的段落,中间有一段叫Rock Fin的很像在岩石巨兽的脊背上行走,两边风光都很好。

Partition Arch
Rock Fin

然后去了The Windows的区域。这儿也是一大堆命名arch,而且都走几步就能到,性价比很高。这儿虽然叫做The Windows,但南北Window这两个arch其实比较普通,倒是Turret Arch和Double Arch相对比较好看。前者可以看到两个window arch,后者是两座天桥汇在一起,其实有点像Brooklyn Bridge + Manhattan Bridge。

Three arches in view
Double Arch

最后去看了这个公园里最有名的Delicate Arch。先去停车场旁边的lower viewpoint看了一眼发现远得不行。。于是决定还是hike上去。这个trail虽然单程只有1.5 mile,但一大半都是在爬挺陡的大石头坡,还是有点tough。还好不算太长,以及最后Delicate Arch在近处看的效果还是很棒的。这个Arch之所以有名是因为它在一个平平的山坡上突然耸立出来,非常出挑;而其他的arch大多是连接到一些小山上,造型没有这个这么清奇。这个trail上的人还是比较多的,我们下午四五点到了arch这儿,想拍张没有人的照片基本不太可能。另外这个arch旁边的地形是大漏斗形状,游客们就在漏斗边缘斜斜的岩石上走来走去的,总感觉会有人失足掉进去。。

这次在Moab玩的时间只有两天半,基本上完全集中在National Park和hiking了。那附近可以玩的其他项目也很多,越野车山地自行车骑马钓鱼等等,有机会可以再去。