Tucson这小城以前听到过很多次，美剧Last Man on Earth设定的地点，以前IBM的一个朋友去出差的城市，也是另一个去东莞当教授的朋友之前战斗过的地方。从Phoenix出发一条大直路开上一个半小时就到，还蛮方便。
Tucson附近有个Saguaro National Park，翻译过来就是仙人掌国家公园，并不怎么知名。但作为一个NP爱好者我还是去了一个这儿的trail。Wasson Peak，全程8英里，上下一千多英尺，轻松愉快。一路上能看的就是各种各样的大仙人掌。这种Saguaro都有好几米高，看着很像一些三头六臂的巨人站得漫山遍野。小一点的各种仙人掌仙人球仙人鞭就更多了。同去的几位同学颇有几位和这些多刺植物进行了亲密接触。
这代塞尔达我初玩感觉画面很不错，但机制似乎都很老套，想想毕竟是复刻也就没太在意。然后玩着玩着注意到地图是个大方块儿，感觉是上古时代主机为了省资源会做出来的事儿。于是查了查才知道这代的原版是1993年出在Game Boy上的，那时候还是黑白液晶屏的时代，比后来流行的像素电子宠物还早。。立刻感到肃然起敬。这一代后来在Game Boy Color和3DS上分别复刻过，Switch上这已经是第三次复刻，在冷饭界也算是翘楚了。
2019-2020的跨年时刻，莫名其妙的喝迷糊睡了过去。醒来还发现给一个大家纷纷在发Happy New Year的群里回了条不着边际的德文消息，估计是因为戴着表睡觉误回的。也是比较诡异的一次跨年了。
回想2019年最主要的主题一定是Flux。从年初三个founder加两个工程师的minimal team，到年末十一个人和两个待入职。年初的时候产品看起来还像个课程作业，年末的时候产品已经像模像样经历了无数次sales demo。创业的一年跟想象中差不多，ship东西很快，有点辛苦，但整个公司的节奏保持了开头所定的“养生”基调。It’s a marathon, not a sprint. 可惜的是大客户的合同还没最后签下来，希望2020开年不久有惊喜。
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.