从西雅图到黄石

引子

如果你问我为什么要拍照,我会告诉你because I want you to see what I see.

第一章 计划

从西雅图到黄石,最快的路线也要800 miles,开车要开13个小时。我们一共有九天时间,从去年的九月五号到九月十三号。做计划时候的一个主要参考资料是Douglas Scott写的《Seattle to Yellowstone: Road Trip!》。这个作者超厉害的,从6岁开始就road trip从西雅图去黄石,“has taken over 25 road trips in the last 30 years from Seattle to Yellowstone”。现在网上动不动就“干货”,其实很多都很水很平庸。而这本小册子,有这么多年的经验打底子,才算是真正的干货。

这个行程计划很不好做,要juggle的因素很多,其中包括:

  • 每天晚上的住宿,无论是campground还是cabin、yurt或tipi,都必须是能够事先预定的。很多campground虽然好,比如位置好、风景好,但是是first come first serve 的,就只能舍弃。有些scenic route,因为找不到可以接受预定的campground,也只能舍弃。
  • 每天开多少时间的车。这主要是为了我们家考虑的。虽然郑轶嘉已经road trip 过很多次了,但跟大人还是不能比的。我给自己定的要求是:去黄石和从黄石回来的那几天,每天开车总时间不超过5-6小时,而且必须分成两段开,上午2-3小时,下午2-3小时。这样比较容易搞定郑轶嘉:下午的那一段的大部分时间里郑轶嘉都在睡觉。
  • Scenic drive。对我来说,road trip的很大一部分乐趣是开scenic route。在highway上,尤其是interstate highway上面连续开几个小时的车是很无聊的一件事情。我给自己定的规则是:尽量走scenic route,前提是每天最多多开半个小时到一个小时的车。
  • 在黄石公园里待几天。总天数九天是很早就敲定了的,因为有些人已经请不出更多的假了。如果在路上用掉四晚,那在黄石公园里面就只有四晚。四晚会太少么?这很难说。国家公园这种地方,给我给再多的时间都不嫌多的。
  • 搭不搭帐篷。黄石里面就不纠结了,四晚都在campground搭帐篷,因为黄石里面的lodge一是贵,二是很难订到,我们四家人家,一订就要订四间房。路上那四晚,我尽量找的是可以不搭帐篷的:第一晚是cabin,第七晚是tipi,第八晚是yurt。
  • 洗澡。洗不洗澡我自己倒是无所谓的,当年在新疆的时候曾经十天不洗澡。而且这次去黄石已经是九月初了,天也不会太热,不会出太多汗。不过考虑到一起去的有一半是女生,我给自己定的要求是:至少要可以隔天洗到热水澡,不可以连续两天不洗澡。
  • 洗衣服:九天是可以不洗衣服的,不过如果中间可以洗一次衣服的话,就可以少pack一点衣服。所以第四、第五晚在黄石里面的campground选的是一个可以洗衣服的。
  • 每日三餐在哪里吃,吃啥。来回路上那几天的午饭地点都是事先找好的。不能等上了路再找,美国手机信号本来就不好,连在Bellevue的一些角落都能没信号,更不说是内陆地区了。快餐店到处都有,但能不吃快餐尽量不吃。晚饭如果要自己做的话,还要找好附近买grocery的地方,能吃新鲜的尽量吃新鲜的,能不吃罐头和泡面尽量不吃。

最后敲定的行程是:去的时候在路上过两晚,第三天下午到黄石,然后在黄石里面过四晚,第七天早上回来,路上再过两晚。我们一共有四家九个人,行程是我一个人做的,其他人都很配合,很easy going,问他们什么他们都说让我决定就好了。

2016-10-16-blog-yellowstone-roadtrip-companions

第二章 热身

去黄石是九月。之前还搞了两次热身活动:六月的最后一周在Mt Rainier露营了两天,国庆节在San Juan岛露营了两天。夏天的campground都非常难订,Mt Rainier的campground是三月份订的,那时候已经快要订不到了:最受欢迎的Ohanapecosh Campground已经订满了,Cougar Rock Campground还有些空位,总算找到了四个连在一起的campsite。San Juan岛的campground更抢手。我们看中的是San Juan County Park的海边营地,无敌海景,无敌日落view。那个campground的reservation是提前三个月开始预定的,国庆节的位子在往年都是开始预定的第一天就被抢光的。这次也不例外,我们有三家人家各自盯着一个campsite,一到半夜12点就点,这样才抢到两个。

选campsite其实还挺有讲究的。最重要的当然是位置:要离大路远一点,否则太吵;要离loop的入口远一点,否则来来往往车太多,对小孩也不安全;要离厕所也远一点,而且要避开大部分人去厕所的必经之路,否则privacy太差,但也不能离厕所太远,万一晚上起来要上厕所呢。除了位置以外,还要纠结其它一些东西。整个site不能全是shade,早上刚起来的那一两个小时和天黑前的一两个小时里,如果能在营地坐着晒晒太阳是很舒服的。也不能没有shade,否则太晒。site还最好要平,有slope的话晚上睡着会很不舒服,不是往一边滚,就是睡着睡着头或者脚就顶到帐篷了。这些信息一般在预订网站上都有。

Mt Rainier的那次camping是郑轶嘉的第一次camping。因为不知道他会不会喜欢camping,去之前的一段时间里面我们给他做了不少心理准备。比如有一本Curious George的书,说的是Curious George Goes Camping,我们给他念了好多遍。他的学校也挺给力的,五月份的时候就在班级里跟他们讲各种camping的知识,Danae老师还带了个帐篷到教室里给他们玩。有了这些准备工作,郑轶嘉对camping充满了期待。

2016-10-16-blog-yellowstone-roadtrip-yijia-mt-rainier

Camping对我来说,最enjoyable的部分是camp fire,就听着木头劈劈啪啪爆的声音,看着火星子窜起来,什么事情都不干,什么话都不说,就这么坐着、看着。不过在Mt Rainier和San Juan岛的那两次露营,只有在Mt Rainier的第一晚点了篝火,第二晚就burn ban了,因为之前一段时间雨水太少,干得厉害,wild fire risk已经是very high或extreme了。在Mt Rainier那两晚,每天晚上听到天上有飞机飞过,ranger说那是巡逻的飞机,看哪里有违反burn ban的。

经过这两次热身,大家相互之间更了解了,分工也有默契了:谁做早饭,谁做晚饭,谁洗碗刷锅子,谁收拾桌子。后来去黄石的时候,大家就都心照不宣了:每次下午到了一个新的营地,三四个人开始从车里卸货、支椅子、支帐篷、吹充气垫,剩下有一两个人支锅、点火、烧水,另外的人开始切土豆、切洋葱、开罐头,都井井有条的;晚饭吃好以后,洗碗的去洗碗,扔垃圾的扔垃圾,去洗澡的去洗澡。过一会儿洗澡回来的人开始生篝火,刚才洗碗和扔垃圾的人去洗澡。早上起来后也是一样,起得早的就先开始烧水、煮面、泡咖啡、煎蛋,起的晚的人就先去洗漱、卷睡袋、收帐篷。吃完早饭以后刷锅的刷锅,装车的装车,准备出发。每次都是井井有条的。

对了,在San Juan岛的时候还有个小插曲:我们中有人遇到一个老伯伯,他说自己有一架波音777,岛上有两个飞机场,他经常直接从Everett飞过来,连ferry fee都省了。我们都觉得其真实性有待验证。

2016-10-16-blog-yellowstone-roadtrip-sanjuan-camping

第三章 上路

九月五日早上八点多,我们出发上路了。中午的目的地是Yakima的“白宫”,其实就是一个叫做White House Cafe的小饭店,跟以前上海的“红房子”是差不多的意思。路上两个多小时,都是highway,没啥风景。其实在靠近Yakima的地方有一段Yakima River Canyon Scenic Byway,极其漂亮。那里还有一家很漂亮的lodge,叫Canyon River Ranch。打算下次去那里住几天,然后在早晨和黄昏去好好拍几张照。

我们四家人家租了两辆车,都是三排座的full size SUV,最后一排放倒放东西。我和Kevin是两个“首席”驾驶员。我们是前一天下午去Bellevue的Avis拿的车。我拿到的是Ford Expedition,Kevin拿到的是Escalade,让我眼馋得不行。曾经一度Escalade是我的dream car,虽然现在不是了。现在我的dream car是(排名不分先后):R8,黑色的911 Cabriolet,黑色的Suburban。

我们两辆车都塞的满满的:睡袋、帐篷、衣服、炊具、camping chair,还有很多食物:

  • 罐头:black bean(黑豆跟洋葱和生菜混一起,包tortilla吃),clam chowder(热一热就能直接吃),玉米,蘑菇,豌豆,金枪鱼,coconut milk,午餐肉
  • 干粮:意大利面,挂面,方便面,面粉
  • 无需冷藏不易变质的:土豆,洋葱,大蒜,红薯,chicken broth,beef stock,花生酱,番茄酱,紫菜,虾皮,榨菜,腌萝卜,广式香肠
  • 零食:瓜子,花生,猪肉干,牛肉干,沙琪玛,爆米花,薯片
  • 喝的:几大桶水,咖啡包,茶包,一箱啤酒,一瓶威士忌

除了这些可以在常温下长期保存的,上路那天也带了些可以管一开始一两天的新鲜食材:西红柿、鸡蛋、面包,一些水果,还有Kevin带了羊肉串,第一天晚上有烤羊肉串吃。再往后就要在路上找grocery store补给了。出门前列采购清单时候的原则是:就算连续两三天买不到新鲜食材,靠出门时带的这些东西也能吃的还不错。

2016-10-16-blog-yellowstone-roadtrip-escalade

2016-10-16-blog-yellowstone-roadtrip-day1

第一天开了300 miles,在Oregon的Emigrant Springs State Park落脚。那里订的是cabin,不需要支帐篷吹气垫,所以事情比较少,于是男的就都闲下来了:除了Kevin在烤羊肉串,剩下的男生就在玩手机、拍照、还有给拍照的拍照。

Cabin睡得很舒服,里面有暖气,晚上热得要把暖气关了。每个cabin有两个bunker bed,加在一起可以睡六个人。美国各地的state park有不少是有cabin的,cabin挡风遮雨避寒,冬天也可以住。华盛顿州的Cape Disappointment State Park是挖razor clam的胜地之一,那里也有cabin,每年razor clam开放的时候一般都是春天,雨季还没结束的时候,去那里住个cabin挖挖razor clam想必是极赞的。Cama Beach State Park也是个有cabin的州立公园,那里还有CWB(Center of Wooden Boat)的一个分部,住在那里的cabin里,可以从CWB租个帆船开开,还能钓螃蟹,有吃又有玩,难怪每年夏天那里的cabin都是订满的。

Cabin唯一的缺点是没有洗手间,所以晚上上厕所还是要穿好衣服出来上的。据半夜里出来上厕所的同伴说,夜里一片漆黑的时候能看到满天的星星。

2016-10-16-blog-yellowstone-roadtrip-road

第二天开了360 miles,下午四点多到了Idaho州的Craters of the Moon National Monument。下午我们是从I-84进入Idaho的,当时车上其他人都在睡觉,就我醒着在开车。我开着开着突然发现手机上的时间不对劲,快了一个钟头。一开始我还因为是手机的时间被郑轶嘉玩手机玩乱了,后来我反应过来了:timezone变掉了。当时心中暗暗叫苦,因为做行程的时候没有把timezone这件事情考虑进去。原本预计下午三点多到Craters of the Moon的,有很充裕的时间可以扎营,然后逛逛。现在突然少掉一个小时,ETA变成四点多了,要不是一路猛开,搞不好连campsite checkin的时间都要错过了。

我们都觉得,论风景、论特色,Craters of the Moon都不逊于其他的一些national park。比如我和朱苹果都认为Craters of the Moon比Crater Lake National Park赞。Craters of the Moon只能叫National Monument而不是National Park,大概是因为那边地方不够大,或者没有足够多的trail。Craters of the Moon有点新疆的魔鬼城的味道,一个个小山包,满目的荒凉,满地的火山石,几乎看不到树,只有几丛很顽强的干草,还有火山石上的地衣。

2016-10-16-blog-yellowstone-roadtrip-craters-of-the-moon-tent

Craters of the Moon的那天晚上是令人难忘的。我们在Craters of the Moon的group site扎的帐篷。那里只有group site才是可以预定的,普通site都是先到先得的。Craters of the Moon的其他普通campsite都在公园里面,只有group site是在公园外面的,要穿过一条公路,推开一扇虚掩的铁门,然后沿着一条unpaved road开进去,开个小一里地的样子才到。那里一片就只有这个group site,那天晚上只有我们那群人。晚上入夜了以后各种诡异的声音忽隐忽现,夹杂在呼呼的风声里,听的人不寒而栗。那天晚上我原打算是等其他人都睡下熄灯以后拍星轨的,但一个人在外面待了一会儿后觉得实在是心里发虚,总感觉草丛里会窜出两只coyote啥的,合计了一下,就还是钻帐篷里睡觉算了。

那天晚上很冷,大概只有零度(摄氏)的样子。我们家带的是20度(华氏)的睡袋,我晚上虽然没被冻醒,但早上起来人感觉冰凉冰凉的。Kevin家的睡袋是40度的,据他说他晚上冻醒了,据他的Jawbone记录显示,他那天晚上的有效睡眠连一个小时都不到。我记得他早上起来以后说了好多遍“昨天晚上冻死了”。所以我们从Craters of the Moon出来以后,在遇到的第一个大town就杀进那里的Sports Authority买睡袋和毛毯去了,因为黄石里面晚上的温度也会降到31、32度。后面几天里,朱苹果是在20度的睡袋外面又套了一个40度的睡袋,我和郑轶嘉又加了一条毯子,就睡得舒坦多了。

第四章 黄石

第三天开了250 miles,总共开了将近五个小时。先是上午开了三个小时,从Craters of the Moon开到Jackson, WY。我们的行程安排就是要到Jackson吃午饭,选的地方是之前有人推荐的Spring Creek Ranch Hotel。那里果然是个好地方,餐厅正对着山谷和对面的群山。等到冬天的时候,对面山上都盖满了积雪,一条条雪道上穿梭着滑雪的人们,那样的景色肯定更赞。下次来Jackson Hole滑雪可以考虑住这里。

2016-10-16-blog-yellowstone-roadtrip-jackson-1

从Jackson去黄石的路上会经过大提顿,大提顿也是一个国家公园(Grand Teton National Park)。我们没在大提顿花太多时间,就是沿着公园里面的路一路开过去,在visitor center和几个view point停了一下,郑轶嘉就在车里一路睡,所以我也没怎么下车拍照。后来,我从黄石回来以后才知道,原来Grand Teton这个名字是以前法国人起的,它的意思就是“大胸”(big tits)。

2016-10-16-blog-yellowstone-roadtrip-jackson-3

2016-10-16-blog-yellowstone-roadtrip-map

穿过大提顿就是黄石的south entrance。

黄石国家公园基本上就是一个方块的形状,东南西北各个方向都有entrace,进了园子,里面的路就是一个“日”字形,主要的景点、campground、lodge、village和visitor center都在这个“日”字上。问题来了:“日”字不能一笔画。加上我们是从south entrance进,从west entrace出,走很多重复的路是不可避免的。而且黄石里面的路看上去距离不长,每一段都只有一二十mile,但限速低,加上经常会因为bison跑到马路上来而塞车,一二十mile的路一般都要做好开大半个小时的准备。

我们在黄石一共住四晚,都是tent camping:第一天在Grand Campground,第二第三天在Canyon Campground,第四天在Madison Campground。Grand在“日”字的右下角,离south entrance最近。Canyon在“日”字右边中间的位置。Madison在“日”字左边中间的位置,离west entrance近,这样最后一天早上从营地出发可以早点离开黄石、早点到下一站。Grand和Canyon都有洗澡和洗衣服,也有可以吃晚饭的餐厅。在餐厅吃晚饭就可以不用很赶,可以用天黑前的那段时间洗澡洗衣服。

2016-10-16-blog-yellowstone-roadtrip-sunset

Grand和Canyon的campground入口的地方还有卖firewood,我记得是七块钱一纸箱,价格公道量又足,而且木头很干,很容易点着。那段时间黄石没有burn ban,所以我们每天都点篝火,早上起来也会烧几根,一边烤烤火一边吃早饭,很能驱寒气。

黄石的campgsite是三月就都订好了的。订的时候也没细想,就订了四天三个不同的地方,可以少走一些重复的路。但后来去Mt Rainier和San Juan岛热身了以后发现,每天拆装帐篷还满花时间的。尤其是我们家,有三个人,要比别人家多卷一个睡袋,多吹一个枕头,多充一个气垫,加上郑轶嘉一定要来帮忙(其实有他帮忙更慢),每次搭或拆,加上装车或者卸货,都要搞上大半个小时。所以从San Juan岛回来就有点后悔,想重新订一下黄石里面那四天的营地。那时候再去看,就已经订的满满的了。虽然后来熟练了以后能在半小时内完成收睡袋、收帐篷、打包、装车,但如果让我再来一次的话,我一定把四天都订在Canyon。

2016-10-16-blog-yellowstone-roadtrip-bison

2016-10-16-blog-yellowstone-roadtrip-geyser

2016-10-16-blog-yellowstone-roadtrip-pool

2016-10-16-blog-yellowstone-roadtrip-traffic-jam

黄石里面主要就是看三样东西:看动物、看间歇泉(geyser),看各种五彩的池子。黄石里面最多的动物就是bison。有些人也管它叫buffalo,反正就是那种毛很长的野牛。刚开始看到bison的时候还老兴奋的,对着一阵拍。漫山遍野的bison,还经常成群结队的过马路,造成堵车。遇到bison过马路,如果有辆车明明是可以开走的,但还是在那里以1 MPH的速度在磨蹭,那多半是第一天刚到黄石的。大部分人到了后面几天,实在是已经看到了太多的bison,小视频都发了一堆了,再遇到bison,就算是牛群从车窗边走过都懒得掏手机了。

黄石附近的farm还有人养bison,然后把bison肉拿到饭店里卖。黄石里面的餐厅基本上都有卖bison肉做的汉堡。我在Grand Village Dining Room那顿晚饭吃了一次bison汉堡。价格也就跟普通饭店的普通牛肉汉堡差不多,肉质差不多,味道也差不多,如果弄个双盲测试的话我估计是吃不出来bison汉堡跟普通牛肉汉堡的区别的。那家餐厅还有卖elk肉汉堡,朱苹果点了一份,我蹭了一口,觉得味道也没啥特别的,不太juicy。汉堡其实还是The Keg的汉堡好吃。

Elk在黄石里面并不是很容易看到。我们一直到离开黄石那天早上才在去往west entrace的路上看到两只,一雌一雄(我不是在说大闸蟹,咳咳)。雌的在河里,离我们特别近。雄的那只在河对岸的树林里,远远的跟着那只雌的。那只雄elk的角特别好看,很高很大。

2016-10-16-blog-yellowstone-roadtrip-elk

大型动物里面我们这次就只看到了elk,没看到熊,没看到moose,也没看到狼。据说Lamar Valley和Hayden Valley能看到熊。所以我们特地去了一次Lamar Valley,但只看到一些鹿,还有一只狐狸。我觉得还是timing不好,因为据说熊是在清晨和黄昏出来活动的。而我们这帮人,早上爬起来吃好早饭收拾好,上路时太阳已经老高了。傍晚我们一般也都早早的就到了营地。要是想要在黄昏的时候在外面看动物,得要在一个campground多住几天,这样每天不用搬家,不需要到新的营地checkin、搭帐篷,也可以留出几天不用洗澡洗衣服的。

早上早起去看动物是another story。我们这帮人基本上都爱睡懒觉。有一天我提议第二天早上赶在日出前去Yellowstone Canyon拍照,当时还有一两个报名的,到第二天早上就都睡的呼呼的。后来就我一个人自己去的。不过camping的时候要那么早起来的确挺有挑战的。那几天晚上都只有零度左右,早上日出前正是最冷最冷的时候。帐篷里又没有暖气,跟帐篷外面也没差几度。要从温暖的睡袋里钻出来,把冰冰冷的衣服穿到身上,那是需要很强大的will power的。

2016-10-16-blog-yellowstone-roadtrip-waterfall

天蒙蒙亮的时候就出去拍照,本身就是一个很享受的过程:路上一辆车都没有,感觉整个公园都是你的。到了拍照的地方后,说不定能遇到另一个也是一大早起来拍照的人,两个素不相识但志同道合的人一边搭三脚架一边聊两句。一切准备就绪后,在等待照进峡谷的第一缕阳光的那段时间里,从保暖壶里倒出一杯热腾腾的咖啡,一小口一小口的喝着,每一口都暖到心里。等到天边的朝霞越来越亮的时候,开始按动快门,每隔二三十秒按一张,一直按到树梢上那一缕金色慢慢消失,收工,回营地。一路上都觉得心满意足,相信刚才那几十张里一定能选出一张很漂亮的,可以让小伙伴们起来以后盗图。

就算不用早起出去拍照,我一般也是我们这帮人里面每天最早起来的之一。我特别喜欢一大早钻出帐篷那一刻的感觉。感觉一下子就回到大自然里面了。那时整个campground安安静静的,只有一两家也同样早起的,已经把campfire点上了,远远的传来了木柴烧着时的劈劈啪啪。那时的campground没有孩童的嬉闹和大人的高谈阔论,也没有嗡嗡响的发电机和叫个不停的狗。

2016-10-16-blog-yellowstone-roadtrip-madison

美国的国家公园基本上都不许带狗,狗最多只能在visitor center、picnic area和一小部分paved trail放出来(但仍然是要on the leash),大部分的trail都是不许带狗的,所以经常可以在停车场里面看到车里没有人但有条狗。主要的原因是狗会影响到国家公园里的其他动物,尤其是一些比较小的动物。黄石也不例外。而且黄石更严格,基本上就是狗只能留在车里或者campground。Douglas Scott的那本书里解释了黄石为什么对带狗那么严格。

书上说,八十年代的时候有个小伙子带着狗去黄石,走trail看那些五彩的池子。也不知道是因为被晒得太热了想要降降温,还是那条小狗就是喜欢在水池里玩水,结果在池子边上走着走着小狗就蹦到池子里去了。小狗其实看不懂警示牌,不知道黄石的很多池子其实都是很烫很烫的。小狗一进去就烫的不行了。它的主人于是就跳下去想要救它,结果也没上来。一人一狗就活活被烫死了。作者说当时惨不忍睹,就像是煮鸡汤煮肉汤的感觉,肉都熟了从骨头上分开了,油花都飘出来了。据说当时油花就在池子里飘了好几年,因为黄石的那些池子并不是活水,所以自净能力特别差。

看了这个故事以后我就一直特别担心,就怕郑轶嘉也说要去玩水结果掉进池子里去。所以去黄石前我跟朱苹果反复叮嘱,还把那个一人一狗的故事跟她说了,把她恶心得不行。不过效果挺好的,她记得特别牢。

这次road trip和连着好多天camping,郑轶嘉玩的特别开心。他一点都不介意睡帐篷,也不介意没有澡洗,对他来说,能够每天跟爸爸妈妈钻在一个帐篷里睡觉,比在家里在自己房间一个人睡一张床要开心多了。何况白天还能看到那么多的牛(bison),还能跟爸爸一起搭帐篷、生篝火,简直就是乐不思蜀了。直到现在他还时不时问我,爸爸,我们什么时候再去camping。一起去的其他三对小夫妻也对郑轶嘉特别好,我和朱苹果都在忙的时候他们就陪郑轶嘉玩,跟他聊天说话。这很难得,很多没有孩子的年轻夫妇并不是很能跟小孩子玩的来的。

2016-10-16-blog-yellowstone-roadtrip-campfire

第五章 回家

第七天早上是被鹿鸣吵醒的,就是那种pitch很高、拖得长长的啾啾声。离开Madison Campground营地,往西开大半个小时就是公园的west entrace。第七天的目的地是蒙大拿州的Beavertail Hill State Park。从第六晚的营地到第七晚的营地有两种走法,花的时间都差不多。一种是从西门走,会途径Virgina City。另一种是从北门走,可以途径一下恐龙化石博物馆。我选的是Virginia City。去了以后发现跟想象中有一点差距,不过还不算太差。Virginia City其实是个拍照的好地方。也可以拍婚纱,穿那种一百多年前的装束拍,应该还挺有感觉的。郑轶嘉在那里吃到了一个大冰激凌,他有冰激凌吃就满足了。

2016-10-16-blog-yellowstone-roadtrip-virginia-city

Beavertail Hill State Park附近方圆半小时路程里有好几个可以露营的地方,当时做行程的时候选了它,主要因为它有tipi。Tipi就是那种印第安人的帐篷,以前从来没住过,所以这次想尝试一下。不过最后我们家还是睡了自己的帐篷,因为发现我们的tipi里有很多虫子,有点恶心。这也难怪,cabin也好,yurt也好,都是房子,都有门,有地基有地板,里面都是睡在床上的。而tipi里面什么都没有,直接睡在地上的,而且tipi没有门,就是一块帆布搭着,分分秒小虫子能进去。

Beavertail Hill State Park最坑的地方还不是tipi里的虫子。最坑的是边上的火车轨道。离我们营地几百米以外就是一条繁忙的铁轨,整夜火车来来往往的,连我这种沾枕就着的都觉得半夜迷迷糊糊听到好几次火车声音。所以教训是:以后找campground的时候要在google maps上看一下边上有没有铁轨,边上有铁轨的campground不能要。

2016-10-16-blog-yellowstone-roadtrip-tipi

第八天,从Montana到Idaho。这天时间特别充裕,因为时区从Mountain Time回到Pacific Time了,多出来一个小时。Idaho真是个神奇的州,一个州有两个时区,北面一半是Pacific Time,就是和华盛顿州同一时区的;南边一半是Mountain Time,和Montana和Wyoming同一时区。我们第二天从Oregon进入Idaho的时候进的是南边那一半,所以突然的少掉了一个小时。第八天从Montana进入Idaho、以及在Idaho里面开的余下的路都在北边那一半,所以第八天就多了一个小时出来。

第八天我们又被坑了。这次是被GPS坑的。

第八天的路线是从Missoula开始离开I-90,改走Highway 12往西南方向,一路穿过那一大片National Forest,然后到达Winchester Lake State Park。照理说从Missoula开始沿着I-90,经过Spokane一路回家是最快最近的走法。但安排行程的时候选择了走Highway 12是因为穿过National Forest的那段路是条scenic drive。Highway 12从National Forest出来以后就到了Kooskia,从那里到Winchester Lake State Park,GPS让走的是Highway 64。现在回头看看,Highway 64的确是最合理的路线,其他路线都要绕好大好大的圈子,多开至少半小时甚至一小时的路。但没想到,Highway 64中间有长长的一段是unpaved road,而且还是盘山路,最窄的地方看上去都容不下两辆车对开。刚开上Highway 64的时候还那么凶险,仍然还是柏油马路。但越开越不对劲,等到手心开始出汗的时候已经太晚了,已经在半山腰的窄窄的unpaved road上了,掉头都没可能了,看上去车横过来前轮就会出去的样子。倒车倒回去比继续往前开更危险,因为说不定会撞到后面开上来的车。于是只能硬着头皮继续开,心里暗暗祈祷车子不要熄火,不要掉链子。那地方还特荒,山坡上树一棵都没有,要是从路边冲出去了,就一路滚下去了,连个阻挡都没有。我这当司机的尽管心里发毛嘴上还要硬撑着,让车上的乘客对我的技术有信心。所幸最后总算开出去了,没出啥事情,要是出事情了我也就不会在这里写博客了。

后来到了营地,跟另一辆车汇合,一聊才知道,他们也走了那条路,他们也吓尿了。

第九天一早起来,吃好早饭收拾好东西,就一路开回家了。其实我挺想在中间stop by一下Ginkgo Petrified Forest State Park的。不过出门好多天了,都乏了,大家都没心思再去什么景点。Camping虽然开心,但还是家里最舒服。

2016-10-16-blog-yellowstone-roadtrip-yurt

第六章 尾声

回来以后,我们这四家人,除了那家念法学院还在考bar的,其他三家人家都干了同样一件事情:造人。现在第一个已经能抬头了,第二个刚刚出来,第三个还有两个月。我觉得可以过几年再组队去一次。那时候估计就是拖trailer去了,不搭帐篷了。下次再去最好还是冬天,白雪皑皑的时候去,然后带个长点的长焦,在园子里多趴会儿,喝喝hot chocolate,拍拍熊,拍拍狼,拍拍moose和elk。

如果希拉里当了总统

很多人担心,共和党在今年的选举中将会全面落败,不但总统选不上,连参众两院的多数席位都会保不住。更让他们担心的是,如果希拉里当了总统,她很有可能在四年时间里有机会任命四名新的大法官[1]。加上民主党控制了行政和立法分支,这将导致美国社会全面一边倒,彻底转向liberal。

我的观点是:历史已经证明,美国的政治体系有非常强大的自我平衡和自我修复能力。

最好的例子就是FDR的court-packing plan的失败。 1937年2月,当时的总统Franklin D. Roosevelt提出把最高法院的人数从9人提高到15人。他这样做的目的是想要摆脱最高法院对他的New Deal的掣肘[2],因为在之前的数年时间里,最高法院多次判决New Deal的一些法律违宪无效。今天我们回头看FDR当时身处的政治环境,很难想象court-packing plan会失败:FDR当时刚刚赢得大选,开始第二任总统任期,在1936年的总统选举中,FDR获得一边倒的胜利,48个州里他赢了46个州,得到了总共531张选举人票里的523张,得到了60.8%的popular vote;另外,1937年初,民主党占据了参议院96席中的75席(78.1%)和众议院总共435席中的334席(76.78%)。民主党在参众两院都拥有绝对多数。从各个角度来说,当时FDR的局面都是空前绝后的好[3][4][5][6]。但court-packing plan仍然失败了,不能不让人感叹物极必反、人在做天在看。

美国的两党政治两百多年了,一直就是来回摇摆,从来没有出现过一党独大几十年的情况。除了二战的时候,过去一百年里从来没有哪个党能连续赢得四次总统选举。与之相应的,最高法院也没有出现过极端偏左或偏右的情况,一直是围绕着中轴震荡,微微偏右[7]。最有意思的是,从1937年到1943年,在FDR第二任和第三任总统任期内,他得以任命多达8名大法官,然而从三十年代末到四十年代末,美国最高法院的ideological leaning从liberal一路转向conservative[8]

偏liberal的最高法院也并不完全是坏事。在今年的Utah v. Strieff里,最高法院裁定,警察通过unlawful stop获得的证据是admissible的。在2013年的Salinas v. Texas案件里,最高法院裁定当事人并不能得到第五修正案的保护,因为当事人并没有expressly invoke他的第五修正案权利[9]。在这两个案件里,conservative的法官都是在多数一方,三位liberal的法官(Ginsburg、Sotomayor、Kagan)[10]都是在少数一方,并且写了反对意见。在我看来,最高法院在这两个案件上的裁定都是偏向有利于警察和政府的执法人员的,并且可能伤害到普通民众的权利。尤其是Utah v. Strieff可能会导致钓鱼执法的增加,另外有the end justifies the means之嫌。所以,在有关第四修正案和第五修正案权利的问题上,我是认同liberal的大法官的。


[1] 今年上半年去世的Scalia,加上今年83岁的Ginsburg、80岁的Kennedy和78岁的Breyer (source)
[2] 台面上的说法是当时的大法官年纪都太大了,不堪重负,要引入年轻人分担一下。不过无论是当时的舆论还是后来的史家都很清楚,FDR此举的目的就是为了控制最高法院。
[3] 1936年FDR得到了总共531张选举人票里的523张,也就是赢得了98.49% 的electoral votes,在整个美国历史上仅次于1820年的James Monroe[3]。Monroe当时得到了总共232张选举人票里面的231张,也就是99.57%。(source)
[4] 1789年和1792年的George Washington得到了100%的选举人票。不过George Washington没有可比性。
[5] 自从1824年开始统计popular vote至今,只有1964年的Lyndon Johnson得到了比1936年的FDR更多的popular vote。1964年LBJ得到了史上最高的61.05%的popular vote,其次就是1936年FDR的60.80%。(source)
[6] 在FDR之前,上一位在congress有如此多的多数的总统是内战后的Ulysses S. Grant。在Ulysses S. Grant之前,就要上溯到James Monroe、James Madison和Thomas Jefferson那几位founding father当总统的时候了。在FDR之后,再也没有总统有过如此高的国会多数。(source)
[7] Source: wikipedia
[8] “As the Martin-Quinn graph shows, by the 1939 term, Roosevelt had moved the Court to a more liberal position by appointing four new justices including strong liberals Hugo Black, William O. Douglas, and Frank Murphy. However, led by the increasingly conservative Chief Justices Harlan Stone and Fred Vinson, the Court shifted in a more conservative direction through the early 1950s.” (source)
[9] 最高法院裁决的原文是这么说的:“When petitioner had not yet been placed in custody or received Miranda warnings, and voluntarily responded to some questions by police about a murder, the prosecution’s use of his silence in response to another question as evidence of his guilty at trial did not violate the Fifth Amendment because petitioner failed to expressly invoke his privilege not to incriminate himself in response to the officer’s question.”
[10] Breyer是liberal的大法官,但他在Utah v. Strieff案里是在多数一方。

Apptio是个好公司

Apptio最近上市了。

去年Apptio给过我一个offer。工资加奖金勉强赶上我当时的工资,然后就是一堆stock option。当时算下来觉得从财务角度[1]来说很不划算,所以没要那个offer。当时根据offer里给的stock option数量、strike price、以及total shares,算下来觉得Apptio上市以后的市值要达到$2.8 billion,这个offer从财务上来说才算是打平。但根据Apptio告诉我的annual run rate以及之前两年的增长率,再参考SaaS公司的一般multiple,我当时认为Apptio如果在1-2年里上市,能达到$2.8 billion market cap的可能性很低。

今天Apptio的市值大概是八百多million,股价二十几块。这样看来,当时的决定是对的[2]。我觉得我要感谢Apptio,当时我一问annual run rate和total shares,他们就告诉我了[3][4]

相比之下,我去年谈的另一家公司的做法就太不厚道了。那是一家国内的独角兽大厂,据说两年内要上市。他们的offer里给了我n股股票[5]。给我offer的HR跟我说,现在他们每股价格是x元,过两年上市以后价格会是y元。我就问这个x和y是怎么算出来的,那个HR不肯说。于是我就问total outstanding shares是多少,HR的回答是这个我们不能说。虽然纸面上 (y-x)*n 这个数字还蛮大的,但我最后还是没要那个offer。原因有好几个,其中之一是“Don’t work for someone who … won’t tell you what percent you own.[6][7]

相比之下,Apptio是个好公司。



[1] 这篇文章满有意思的: Big Company vs. Startup Work And Pay
[2] 也许APTI会像TWLO那样在上市以后的三个月里面涨三倍,不过那跟拿不拿Apptio的offer没有太直接的关系。
[3] 如果他们不告诉我,我也还是可以自己毛估估的。但以我的水平,毛估估的误差太大了。
[4] 看了一下Apptio的S-1 filing,里面的shares和revenue数字跟他们当时告诉我的基本一样。诚不我欺也。
[5] 一开始跟我说是期权,但后来各种细节问下来,怎么听怎么像是RSU,比如vest的时候就要交所得税。
[6] “Why are startup employers hesistant/unwilling to give information like % equity offered when making an offer?”
[7] “Should you join a startup if they refuse to disclose the percentage equity ownership you are getting as part of your offer?”

如何向国内的亲朋好友解释Preschool、Pre-K和K

中国有托儿所和幼儿园,幼儿园有小班中班大班。小学从一年级到五年级,原来的小学六年级很多年前变成了初中预备班。然后初中三年,初一初二初三。高中三年,高一高二高三。美国的中小学体制很不一样,很多身在美国的人都搞不清楚,包括我自己,一直到我们自己的孩子快到上学的年级了才慢慢弄明白。今天我想把它给写下来,这样以后这边的其他同学们要向国内的亲朋好友解释Preschool、Pre-K和K的时候就不用打很多字了,直接转发我的这篇就可以了。

总的来说,美国的中小学体制的一个特点是:。年级的划分不但每个州不一样,连在同一个county里,甚至是同一个school district里的公校之间都会很不一样。再加上私校,就更乱了。下面细细的来说,不想看的可以直接跳到最后的总结部分。

首先是托儿所和幼儿园。在美国,小学之前的一般都统称daycare。有些daycare接受最小只有六周大的infant。能接受3-6个月大的婴儿的daycare比比皆是。美国所有的daycare都是私营的,有些规模比较大,比如Bright Horizon是一家连锁daycare,还是一家上市公司。有些规模比较小,就开在民宅里,价格相对便宜,一般叫”family daycare”。Daycare一般按照年龄分级:

  • Infant: 一岁(12个月)以下
  • Toddler: 1-2岁(12-24个月)
  • Twos: 2-3岁
  • Preschool: 3岁
  • Pre-Kindergarten(简称Pre-K): 4岁

美国人(至少是西海岸的美国人)基本上没人管幼儿园叫nursery school。Nursery在美国人的语言里指的是苗圃,那种卖花花草草的店,尤其是那些开在suburban的。不信,你去Google Maps,找到西雅图,然后搜nursery。排名第一的是一家topsoil supplier(卖土的),排名第二的是Molbak,他们的店在Woodinville,离我家开车就几mile。我特别喜欢他们家,我觉得Molbak是nursey里的爱马仕。

另外一个很容易翻译错的词是kindergarten。美国人不管幼儿园叫kindergarten。美国人用kindergarten特指小学(elemetary school)一年级之前那一年(小学预备班?)。如果一定要翻译,那么kindergarten更接近国内所说的幼儿园大班的意思。

混乱的局面是从幼升小开始的。

美国的小学叫做elementary school。典型的美国小学有6个年级:Kindergarten(简称K), 然后是Grade 1到Grade 5,也就是一年级到五年级。如果你看到某个小学的简介上写着”Grades: K-5”,就是说这个小学的年级是从K一直到五年级。美国小学的一年级(Grade 1)倒是和国内一样的:一般是满六周岁可以上一年级,当然例外情况也并不罕见。但是,还有数量相当多的美国小学(包括公校和私校)不是K-5的。他们的年级范围五花八门:

问题就来了:Pre-K到底是在daycare(幼儿园)里上,还是去elementary school上。在daycare上Pre-K吧,怕小孩被放羊了。去小学上Pre-K吧,又怕小孩过早压力过大。不过大部分想推娃的都是会选择去小学上Pre-K的。

小学后面是中学。现在国内的中学慢慢跟美国的很像了:初中和高中是分开的,很多学校只搞初中,很多学校只搞高中。不像我念书的时候,那时候主流的中学的配置是初中+高中。美国的主流配置是:初中和高中是分开的。主流的public school里面,一所学校要么是初中(middle school),要么是高中(high school)。公校的初中和高中的年级划分还算比较整齐划一:middle school一般都是6-8,就是六年级到八年级,三年;high school一般都是9-12,就是九年级到十二年级,四年(对的,美国高中是四年!不是三年!)

个么问题又来了:既然初中都是6-8的,那么万一现在的小学是K-4的,那么Grade 5去哪里上呢?办法也不是没有,那就是:上私校($$$$)。私校的中学就五花八门了,什么样的年级配置都有,而且很多都是初中高中合起来的,初升高的时候少折腾一次还是很有吸引力的(但是,$$$$)。常见的有:

太变态了,有没有!比如,要上7-12这种中学,岂不是小学就必须要上K-6的?否则,如果上的是K-5的小学,岂不是还要另外找个地方把6年级给补上?还是说对于个别天资特别高的小孩,上完K-5就直接跳级进7-12了?不懂。我觉得大概过几年等郑轶嘉要上中学了我也许就能把中学的事情也彻底搞明白了。不过话说回来,我念书的时候还没有初中预备班这么回事儿,那时候的中学里面,7-12是标配啊。

以上这些还不算是最奇葩的。还有更奇葩的:

混在狮子座里的处女座表示:这简直让人不能忍啊!

当然,最让人省心的是家里附近有一所K-12的学校,十三年一贯制,一所学校里从K到Grade 12(相当于高三)都管了。这样的学校其实还蛮多的(但都是私校$$$$),比如我们家这边的The Bush School。对了,他们家的中文名字是“布什学校”么?

说了那么多,总结一下。一般来说,

  • 美国的高中是4年,从Grade 9到Grade 12。相当于国内的初三到高三。
  • 美国的初中是3年,从Grade 6到Grace 8。相当于国内的初中预备班到初二。
  • 美国的小学是6年,从K到Grade 5。相当于国内的“小学预备班”到小学五年级。
  • 美国的Pre-K就是K之前的一年。
  • 美国的Preschool就是Pre-K之前的一年。

我为什么不赞成压低级别(续)

在我看来,面试就是对一个人的能力值的观察,而定级就是对观察值取整。

为了简化讨论起见,假设每个人本身都有一个能力值,比如8.1。这个值随着人的成长会变高。这个值可以通过观察得到,但观察结果总会有偏差。由于观察者本身的差异,不同的观察者会得到不同的观察值。有经验的观察者和没有经验的观察者得到的结果也会不一样。一般来说,观察时间越长,观察结果更接近真实值的可能性越大。无论是面试后的定级,还是内部晋升,都是对观察值取整。例如,内部晋升的取整策略往往就是round down,向下取整:观察出来的能力值达到8.0或以上的可以升8级,观察值是7.9的就继续留在7级上。这种做法基本就是行业惯例,而且无可厚非,因为不管怎么做,线总是要画一条的,画在哪里都是画。内部晋升的时候,观察时间会很长,一般都起码有几个月时间,所以观察值比较接近真实值的可能性很大,一个真实能力8.1的人,观察结果可能就会在7.9到8.2这个区间里。所以在内部晋升的过程中,真实能力没有到8.0但是被升到8级的情况一般很少发生,真实能力已经有8.1或8.2了但没有升到8级的也很少发生[1]

面试也是一个观察过程。这个观察过程时间非常短,手段非常局限,观察者数量有限。所以面试的观察结果的误差范围会相对大很多。而且由于某些因素的影响,观察值偏低的可能性比更大一些。这些因素包括:被观察者会紧张、劳累;观察者在询问被观察者一些问题的时候可能用了一些被观察者不熟悉的术语,或者同样的术语在双方的理解中含义不同;观察者询问时在无意中可能包含了未说明的假设;等等。再加上各种各样的unconscious bias,综合起来的结果就是观察值偏低。比如一个真实能力为8.1的人,面试下来观察值可能会在7.6-8.0这个范围。如果在面试的时候采取和内部晋升同样的策略,即round down,那么这个被观察者有很大可能就被round down到7去了。但是,如果在取整时使用四舍五入(也许叫五舍六入或六舍七入会更准确一些),那么这个人会被四舍五入到8。因此在这类例子里,“四舍五入”能比向下取整得到更准确一些的结果。

“四舍五入”的策略的确会带来一些风险。比如,一个能力值是7.5的人面试下来的观察值有可能是7.7,结果“四舍五入”就把他/她定到8级去了。不过,我认为这个风险是比较低的,主要原因就是前面所说的,面试作为一个观察过程,观察结果往往是偏低的。换句话说,要真实值在7.8到7.9左右的才有比较大的机会被“四舍五入”的策略“错误的”定到8级。7.8或7.9的被定到8级,这样的误差是否可以接受,这取决于每个公司的具体情况,取决于供需关系。每隔几年都会出现少数特别火爆的公司,所有的人都以加入这样的公司为荣,在这样的公司就职的经历是会给简历大大加分的。对于这样的公司来说,供需关系是极其有利于公司方面的,这样的公司因而可以施行“宁可错杀一千,也不漏网一个”的标准。这样的公司即使在面试中使用round down策略,也不会有损于它们的招聘需求。但另一方面,绝大部分公司都无法真正做到”we only hire the best”,对它们来说,采用“四舍五入”的取整方法是一个比较好的折中:继续维持相对高水平的招聘标准,同时适当的降低招聘的难度。

在某些场合,面试得到的观察值并不会总体偏低,甚至有时候会总体偏高。在这些场合下,“四舍五入”的策略是不合适的。比如,当信息流动不畅,而candidate又顶着一块金字招牌的时候,很多观察者很容易受到金字招牌的影响而得到高估(甚至是大大高估)了的观察值。又比如,对较低层级的程序员的面试一般都比较标准化,主要就是编程题,考察的能力也主要就是算法和写代码能力。标准化考核的一个与生俱来的问题是可以事先准备,有题库,可以刷题,体现在结果上就是“高分低能”。编程题也不例外,有LeetCode等各种题库,还有人提供培训服务。我去年就在我的另一篇文章中指出,LeetCode之类的题库就像是体育比赛中的兴奋剂,它可以提高在面试时的表现,但效果并不能长久维持。很多能通过编程面试的人一旦进入真正的工作中,就会写出bug百出的代码。这些bug如果出现在面试中,他们是绝对没有机会通过面试的。所以,对于以编程题面试来说,不但不能用“四舍五入”,反而应该适当的把观察值调低一些[2]。相对来说,“四舍五入”更加适用于那些“非标准化”的考查类型,例如,对PM和manager的面试。

“四舍五入”的另一个作用是对那些undersale的被观察者的补偿。面试中,有些candidate比较能sale,说的难听点,比较能忽悠、能吹,能把自己做过三分的事情说成五分、七分。而另一些candidate比较不太能“吹”,容易undersale自己。大多数有经验的观察者对于前一类的candidate的甄别能力都比较强,但往往对后一类的判断力比较弱。这是有原因的:那些把三分说成五分、七分的人更有可能拿到超过他们自身能力的offer,因此更有可能take offer;而undersale自己的candidate更有可能拿到undervalue自己的offer,因此更有可能拒绝offer。我们作为观察者,提高自己观察能力、观察准确度的一个途径是考查过去的样本,把自己在面试时候的判断跟一起共事工作以后的判断做比较。由于overvalue的样本更多,久而久之我们鉴别这类人的能力就有更大的提高。另一方面,我们身边undersale的样本数量总体偏少,因此我们鉴别undersale的candidate的能力提升得就不太多。“四舍五入”能帮助观察者纠正对undersale的candidate的判断。

“四舍五入”作为一种对观察值进行修正的策略会不会导致over-correction呢?这个可能性不是没有。但对是否over-correction的判断本身也是一个观察过程,也会必定无法给出真实值,只能给出一个观察值。只要是观察值,就会存在error和bias。常常是当我们对over-correction担心的时候,其实correction得还不够。有很多传统智慧都是鼓励over-correction的。比如帆船界有一句俗语,“When in doubt, take a reef”。很多关于unconscious bias的实验数据都指出,哪怕我们有意识地对unconscious bias做出补偿,我们仍然可能补偿的还不够。


[1] 不考虑其他因素,比如名额限制、组织架构变动等。
[2] 这是非常不幸的。这让我想起了前几年美国大学对中国学生的GRE成绩会打折处理,原因就是中国学生普遍使用题库刷题来提高GRE成绩,而少数不刷题的中国学生也不得不开始刷题,这样年复一年,GRE考试作为一个对学生能力的观察过程,在运用在中国学生身上时,得到的结果越来越偏高,导致观察者不得不把观察值进行人为调低。

阿里月饼事件: My Concurring Opinion

最近我在看前美国首席大法官William Rehnquist写的《The Supreme Court》。书里多处提到在一些案子里,有一些大法官另外写了一份concurring opinion。

维基百科是这样解释concurring opinion的:“协同意见书(英语:Concurring opinion),法律术语,源自于英美习惯法,是一种由法院中的法官撰写的法律意见书。当法官同意主要意见书的决定,但是他同意的理由与其他法官不同时,法官可以独立撰写协同意见书,以陈述自己的意见”。

关于最近的阿里月饼事件,我是同意阿里开除那几个员工的决定的。不过我同意的理由和官方给出的理由略有不同。所以以下也算是我的“concurring opinion”。

我认为这几个人的错误是不遵守游戏规则

写脚本这个行为本身并没有错(假设阿里这次秒杀月饼活动并未事先规定不可以用任何automation,以及阿里公司IT章程没有类似“未经授权,禁止使用脚本访问任何内部IT系统”的条款)。但阿里这次的秒杀月饼活动事先已经说清楚了,每人限三盒(一个订单)。这几个被开除的员工,最少的一个用脚本下了三个订单,也就是九盒。

既然规则已经说清楚每人最多三盒,无论秒杀系统是否enforce这个规则,所有的参与者都有义务去遵守。遵守规则不需要理由。如果一扇门上写着“Authorized Personnel Only”,就算门没有锁,我们也不可以推门进去。如果路口竖着一个stop sign,就算没有摄像头、没有警察、没有车,也应该停下后再走。如果一块空地上插着一个“Private Property No Trespassing”的牌子,就算周围一个人都没有,我们也不可以进去。

知乎上最近有个问题很火:“中国现在到底有多落后?”。在我看来,中国至少在一件事情还很落后:遵守规则。而且还形成了恶性循环:因为大家都不遵守规则,所以每个人都只能不遵守规则。具体例子就不举了,信手拈来一大堆。对规则的漠视早已深深的渗透在了大多数人的价值观里,整个社会笑贫不笑娼,不择手段获取利益是被普遍默许甚至鼓励的。还有一些人,虽然不以获利为目的,但喜欢通过挑战规则、打擦边球来体现自己的水平,还有围观的人拍手叫好。

一个国家,如果国民们都不遵守规则,那国民凭什么要求他们的政府遵守规则呢?“法治的意思就是指政府在一切行动中都受到事前规定并宣布的规则的约束”[1]。如果政府不遵守规则,那就没有法治,最后吃亏的还是国民们自己 。


[1] 哈耶克,《通往奴役之路》,第六章

我为什么不赞成压低级别

前两天读到一篇博客,作者是码工界的名人。作者在文章中写道:“(某公司)在招我的时候,努力的压低工资和职称,比我之前的职称还低,跟我说什么‘小公司的职称不算数’。被我断然拒绝,然后不得不给我加了工资,改口说那职称是‘为了我好’”。这个作者的具体情况我不清楚。不过总的来说,招人时压低级别的做法在国内外各家大公司里都挺普遍的。

Recruiter和hiring manager的常见说法有这么几种:

  1. “我们这里发展空间很大的,你来了以后只要做出成绩来,很快就可以升的”
  2. “给你一个低的级别是为了保护你,因为这样别人对你的expectation会低一点”
  3. “我们很看好你的能力,但我们这里升8级一般都要做出东西来才可以升”

这种压低级别的做法背后的原因很多。有些公司有几年特别火,就算是压低级别大家也还是排着队要去,那不压白不压。有些是recruiter和hiring manager的贪小便宜的心理在作祟,就跟那些淘二手货的人类似,无论卖家开价开得多低,他们总是喜欢再砍掉点。有些recruiter觉得先扔个low ball然后再慢慢往上抬会比较容易谈成。遇到这些公司和hiring manager,不去也罢,没必要糟净自己。

还有一种比较常见的情况是面试面下来hiring manager觉得这个candidate处于7级和8级之间,为了保险起见,就先给一个7级的offer吧。他们大概是担心万一给了8级招进来,结果工作一段时间以后实际表现出来的能力还不完全满足8级的要求。他们担心这样子会影响团队其他成员的士气,不但团队里其他7级的人可能就会觉得不高兴,也许其他8级的人也会觉得不高兴:“我的8级含金量十足,而他的8级水分好多”。很多hiring manager在可上可下的时候喜欢给一个低一点的级别,但在工资和sign-on bonus上多给一点,因为他们觉得级别是公开的,谁都看得见,但package是不公开的,给多一点也不会影响其他人的士气。

我自己作为hiring manager也遇到过好几次这种情况:一个candidate面试下来觉得可上可下,给8级还是7级都说得过去。我遇到这样的candidate,大部分时候都是给8级的。我觉得我应该给他们the benefit of doubt,应该给予他们信任,相信他们很快就能做成配得上8级的成绩来。我会对他们说:一部分interviewer觉得可以给你7级,另一些觉得可以给你8级,我决定给你8级,因为我相信你。

这种信任will go a long way。

举个我亲身经历的例子。那是四年多前,我手下来了个新员工。他一来就休了一个月的产假。他入职那天来了一天,然后就消失了一个月(微软当时男员工的产假是一个月)。换做很多其他manager,可能都不会同意的,他们可能都会要求这个新员工延迟一个月再来入职。但我同意了。我跟他说你去休产假吧,专心休,休好了回来再专心工作。后来他在我手下干了三年,去年我离开那个组以后他也离开了微软。这三年里他的工作非常出色,做的东西让我很满意、很放心,他自己也连续升级。我觉得我和他之间的相互信任很大一部分来自于我当初同意他刚入职就休产假,这让他相信我的确是have his best interest in mind的。

中国人有句老话叫做“士为知己者死”,说的就是这种信任。当然,在公司里做事情,不至于到了要出生入死的地步。但做事情本身弹性很大,尤其是在码工界,不管在哪个级别,想要cut几个corner不被人发现是很容易的事情。而且就算被发现了,只要念几声类似“Perfect is the enemy of good”、“minimum viable product”或者“Premature optimization is the root of all evil”这样的咒语就可以了,不但可以轻松过关,还能占领道德的高地。要让员工自觉自愿的go extra mile,不能靠物质奖励,更不能靠非物质奖励,还是要靠信任,让员工感到“老板是挺我的”,从而想要努力工作来回报这种信任。

我发现,对于那些可以给7级也可以给8级的candidate,如果老板用8级把他们招进来并告诉他们“虽然我们内部有争议,但我是相信你有8级的能力的”,大部分情况下这些candidate很快都能在实际工作中做出和8级相称的成绩。这也就是所谓的“皮格马利翁效应”。相反,同样的candidate,如果拿了7级进来,就算老板嘴上说的是“我相信你很快就可以升的”,但偏低的定级本身就透着一种不信任感的味道,让人心里嘀咕“老板好像不是很看好我”。这种微妙的情绪会产生深远的影响,就好像如果恋爱中的一方时不时会觉得对方并不是真的喜欢自己,那这段关系一般都不会走的太远。

Rest Area

我很喜欢这边高速公路上的rest area。

2016-09-11-blog-rest-area_2

跑在高速上,每次看到rest area那蓝色的指示牌,不管需不需要休息都很想进去停一下。每个rest area都像是一个小公园:有参天的大树,有绿油油的草坪,有picnic table。安安静静地,只听得到小鸟的叫声,风吹动树叶的声音,还有远处的高速上的川流不息。没有人声鼎沸,没有hustle and bustle。

Rest area翻译成中文就是休息区。不过美国的rest area和国内的休息区在功能设置上是完全不同的。Rest area的基本设施就只有厕所,只有个别的rest area在白天会有free coffee,其实就是附近过来的几个大叔大妈,在小亭子里摆上一些cookie和保温瓶装的咖啡。他们的咖啡的味道实在不怎么样,但cookie还算说得过去,郑轶嘉很喜欢,每次出远门路上都念念不忘要去rest area吃cookie。他们的咖啡和cookie虽然说是free,但桌上还是有个放donation的玻璃罐子,每次我们总会放一两块钱进去的。

2016-09-11-blog-rest-area_1

国内的休息区有加油站,有小卖部,能吃到焖肉面和盖浇饭,还能买到文虎酱鸭什么的带在路上解馋。在美国跑高速,如果要加油或者吃饭,是要下高速的,不过通常也不需要走很远,大部分时候下了高速的第一个路口就是加油站和连锁餐厅,所以也并不是很麻烦。我觉得美国的这种设置的经济效应可能会更好一些,能把高速上的客流引导到local economy里去,对增加本地就业机会更有帮助。另外,把加油、餐饮等配套设施和高速公路系统分开,能促进在这些配套设施上的竞争,进而提高服务品质,也能减少rent seeking和corruption的可能。

多年以前当我刚注意到rest area和休息区之间的这种差别的时候,曾经以为这种差别来自于国内交通系统的国营性质。直到后来我去欧洲自驾了几次,发现英国、法国、意大利等国家高速公路上的休息区都和国内的休息区很像。后来我想明白了:欧洲这几个国家的高速公路和国内的类似,都是有收费站的。而美国的高速没有收费站,上下高速都很方便,所以就不需要在休息区里提供餐饮和加油了[1]


[1] 我看到很多rest area已经提供EV充电了。

大声点听不见

我第一次来美国大概是十年前。

和很多第一次来美国的人一样,我当时也对这里马路上的秩序感到非常震撼:车是会让人的。无论是在西雅图市区还是华盛顿湖东边的郊区,行人过马路的时候右转车辆都是会停下来让行人的。另外,车与车之间也很和谐,很少有人加塞、强行并线。两条道并一条道的地方总是井然有序:左边的道进一辆,然后右边的道进一辆,然后再左边的道进一辆,大家都像是有一种默契似的。有时候路上堵车了,只见到长长的一条车龙安安静静的慢慢的往前挪,没有人忽左忽右的变道,一股心平气和的氛围。和很多人一样,我也问了这么一个问题:为什么?为什么这里和国内有这么显著的差别。和很多人一样,我给我自己找到的答案是:美国地广人稀。这个答案很合理:在国内,在上海、北京,行人那么多,车那么多,道路那么拥挤,如果也像在西雅图这边这样彬彬有礼的开车,肯定会寸步难行的。和很多人一样,我也给用纽约曼哈顿的为例来证明道路资源的稀缺度决定了开车的文明程度。

直到我来到了日本。

那次是在大阪,在心斋桥附近的一条繁忙的小马路上。往来的车辆络绎不绝,有送货的小卡车,也有出租车和私家车。路的两边不断的有要过马路的行人。路的中间画着斑马线,仅此而已,没有红绿灯,没有信号灯,没有挥着小旗子的交通协管员。往来的车辆时不时的会在斑马线前面停下,让一大批的行人穿过马路去。停在后面的车并不会拼命按喇叭,催促行人或者前面的车辆。行人也好像很有默契的样子,一批行人过完马路以后,后面再来的三三两两的就会停在人行道上等着,让车子可以过一批。等待中的行人都很从容的等着,因为他们知道,他们并不会需要等太久,很快就会有一辆车在斑马线前面停下,让这些已经聚集了一定数量的行人穿过马路去。那天我就在那些行人里。相比起刚刚到美国的时候感到的震撼,我当时对眼前大阪街头的这一幕感觉到的震撼更加强烈,它直接推翻了我之前很多年的观点。我在大阪、东京等日本大城市所看到的证明,在道路资源的稀缺的地方,马路上也仍然是可以秩序井然地,开车也可以是很文明的。

不单单是在日本的大城市,在欧洲的一些道路资源稀缺的大城市里,开车也是相当文明的。在米兰、苏黎世、伯尔尼的繁忙的闹市区,我过马路的时候车辆都会停下让我的。在英国、德国、法国和意大利,我在每一个国家都开过几千公里的自驾。遇到过堵车,遇到过修路。开过高速公路,开过小镇之间的郊区道路,也穿行于城市拥挤的街道。在这些国家开车的感觉和在西雅图开车的感觉很接近,很少按喇叭,很少有road rage,很少有想要对前面或后面或边上那辆车竖中指的想法。

2016-06-20-blog-loudroom

不争不抢就寸步难行,当每个人都有这样的预期时,这便成为整个社会的困境。

这就好像同样是满满一屋子的人,有的屋子里大家都很小声的说话,因为大家都很小声,所以每个人都只需要很小声就能让对面的人听到了。在大家都很小声的屋子里,每个人都很小声,因为大家都不想破坏这么好的氛围。如果偶尔有人大声说话,边上的人都会对着他看,把食指竖在嘴上让他小声,于是这个大声说话的人自然就感到了羞愧,记住了要把声音压低。而另一件屋子里,大家都在大声说话。因为大家都在大声说话,每个人都不得不提高了嗓门说话。有人想要喝止大家,让大家一起小声说话,但就算他大吼大叫还吹口哨,仍然没有人停下来听他说,因为所有人都在大声说话,没有人能听得见他的呼喊。这间屋子里有些人想要“从我做起”变得文明一些,于是他们开始降低嗓门说话。但他们的伙伴马上就朝着他们大喊,“大声点听不见!”

如果你问我,为什么第二间屋子里大家都很大声,我只能说不知道。但我知道肯定不是因为屋子里人多。因为同样是满满一屋子人,第一间屋子里的人说话都很小声。

抬头看到猎户座

我又回上海了。各位亲朋好友见谅,这次不一一拜访了,这次专门就是回来陪家里人。

记得去年回上海的那几天,正是背痛痛得厉害的时候。痛得最厉害的那两周,晚上睡觉都没法翻身,一换姿势就巨痛无比。以前经常听到美国人说lower back pain怎么怎么,以前都没当回事儿,心里想:不就是背痛么。那时候还以为lower back pain大概就跟晚上睡觉没睡好,早上起来落枕了一样。等到自己痛了才知道有多厉害。早上起个床要起一个钟头,都没法站着穿裤子。弯下身子穿个袜子都疼得哇哇叫。

偏偏那时候还要回一次上海。在飞机场安检,要脱鞋子。我只能让在边上,慢慢的慢慢的蹲下去,边上还要找个东西靠着,才能慢慢的慢慢的解开鞋带,再慢慢的慢慢的坐到椅子上,慢慢的慢慢的拽着裤管把脚提起来,慢慢的慢慢的把鞋子脱下来。然后再重复一遍另一只脚。过了安检,还要重复一遍同样的过程,把鞋穿上。

原本还以为因为背痛会连黄石的roadtrip都去不了了。后来从上海回来以后,看了正确的医生,吃了几个礼拜消炎药,背痛就好了。原来病因就是lower back那几节脊椎周围的筋膜发炎。拍了X光,确认椎间盘(美国人叫disc)没有问题,骨头也没问题,脊椎也没有错位。吃了消炎药(anti inflammation),过了几周就好了,黄石也去了,每天帐篷里钻进钻出。

背痛好了以后第一次坐飞机是感恩节去夏威夷。那天在飞机场安检,我一边脱鞋一边跟朱逢霖感慨,能自己脱鞋就是幸福啊。重要的事情要再说一遍:能自己脱鞋就是幸福啊。

经过了这次背痛,我算是深深的明白了这个道理:无病无灾,就算是很幸福了。很多人到病入膏肓的时候才想明白这个道理。那次背痛之后,我每天都觉得可以回到家里跟家人一起吃晚饭,吃完晚饭还能跟郑轶嘉一起玩一会儿,就算是很幸福了。

班还是要加,活还是要干,工资还是要涨,级别还是要升,新东西还是要学,钱还是要赚,有点子还是要去试,事业还是要有追求的。但就算维持现状,也该知足。我常常跟周围的人说,我们都要知足,我们中的很多人都已经属于美国甚至是华盛顿州收入最高的1%家庭了。占领华尔街运动针对的人里面,我们也是一分子。

干我们这行的,不用忍受风吹雨打、日晒雨淋,不用每天早出晚归,不用打卡,想什么时候去公司就什么时候去公司,想什么时候下班就什么时候下班,想翘一天班去滑雪就翘一天班去滑雪,有些人公司里休假还没限制,每年可以休四五个礼拜的假到处玩。我们这一行,除了有时候要on-call几天,除了常年看着电脑屏幕费眼睛,其他真的没啥可挑剔的。

平时朋友之间聊天,有时有人提到他有个大学同学去纳斯达克敲钟了,或者有人提到他的一个前同事现在在的某某某startup上市了,大发了一笔。说着说着会流露出觉得自己混得很so so的意思来。我说,我这两年想明白一件事儿:if we want to feel bad about ourselves, there are a lot of ways to be successful at that.

想要自己feel bad还不容易么,事业有成的可以羡慕别人事业更有成,嫁了个好老公的可以羡慕别人家小孩有出息,事业家庭都顺利的可以羡慕别人保养得好、身材不走样、皮肤不松弛。就是做到了微软的VP,照样可以feel bad:可以觉得自己的影响力还不够大。或者,自己原来手下一个老印,短短几年变成了自己的老板,而且还是CEO。遇到这种情况,完全有理由可以觉得自己很失败。

但我们这些人得要这么想:的确,山外有山,高人背后还有高人,但我们现在的生活,已经是大多数人想得到却一辈子都得不到的。所以要知足,要感恩。能和家人在一起,无病无灾,能自己系鞋带,就应该每天都感到满满的幸福。要记住那天晚上出去散步,抬头看到猎户座的那个moment。

2016-04-30-orion

What Digital Camera and Public Cloud Have in Common

This is a picture featured in the March 2016 issue of the Outdoor Photographer magazine:

2016-04-07-panorama

To take such a high resolution panorama picture, traditionally it needs a high-end large format or at least medium format camera. But this one was taken by using a handheld Canon EOS 1Ds Mark III with a Canon EF 24-105mm ƒ/4L IS USM lens at 50mm, which is, in layman’s terms, a mass market digital camera (although 1Ds Mark III is at the expensive end of that range). The composited panorama consists of five vertical images captured at ƒ/13 and ISO 400. We are seeing more such things in the digital photography world. Another example is the High Resolution mode of the Olympus OM-D E-M5 II camera. E-M5 II is a commodity camera: the sensor is smaller (Micro 4/3) and has only 16 megapixels. But it can shoot a 40 megapixel picture by shifting the sensor in half-pixel steps and capturing eight images over a period of one second. The moral here is, with the help of software, commodity digital cameras can achieve what could only be achieved by high-end cameras.

Replace “digital cameras” with “computer hardware” and that will be the spirit of the cloud computing. Cloud platforms, especially the public clouds like AWS and Azure, use commodity hardware to achieve what could only be achieved by high-end super computers and expensive networking devices. In this analogy, IBM’s mainframes and EMC’s storage systems are the large format and medium format cameras. Cloud platforms stitch together a bunch of commodity computers with the help of software, just like how George Lepp stitched together the pictures shot by a household DSLR, with the help of software, to produce a high resolution panorama pictures.

Having said that, in the digital photography world, there are still situations where we have to use high-end cameras. Take the panorama picture of the balloons as an example. If the balloons were some other fast moving objects, such as birds and buffalos, George Lepp’s technique wouldn’t work. He would have had to use a large or medium format camera to freeze all the motions in one single shot. We have seen similar situations in cloud platforms. There are still some situations where the computing has to be done in a single high-end computer. That’s why even in AWS and Azure, there are very high-end configurations of machines: Azure G-Series VMs come with up to 32 vCPUs, 448 GB of memory and 6.59 TB of local SSD space. The largest AWS EC2 instances are in the same neighborhood. However, local network speed is getting faster and faster: the best Azure VM type now supports 20 Gigabit network and AWS EC2 supports up to 10 Gigabit. The technology of 40 Gb and 100 Gb is already ready and 400 Gb is on the horizon. With faster Ethernet speed, more workloads can be scaled out, which wasn’t possible in the past due to the limitation of network speed.

When Code Review Becomes Annoying

Overall speaking, code review is useful.

From time to time, my reviewers did catch some bugs that I overlooked, or point out options that fell into my blind spot. Sometimes I learn new things in code reviews. For example, last year a reviewer suggested me use ThreadLocal<T>, which indeed would simplify my code a lot. Some code reviews aren’t the code review per se, when it’s more about a FYI: “Hi, I have written this code and I like you to be aware of and get familiar with it.” That happens when you are the only person in the team truly understand that piece of legacy code. Although such FYI type of code review isn’t that much helpful to the author, it’s still good to the team.

But sometimes code review can become annoying, especially when people spend time on things that (in my opinion) don’t really matter. For examples:

I understand there are differences, often very subtle or trivial though, between string vs. String, readonly static vs. const, etc.. But those differences don’t do any real harm. Explicit declaration, such as Stopwatch stopwatch = Stopwatch.StartNew(), doesn’t make the code harder to read[1] than var stopwatch = Stopwatch.StartNew(). String.Join doesn’t make the code slower than using string.Join. Putting using outside of the namespace block doesn’t make the code harder to work on. In addition, by default all versions of Visual Studio put using outside of namespace in the code it generates.

I really don’t like to spend time on those things in code reviews. I don’t think they matter to product quality and engineers’ productivity. There are so much more things that we wish we had more time to spend on to improve quality and productivity. Debating on those things are like debating whether to put one space after a period or two.

What people should do is to make sure that their team has collectively decided on what StyleCop[2] rules to turn on in their code base and get included in the build. Once that’s decided and has taken effect, there will be no debate any more: if the rules are violated, it will be a build error and we don’t submit code review until it at least passes build. Simple and clear.


[1] Readability is both objective and subjective. There is no doubt about that a line longer than 120 or 150 characters is hard to read and single letter variable names are hard to read. But whether Stopwatch stopwatch = Stopwatch.StartNew() is harder to read than var stopwatch = Stopwatch.StartNew(), that’s really personal.
[2] Or the equivalent of StyleCop in other languages.