关于谷歌的几个问题的回答

年初的时候,很多人对我离开原来的公司跑去谷歌做个普通码农很不理解,直言觉得很意外。 一晃入职谷歌已经三个月了。虽然依然还被人认为是Noogler,但是感觉已经把这家公司的方方面面体验过不少了。也许是时间写写感想了。说是感想,其实也许更多的是想总结一下我自己对于当初的选择所抱有的疑问的回答吧。 首先,为什么要去谷歌?又或者对于我来说,为什么放着同是世界500强公司的软件工程总监的职位不做,要跑去谷歌做个普通的软件工程师? 仔细想想后,其实这个决定并没有看起来那么荒谬。 对于大多数从事软件行业的人来说,加入谷歌可以有一千万个理由,做强大的产品,拿丰厚的回报,享受完善的福利等等等等。 但对于我来说,其实很多这些我在加入谷歌之前都有了,而且免费午餐之类的对于我这个年纪有家有室的码农来说,吸引力十分有限。 我的想法很简单,在选择了把做技术这条路走到黑之后,我就坚信了去谷歌是一件必然的事情。 近一两年来,跟很多猎头聊天,人家问我现在关注什么,我都只有一个回答,那就是Scale。 快速地扩张(Scale)一个工程团队,同时扩展(Scale)自己掌控的产品在特性和容量,是我这几年来一直在做但是确信自己做得不够好的一件事。因此也不止一次地萌生了充充电的想法。而论到扩展这件事情,这世界上又有几个公司敢说比谷歌做得更好呢? 所以虽然基于谷歌的招聘体系,他们只给我一个软件工程师的职位,待遇也不见得比之前的公司好,我还是坚信只要我身在其中,就一定能获得很多对我来说更有价值的东西。 相比于那些刚毕业就加入谷歌,还沉醉在它学院派氛围里,流连在各种福利设施里的小孩子,我的目的性更强,感觉也更敏锐。 在小公司摸索了这么多年,觉得自己就像是一个拆去了塑料包装的海绵,满身都是孔洞,对周围的信息的吸收和学习能力满格。 简单来说,就像上学时说的“带着问题来”一样。 那么入职这几个月,我究竟有什么收获呢? 可以这么说,我现在终于理解了我当初读研究生的时候那个拿了谷歌offer直接辍学去工作的同学的选择了。 在加入谷歌的第一个月里,我觉得学到的东西顶过过去一年,每日都有被醍醐灌顶的感觉。 当然这个事情得分两面来看。 一方面,谷歌的软件工程实践无论在工具还是在编程模型以及软硬件架构上都是世界领先的,很多说是黑科技也不为过, 有些东西真的看着看着就能把人懂行的人看高潮了。 入职第二周我提交了一些代码,立马体验到了开发工具在谷歌是多么的强大。 首先谷歌的开发工具链早已实现了全部的云端化,就连代码编辑器连同未提交的改动都在云端。 极端地说,谷歌员工出差都不用带电脑,到了另一个地方只要去当地办公室的IT部门拿一台临时的Chromebook登录自己的账号, 代码和开发环境就都有了。 而同在云端的自动的构建系统Blaze从你创建改动就开始跑各种验证步骤,不但是被改动的项目,构建系统还会分析所有代码的依赖关系, 一层层地验证上去,有时候一行代码改动直接触发十几万个测试。 因为谷歌绝大多数代码都在一个代码仓库里,所以只要测试跑得过,自己改的东西都不用跟人打招呼就能提交, 也不用担心其他用了你的代码的项目会有问题。 同时,不止是各种测试,自动运行的任务还包含各种动静态分析,甚至能对你的代码风格做出建议,入职没两天就被机器教写代码的感觉也是酸爽…… 然后代码一提交,安安静静地啥也不管就被自动部署到了产品环境,在沾沾自喜自己刚来没几天就已经在影响亿万用户的同时,也自己在暗暗赞叹这一套持续部署系统的强大。 总之各种新奇玩意儿让人应接不暇,只恨一天没有48个小时好让你去读文档。 另一方面,也因为谷歌所有的东西都是自建的,所以新的员工一入职就有无数的东西需要上手和学习,前面说谷歌内部工具很多很完善,但是这个事情的另一面就是,你改任何一行代码都有可能涉及几好几个你并不熟悉的编程模型,上百个你都没听说过的系统,和成千上万个你觉得八竿子打不着的测试用例,任何一个检查失败了要查起问题,都有无数的文档要去读。 其实谷歌的内部培训是下了大工夫的。我在之前带了几年的新人,现在轮到我当新人的时候,看着谷歌内部的培训流程和资料,才明白自己当初只不过是在放羊…… 但即使如此,谷歌对于新员工的预期,也不过就是六个月之后能跟上团队的速度。这对于大多数公司来说简直是没法接受的。 我相信这也是传说中的谷歌从来不开人的原因,因为培养一个Googler简直太难了,加上谷歌的系统每过几年就要改写,重构。留下来的人哪怕在没有上进心在没有能力,真正做起事来,靠着长时间的积累和对整个谷歌技术栈的熟悉还是比绝大多数新人要得力。 但总的来说,见识了亿万级的软件产品的开发部署流程,了解了星球级规模软硬件系统的架构,更体验了千雕万琢的自动化开发工具链之后。我之前的很多的疑问都得到了解答。我甚至觉得即使现在我就离开谷歌,这一趟也没白来。 前一段时间谷歌有一个人发了一文章在arxiv上讲谷歌是怎么做软件工程的,我也读了一下,最大的感觉就是如果没有设身处地的体验,里面的内容其实还是挺干巴的,所以说软件开发和软件团队的建设,其实还是蛮细致的一门学问的。 然后你可能会问,那为什么还会有人不愿意为谷歌工作呢? 为了不变成一个“歌吹”, 我也尝试思考了这个问题。 很多人谷歌员工都有一个担忧,就是很怕被谷歌的工具和福利惯坏了,离了谷歌就不会写代码甚至不会生活了,同时而很多外人则说,谷歌养了一堆闲人在做些没有技术含量的东西。这些论断也许不假,但是在我看来这都不应该是问题,问题在于你作为其中的一员有没有足够的好奇心去搞懂能让你傻瓜式编程的工具和框架是怎么设计的,有没有足够的热情和实力去改进它。在这样的基础上去做改进,我相信挑战和成就感都是不会缺失的。如果真的搞懂了,出去之后觉得不爽可以自己做一套嘛,说不定单单这套工具就都已经足够成为创业项目了,更不用说其实谷歌本身开源的东西也不少,出去创业也可以直接拿来用。 接下来的两点,我觉得才是真正的原因: 首先,谷歌是一个重技术轻管理的公司,很大程度上靠工程师自治,所以它的招聘要求就格外的高,即使近几年大扩招,但是能得到高级工程师职位的人选,多半也是其他地方的核心骨干甚至是架构负责人。两厢一比较,对于本身就有着更多选择的牛人来说,自然是需要权衡自己是愿意去钻研小领域还是去做更宏观的东西负责更多事情了。 然后,我认为对于已经在谷歌里面的人来说,最大的问题就在于OKR系统了,OKR并不是谷歌原创,但却可能是被谷歌的应用弄到人尽皆知的。谷歌的OKR,又或者说谷歌的整个职业发展体系,完全是基于Key Result的,而这个关键指标又被谷歌的聪明人玩坏了,其中最让我印象深刻的,大约就是对于影响力(Impact)的执着了。 于是就出现了几个团队合作的时候,某个团队先抛出一个含混不清的文档先把有技术含量的坑占了,然后再不紧不慢地开始设计的情况,整个项目的前期简直就像是众包网站上的竞标过程。 另外一堆人不急着写代码,却围着一个设计文档锱铢必较的场面也很常见,因为每个设计文档,都可能是你升职文件里的例证,大家恨不得跟投行人士改Excel一样改出花儿来,不同的技术意见一定要当着大家的面整个脸红脖子粗以证明自己的技术影响力,很多非作者哪怕插不上话也要过来给你改改typo搏个出镜。个人感觉有时候挺耽误事儿的。 一旦一个团队有了重点项目,其他团队的人就抢着换组跳过来赶发布蹭影响力,而他们原来团队不得不承受人员的损失。 更有甚者,为了影响力,本来很稳定的系统动不动就要用新框架重写,甚至开发新框架。工程师都知道,一个系统80%的工作量其实只需要20%的代码量就能完成,所以无数人热衷于打造新轮子,最后在自己的升职申请里写上“发布了新版本的xx系统,完成了80%的旧API的迁移,效率提高了XX个百分点”之类的话。 但问题是只要有1%的东西还留在老系统里,这个团队就得同时支持两个框架,而且这剩下20%需要大量投入的系统迁移是没有人愿意做的。 以至于谷歌内部有个段子说在谷歌只有两种技术,未成熟的(not ready yet)和已抛弃的(deprecated) 当然,更广为人知的段子就是,谷歌每年都要发布一个新的聊天工具…… 基于此,也就衍生出了谷歌内部实干无用升职主要靠吹的说法,那些兢兢业业对产品负责的人,几年内遇不上好的项目,也许就去别处寻求直接的进一步发展或者甚至是自己干脆出去创业了。 这才是我觉得谷歌真正需要反思的地方。 最后再小说一下钱的问题。 钱其实算也不算我加入谷歌的原因。 说不算是因为谷歌给我的薪水并不高,说又算呢,其实是因为我认为谷歌愿意花在我身上的钱并不少,这里面既包括了工作上的资源也包括了之后的薪酬回报增长的潜力。 前谷歌亚洲研究院的吴军博士写的《浪潮之巅》里的一节对我影响很大。 那就是他说谷歌是一个有着“印钞机商业模式”的公司。 现在的信息技术行业,不缺钱的公司很多,但是能够保证自己一直不缺钱的,又或者说能够已很小的成本换来极大回报的公司其实很少。 我并不觉得谷歌就能万世长青,但是至少在可见的将来,谷歌很难说会有资金捉襟见肘的时候。 这带来的好处就是,所以别的公司因为资金原因不敢做的事情,只要想做,谷歌都能做。 而作为全球用户最多的软硬件公司之一,因为规模足够大,任何微小的改进都能带来非常丰厚的回报,所以谷歌对于软件工程师的慷慨是能很轻易感受到的。 所以谷歌才能做出Golang,TPU和TensorFlow,更能够专门设置一个巨大的团队,专注于内部工具链的改进。 举两个夸张点的例子,谷歌内部员工恶搞用的动图网站都有专门的人在负责维护,每日食堂菜单的发布都有专门的App,还跨各种移动平台。 落实到普通的工程师身上,这就带来两个好处:第一是你可以做一些在其他地方做不了的的事情, 第二是你可以非常专注地去细细打磨一小块东西而依然心安理得地拿着不菲的薪水。 做一个比较好理解的类比,相比于那些可能同样薪酬丰厚,但是却被公司逼着996,痛苦地做着低效没乐趣的事情的人来说, 他们的公司把软件工程师当做了日用品在定价,而谷歌则是把软件工程师当成了奢侈品在定价。

了结2016

2016是一个逼死编剧跌破眼镜的年份。这一年里,活久见的事情太多了。 ISIS不断地在用击破底线的兽行抢夺文明世界的新闻头条,欧洲和美国的两场选举比电视剧还精彩,美国人终于可以合法地去古巴了,小李子终于拿了奥斯卡。 一个摇滚歌手出身的诗人拿了诺贝尔文学奖,而一个诗人出身的摇滚歌手却等不及离开了我们。 与之相比,自己的一切都显得琐碎和不重要,没有改变世界,这是显然的。哪怕是个人的境况,也没有什么令人欢跃的进展。 今天终于办完了离职,总算是了结了一件大事,有了些时间来回味一下过去的这一年了。 这一年里,最遗憾的事情就是早早地报名了三处全程马拉松,最后却因为脚踝的受伤和频繁出差训练不系统,导致最后就跑完了一个半程。 不过也正是因为这一年频繁的出差,倒是去了不少地方,纳什维尔,加州,西雅图,北京。见了不少大学同学,算是弥补了一下毕业十年却没能聚会的遗憾。 因为年初的许愿,这一年尝试了纸质书,电子书,有声书,总算是找回了读书的习惯,加上有意地拓展了阅读的范围,感觉还是挺充实的。 本来还计划要好好在网上刷刷算法题,为下一步做准备,但是实在是觉得这事儿对现在的工作没有帮助,也就没有坚持。 谁知道因为担心技术退步,出去裸面的面试以赛代练居然都还拿到了Offer,实在是本年度最大意外,也足见网上四处宣扬什么LeetCode刷两遍再去面试实在是过于绝对,怕是会误人子弟。 在技术的发展方面,逐渐有了一些明确的方向,刚从学校出来的时候,总想着技术含量这回事情,但是后来才发现,盈利能力和覆盖能力才应该是自身技术发展的目标。 加上现在全家就我一个人工作,2015年还新添了一个女儿,恐怕是不能随心所欲地去创业了。 于是考察了一下当前的技术方向,觉得移动开发和机器学习还算是两个比较有盈利潜力和外部依赖较少的方向。 然而随着调研的深入,逐渐发现现在搞移动开发小作坊已经行不通了,好在机器学习还算是个既不成熟又有巨大可能性的方向。 于是耐下心来补了点入门课,并最终在年底之前跟朋友注册了一家小公司,希望能在2017年给尖尖赚点奶粉钱。 当然可能这一年最大的变化,还是年初在工作中从纯技术路线转成了技术管理路线。在公司团队的发展上,其实这是个挺水到渠成的事儿,但是于我来说,又有些准备不足。 虽然一路见证着公司纽约的工程团队从两个人增长到了年初的十来个人,并且一直在参与招聘和指导新人,但是真的开始进入管理角色,还是立马感觉到心虚,加上做技术时的习惯又很难改,只能逼自己多读书,多见习。 到了年底自己回味一下,虽然还是更喜欢做技术,但是确实学到了非常的多,相信以后不管是打工还是创业也都会用得上,因此也不后悔今年有这么一份体验。 也正是因为如此,所以在G家抛来橄榄枝邀请我重回技术路线去做我一直想做的面向大众的产品时,我心痒了。 跟一个自己工作了七年,以至于同事都成为朋友,团队里的人都是我一个个面试进来的地方说再见,是一个撕心裂肺的过程。尤其是我还甚至曾经有过一次想走最后又留下来的经历。 好在我觉得此时自己的头脑已经足够清晰了,如果说新毕业的学生热切期望加入Google是因为花样繁多的福利和学院派的氛围的话,此刻的自己,却可能是抱着更虔诚的学习态度去的。 因为已经跟着一个创业公司从小做到了大,我需要的,是去看看更大规模的服务和团队是如何运转的。 既然要学习,就要去最顶级的团队,至少在Google请出Peter J Weinberger来面试我的时候我是这么想的。 所以我非常真诚地跟老板提了辞职,除了他们的祝福,没有提任何要求。 然后用我这么些年攒下来的假,回去陪了一个月家人。 期间带父母去了趟三亚,兑现了几年前带父母出游的承诺,可谓今年最大的一件成就。 剩下的日子每天陪刚退休的父亲在河边散步聊天,感觉父子之间的了解深入了很多,同时也清楚的意识到,自己已经是家里的顶梁柱了,已经不能够再只顾自己了。 为了老父母,衣锦还乡的办法一定是要想的,哪怕自己其实更愿意长居在纽约。 在圣诞节当天,把老婆和孩子接回了纽约,正式开始了三口之家的日子。如果说今年有什么事情是后悔的话,那就是跟他们聚少离多了。 计划的时候觉得她们在国内有父母照顾,我在这边也可以专心打拼。最后发现自己错过的却比收获的多了太多。人到了这个时侯,也是该有些负担了。 所以在年底之前,在看了一年房之后,贷款在曼哈顿的上西区买了一个老破小公寓,算是给这个小家庭抛下了一颗锚,希望尖尖能在中央公园和自然历史博物馆里成长。 2017年,并没有宏愿。2016年了结了不少事情,留下了一些遗憾,同时也生出了新的的可能性,希望我们大家都能好好的。 另外纽约马拉松,今年是一定要跑了。

不在别处

三年前搬来纽约,其实本来是为了以后搬去加州的,因为喜欢那里的阳光,喜欢那里的科技创业氛围,甚至喜欢那里出门就得开车的生活方式。 只是因为工作需要,加上觉得大城市对于家人来说更好适应一点,只好停靠在纽约。 三年里从来就没逮着机会去过西岸…… 谁知道对那里的向往,反倒是越发地深了。很多在西岸的朋友也都很满意自己的生活,还一再劝说我加入他们。 反观纽约,真正精彩的也就是曼哈顿岛,但是岛上的房子是无论如何也买不起的……三年来租的房子都是又小又暗,有的连洗衣机都没有,阳光都成了奢侈品,就别说什么在院子里烧烤和买车了。再加上漫长的冬天,又脏又臭又拥挤的MTA,其实不止一次地很想逃离。 谁知道上两个月倒真是有机会去那边逛了一圈,三年多之后再次去到那心心念念的地方四处转,颇有种可劲挠痒痒的感觉。 湾区 去湾区是因为参加Google IO,借此难得的机会把西岸的朋友差不多都见了见。毕业十年了,现在看起来大规模同学聚会希望渺茫,四处见见同学也算是补偿一下遗憾。 上次去加州也是飞的圣何塞,也是借住的同学家,区别在于这次去时他已经买下了三层的小楼,我也终于不用睡客厅沙发了。 整整一层的厨房加客厅的开阔,把在纽约的小公寓里窝了三年的我被震撼到失态,简直就想接着睡客厅了。 然而下到车库里,在我问他为啥还开着那台五年前撞过鹿的车时,他说,要有钱我就再买房了。后面几天在附近的商场里偶尔碰见他当地的朋友,也都是聊的是买房,跳槽,加上MachineLearning,VR这样的buzz words。 简直跟我想象的硅谷没什么两样,有些满意,却又有些失望,一种『果然这样,却又不过如此』的感觉。 以前有人跟我说不喜欢加州而喜欢纽约的多样性,我还不明白为啥,现在想来大概就是这种感觉吧。在这里,成功只有一种定义那就是创业上市拿股票,投资只有一种去向那就是买房。火热的也就只有互联网这一个行业。 在北加晃荡几天后,又临时起意去了趟LA。 LA 同是加州,洛杉矶跟北加州真是完全不一个画风,就跟西南航空那多彩的涂装一样,这个太平洋岸边的娱乐之都比起北加州的清淡,更加地花枝招展。 就好像是把曼哈顿像摊大饼一样摊薄了铺在地上,差不多的破旧,差不多的熙攘,只是到哪里都是矮房子,去哪里都得开车。 星光大道走一走,好莱坞的地标拍一拍,哪哪儿都是游人。这种感觉,从纽约出来的我并不怀念。 于是坐上Uber一路开到海边,又是另一番风景,Venice海滩上只有三种人:玩滑板的,健身的,抽大麻的流浪汉。 加州的大麻还没有合法化,但是海滩上到处有所谓的Green Doctor收钱给你开处方好去买药用大麻,以至于当地的酒店都把这个写在旅游指引里面了。 听Snapchat的人说还挺喜欢在海滩工作的感觉的,还颇自豪地说这里是Silicon Beach,只是我可不想天天在这里跟这些流浪汉厮混。 短短两天,在我心里就把LA画了个叉叉,玩玩可以,长期生活这里实在是太不适合了。 凑巧的是没过多久,又得了机会去西雅图。 西雅图 不得不说,我挑了一个一年中西雅图最好的时候去那里。传说中一年要下八个月雨的地方,在我去的那几天里,基本上都是温度宜人的晴天。 我一直觉得,西雅图是个很有科技感的城市,有着温和甚至有点冷感的城市风格。所以Pike市场对我来说并没有什么非去不可的,反倒不如满大街的各种轨道交通令我向往,身为火车控的我这次特地费尽心思地把城里的monorail,light rail,streetcar都坐了一个遍,无比满足。 更赞的是,开会的那几天坐公交车上班,用一个叫做Trip Planner的手机APP,每次从离市中心近30 miles的地方出发,三十分钟直达市中心,公交车到站误差不超过一分钟。这个是非常厉害的,考虑到出发点的周边房价基本上是独栋house不到60万美元这个样子,西雅图的朋友们基本上是不用为通勤方便和大房子纠结了。 另外,西雅图是一个工程师之城,波音,亚马逊,微软是这个城市的主题,虽然当地的科技行业的薪水远比不上硅谷甚至还不如纽约,但是跟我聊天的Uber司机都说是亚马逊的员工推高了当地的房价。不同于纽约是华尔街银行家和律师的天下,工程师是这里的主宰,但又不同于硅谷的是,这里有没有那么多VC热钱,没那么浮躁,挺像国内的杭州的。 另外这个地方还没有州税,要知道纽约的州税和纽约市的城市税加起来可是要扣掉我超过10%的年收入啊…… 当然,因为没有体验到西雅图的雨的压抑,对它的评价就不可能全面,毕竟这是一个冲锋衣和户外鞋是必需品,又被称为斯巴鲁之乡的地方,虽然我也被它天气好时候的美景所吸引,但是一想到一年有半年的时光都只能闷在家里看雨,就有些郁闷。 归来 话说回来,这一圈游下来给了我什么收获呢? 我想是一份安定。 我一直奇怪,为什么我在别处的朋友们都过得那么好,而只有我在抱怨。 我总觉得自己有着各种各样的求不得,明明很喜欢车,却只能坐地铁,明明没赚几个钱,却交着很高很高的税,明明很想去创业,却只能在公司里蹉跎。 现在我想,大概不是因为纽约,甚至也不是因为北京不好,而是我自己就是这个德性。 我就是一个永远不满意永远在折腾自己的苦行僧。我想这支撑我走到了如今这么远,但是眼前这一份安定,也许能让我意识到与其向往别处,不停地搬迁,倒不如落地生根,把自己眼前的日子过好。说不定还能给家人一个更好的生活,兼着真的做成点什么有价值的事呢。 那就这样吧,那就试着认认真真地做个纽约客看看,好在,它一直很宽容我的心不在焉。

纳什维尔三日游

说起来奇怪,来了美国几年了,却从来没去过真正的美国。年初的时候心血来潮报了两站Run’n’Roll马拉松,其中的一站Nashville,就是为了体验一下正宗的美国是啥样的。 啥叫真正的美国呢? 我出发之前问一个当地的朋友:你家都有两辆车了,我要再租一辆车从机场开过去,有地方停么他?人呵呵了我一脸,我们这里随便停。 到了纳什维尔机场,提车的时候发现坑爹的Hertz租给我一辆伊兰特居然没有倒车雷达,当然后面几天发现其实这这里开车根本用不上倒车雷达。 到了之后问另几个朋友:在纳什维尔你们不开车出门的时候多么?几位对望了一眼说,没有…… 当然,纳什维尔还有两个更出名的东西:南方食物和音乐。 纳什维尔爱自称为Music City,讨厌被叫做Nasvegas,在这里音乐是非常神圣的一件事情,几乎所有的景点都与音乐有关。比较有名的Music Row是很多唱片公司的所在地,Downtown的Broadway上面则满是Live music bar。 更神奇的是,任何一个bar里面传出来的音乐,就没有不好听的。 在这里的最后一晚,我跟几个朋友找了一家有现场表演的酒吧,台上四把吉他原创歌曲唱了整整一晚,我开玩笑说这几个随便挑一个上中国好声音或中国好歌曲估计都是四转选手吧。 当然更让我感受深刻的就是,音乐在这里就是一个普通职业,没有什么明星光环,大家就是普普通通地写写歌唱唱歌喝喝酒挣点房租钱。所以这里的音乐,也更多地有关生活。 然后就是食物了,一般来说从纽约出来的人很难对美国其他什么地方的食物格外感兴趣的,但是正宗美国南方菜的诱惑于我来说还是挺大的。炸鸡,烤猪排,玉米面包,Biscuits,简直就是胖子的必修课…… 所以三天的旅行,去之前我就在Google地图上收藏了14家餐厅。 但是这个旅行计划中最大的一个bug就是,南方菜的分量太大饱腹感太强了,以至于三天里我有两天因为午餐吃太饱而没法吃下晚餐,白白损失了两次机会,其中最最最可惜的就是,直到最后也没吃成著名的Nashville Hot Chicken…… 不过很幸运的是,我还是尝试了Monell’s和Barista Parlor。 Barista Parlor,当地人喜欢简称为BP,可以这么说,BP就是纳什维尔小资界的逼格担当。 不同于纽约各种窝在老破楼里的特质咖啡馆,BP在Germantown的店是一个大车库,咖啡师的吧台在正中间,客人的桌椅在四周围一圈,柜台之间也没有明显的隔断,事实上我第二次去的时候,就不小心走到人家的吧台后面去了…… Germantown的这家店,周中去的话人很少,整个店里通风特别好,咖啡师做咖啡跟网络上评价的一样慢,但是单品咖啡加上正经的做法,还是很让人期待的。以至于我一天之内去了两次,分别点了招牌的Burbon Vanilla Latte和传说中5刀一杯的黑咖啡:DareDevil。我能理解为啥本地人会觉得他们家的价格比较荒诞,但作为一个咖啡爱好者来说,我非常满足。 最后要说说Monell’s,同样是在Germantown,这家餐厅的特点是全套的南方体验。这家餐厅坐落在民宅区里,入口处的小院打理得非常精致。进去之后,里面大约有3-4张能够坐10个人的大餐桌。在他们家就餐的方式是由服务员安排素不相识的人围坐在一张餐桌上,然后连续地上菜,每种都是大碗的家庭装,桌上的所有人需要通力协作,自己取食,然后把菜往左传给下一个人。这种非常南方大家庭的就餐方式可以说为这家餐厅增色不少。 在这边就餐并不需要点菜,因为每天的菜是预先安排好的,当然都是非常正宗的南方食物:铁打不动的炸鸡,时不时供应的炸鱼和BBQ,肉汁土豆泥,Biscuits,玉米面包,煮蔬菜,煮豆子。完全算不上健康的食谱,但是确实非常温馨加好吃。当然也非常容易吃撑,因为食物不停地上不停地上,就像每次回老家过年一样。 更赞的是,无论你吃多少,结账的时候都统一价,人均14刀,简直良心。 当然,唯一的限制是在这里就餐的时候因为需要团队协作,是不允许吃饭的人打手机的,我想现在的家庭聚餐,很多长辈也会想这么规定吧。 最后分享一下我做旅行计划用的 Google Personal Map。用Google Maps做了几年的旅行计划,不得不说,结合Foursquare和Yelp以及Reddit,还是挺好使的。

Microsoft Band 2 简评以及一些抱怨

去年初我在仔细分析了自己的需求之后,入手了怎么看都像是工程机的Microsoft Band第一代,也还算重度地使用了很长时间,总体来说我觉得还是不错的,尤其喜欢长方形屏幕的设计和光学心率表的配备。 然后去年底,微软发布了第二代Band,当时其实我是没有想升级的,因为虽然有一些看得见的改进,但是249刀的价格还是太贵了……信仰虽然有,但是频繁充值实在是受不起…… 然后前一段发现微软推出了以旧换新的优惠,买Band 2的时候寄回Band 1可以抵35刀。于是问阿尔巴尼的严大师说值不值得买?说起来严大师还是看了去年我写的Microsoft Band评测之后入坑Band 1的,结果这次他跟我说他早就已经升级了,说『二代跟第一代根本就不是一个层面的产品』。 然后我就去BestBuy实地体验了一下,果然手环的表带部分没有了电池块,变得柔软无比,换了大猩猩弧面屏之后,屏幕感觉也回到了二十一世纪。于是回去便立马下了单。 两天之后寄到,迫不及待地打开,说真的看起来确实比一代看着高档多了 在使用了两周之后,说说一些可见的改进: 大猩猩弧面屏,触控体验终于像是个二十一世纪的设备了。 电池从表带两侧移到了滑动扣上,而且充电口也挪到了不跟皮肤接触的外层扣上。 这一点其实很重要,因为以我使用第一代Band的体验,如果把它当做一个运动手环使用,第一代Band的充电口是会紧贴皮肤的,长久之后人体的汗液就会腐蚀充电口的金属片导致充电时接触不良。 添加了音乐播放控制功能,任何时候只要双击电源键就可以进入音乐播放控制界面,实测在跟iPhone一起使用时也好使,只是Cortana语音控制就没法用了。 电池寿命有非常大的改进!买来后戴着它出差了三天,虽然没有使用运动相关的功能,但是跟第一代相比,电池体积更小的它,在我完全没有带充电器的情况下,第三天的晚上回到家里还依然有电,可以说是给我最大的一个惊奇。 创新的滑动控制功能,比如在音乐播放控制功能界面只有播放/下一首/上一首的按键,但是用手指左右滑动就可以控制音量,这个设计很得我心。 总的来说,之前正在考虑要不要换到UA HealthBox的我,在入手了Band 2之后并不后悔。 但是也不是完全没有抱怨的。 首先就是产品设计方面,说真的,一个智能手环,到了第二代才加入音乐播放器控制功能,而同时尽想着什么紫外线探测器,海拔高度计这样的功能,这个产品不是缺产品经理就是根本没有产品经理…… 另外,即使是第二代的佩戴舒适感已经有了很大的改进,Band 2还是做不到在佩戴的同时让人舒服地使用键盘打字。因此它的定位还是只能是一个运动手环。 然后是定价和售后服务,249刀的定价对于一个手环来说不低了,但问题就是微软你装逼就要装到底啊!我两周前刚用我的Band 1换来一个35刀的优惠券,就这样还花了含税230多买了Band 2,两周之后,我这个优惠券还没过期,就降价到199刀了。 害我还得费时间跟客服撕逼要Price Match,然后客服还跟我说因为你只花了税前214刀买我们的产品,我们只能退给你15块。合着我那一代的Band就白给你了是么?难不成Surface Pro 4出了我的Surface Pro 3就一钱不值了?你要早说微软的产品一钱不值我就不买了。 也不知道是智商堪忧还是装傻,最后只好要求客服妹妹找她的上级来解决了,现在还没给我回复……说真的,微软在做大众消费品方面,跟苹果的差距是全方位的…… 最后就是生态系统了。一个产品都出到第二代了,居然还没有一个像样的第三方app出来,虽然用手环买星巴克很方便,但是也不能光喝星巴克吧!一开始往这个手环里塞那么多传感器不就是为了以后在软件上能有更多想象力么?要是完全没有人给你开发应用的话,一开始就老老实实把它当一个专属非智能设备开发,说不定应用场景匹配还更好,更重要的是还能更便宜点啊! Peace。

回龙观

在我的记忆里,回龙观一直是比天通苑和通州要好一点的地方,有地铁,还不是特别挤,特别是八号线通了之后,霍营简直要超越立水桥成为新的交通枢纽。 这次时隔两年之后回来,又从这里出发通勤几日,回味起来有些复杂。 早上七点半到八点半,早起上班的人从观里的四面八方赶往霍营地铁站,在门口买个鸡蛋灌饼肉夹饼土豆卷饼当早餐,边走边吃,吃完在身上随便什么地方一擦,就匆匆地进了站。 这时站内已经响起了流量管控的广播,大家沉默地在安检机前排队进站,展示出不同于三四线小城市风貌的精神文明,仿佛一进地铁站,大家就脱离了城乡结合部的灰土气息,进了城。 刷卡进站之后,通向13号线站台的是长长地一段地下通道,前面被乌泱泱的人挤满了,只看得见人头,完全看不见地面,这时地上要是有个坑,怕是要前赴后继地跌进去不少人。 我犹豫了一下,想等等,但是在等了几分钟后,发现这通道不但没有通畅些,反倒是通道口的队尾又胖了些,只好一咬牙也汇了进去。 所有人就这么沉默地一步一步挪着。通道里因为人多而显得格外缺氧。这时才觉得有些热,想脱掉外套,却张不开手。五分钟后走上站台,初冬北京寒冷的空气,居然给了我一种凉爽的感觉。 一辆列车开过来,堪堪挤了上去,四顾一下没处扶手,然而马上后面又挤进来不少人,倒好,不用扶也倒不了了。 列车开动,所有人开始打发时间,大多数人艰难地把一只手拔出来,开始看手机,不得不说国人的数码产品真是五花八门,让人应接不暇,当然小米手机的比例不出意料的高。一些人在玩手机游戏,另一些人在看仙侠小说,还有一些人在看电视剧。当然也有些人在特别虔诚地看罗辑思维,给自己充个二手电,也有人在看军情观察室,爱国热情随着火箭腾起而高潮。 车厢里基本没人说话。 只是这个时候暖气上来了,车里所有的人,为了抵挡外面北京的冬天,都穿得严严实实,车厢里却特别的热,于是只要稍稍动弹,捂出来的汗就蒸腾着衣服上的地沟油,把车厢氤氲成一个味道怪异的桑拿房。 然而似乎没有人觉得不适。 第二天,我实在不想排队了,于是转去坐了八号线,上车之前都还好,但紧接着就开始了同样的汗蒸减肥疗程。从霍营到北土城,每次停站都能看到门外排着十几二十个人,最后开门能挤上来的,却不过两三个。 从各种胳膊脖颈的缝隙里,看到车厢里的电视里在滚动播放着包总的大阅兵,搞笑的是,解说员那激昂到快破音的解说,每每却都被冷冰冰的报站声打断,听起来滑稽极了。“现在!向我们!走来的是~!”,“西小口站到了……”,“担任导弹!方队!指挥的是~!”,“下一站永泰庄……”…… 七点半出门,到公司已经几乎九点了。 如果说上班高峰期很痛苦,下班的时候多少好一点,毕竟时差没倒过来,我都是六点掐着点就走了,好些996的人这时都还没下班呢。带着困意,在同样的线路上回到观里,天已经全黑。一出地铁站,各路小贩却在夹道欢迎,路边一溜的快餐厅灯火通明。看到这些不觉有些温暖,想当初在这里住的时候,也是八九点才下地铁,又累又饿,当时却不曾有这许多选择。抬眼看,一个路边摊师傅正在细雨中,在一口完全没有遮挡的煤炉上翻炒着一份炒饭,身后的蓝色小棚里,素不相识地人们相对坐成两排,正围着吃麻辣烫…… 我裹紧风衣,继续向那个住了几年的房子走去,一路上都没什么灯。 我惊讶地发现两年时间居然可以改变一个人这么多,这次回来我都已经忘了在北京空气要N95过滤过才可以呼吸,煮开的自来水不能轻易搅动否则会喝到白渣。甚至感觉连马路都不会过了,因为汽车红灯右转不但不会让行人还会跟你抢道。 更让我惊讶地是这个城市城乡结合部的人的生活:满怀着希望,同时却又无比麻木的,我之前过的那种生活。 回到小区里,看到小区楼下停着的不少奔驰宝马小钢炮,觉得人们都在进步,忍不住心想,如果我不离开是不是也能获得一些我原来得不到的东西? 一直也有一种担忧,那就是离开了北京,是不是就会被更舒适的环境惯坏,变得挑剔,变得难以伺候,变得没有竞争力? 还好有这两天的通勤,让我回忆起了自己为什么要离开,让我回忆起了那个拖着疲惫上班,下班后什么都不想干只想摊倒在沙发上,明明精疲力尽却还是不断地在增肥的自己,以及来不及梦想,只是每天被这座城市榨干的日子。 不知怎么地,有些庆幸。

Gothamgo 2015 Recap

昨天冒着纽约今秋的第一场凄风冷雨跑去老地方听了今年的GothamGo。 因为去年的良好印象,加上今年公司几个人一起组团去刷,本来还挺期待,但是到后来却小有失望。 因为在我看来,Go本身足够简单,但是也足够年轻,所以对于这样的一门技术的会议,我其实最期待的是两种类型的内容: 生产环境里的最佳实践,比如持续集成,性能测试,依赖管理等等 新的工具或实用的package 遗憾的是,这次的议程12个演讲,给人感觉是: 一部分是极易辨识的赞助商session以及公司产品炫耀贴,基本没什么营养 一部分是方法论和哲学论述,听起来很爽,然并卵 最后少数几个演讲有点有意思的内容。但能把它讲得有意思的,我觉得只有那么两个。 第一个演讲按照大会惯例还是女生讲解怎么学习Go,是来自赞助商的人,而且又是从ruby社区里转过来的,用比较欢乐的形式讲解了她们学习Go的各种基本概念的历程。 所以倒还算是个很有意思的开场。 第二个演讲是我认为今年最好的一个。演讲者Filippo来自CloudFlare,有着安全背景以及浓重的意大利口音。 主要的内容是利用go-fuzz这个package来发现程序的潜在bug,有些类似于网络安全人员拿nmap扫自己的网络。 因为前不久刚在Go1.5的release note里面读到过Golang team的人用go-fuzz发现了不少标准库的bug,所以也听得格外认真。 go-fuzz的主要用法是测试者给定一个函数的输入样本(必须是string,内部使用的是[]byte类型),利用go-fuzz生成各种变形, 然后在code coverage统计的辅助下,更有效率生成不同的随机测试用例,用来发现潜在的bug。 这个方法对于正在探索如何提高代码测试覆盖率的我来说,是很开眼界的。 第一节过后马上去找他聊了聊具体的实践,虽然Filippo本人觉得开着go-fuzz在CI instance里面跑等程序crash就好了,但是我倒是觉得利用它来辅助单元测试的设计可能会让测试结果更可控更有效率。 而Fuzzing的过程可能在每个版本想要更新单元测试集的时候跑一跑就好了。 第三个演讲是来自Google的Alan Donovan讲go/types。跟去年他在gothamgo的kick off meetup上讲的oracle一样,依然是Go的code静态分析工具。 演讲的套路也一样,讲两句就开始在台上用emacs demo。 其实这个话题我是很感兴趣的,特别是怎么用Go自带的go/parser, go/printer, go/ast生成Go代码。可惜也不知道是他觉得大家听不懂还是就是没兴趣讲,在表面上挠了两下就自顾自的去demo了。 而在大屏幕上demo 命令行工具的效果是可想而知的…… 也难怪oracle到现在都还没有被广泛用起来。 第四个演讲的人JP Robinson来自纽约时报,听起来不是个很technical的公司,这人还确实讲的是他的一个side project,听过之后发现他还是花了不少功夫,也是一个很有技术热情的人。 不过因为对我感兴趣的东西涉及太少,也就没有做任何的记录。 上午剩下的两个演讲都没有什么值得回味的东西了,东西都很软,一个在博存在感,一个在吹嘘自己的influxDB,感觉都是跟Go这个主题在强拉关系。 特别是其中那个Verónica López,貌似是个培训机构推过来的人。临阵换演讲题目不说,最后讲的东西还是copy paste了一大堆之前其他人的slides然后毫无章法地乱侃了一通。 到最后还甚至没能回答上任何一个问题。 一想自己几个月前还愣愣地在他们的网站上提交了两个演讲题目地想要在这个会上分享一下我们自己的实践,现在想来真是呵呵了。 果然到最后看的还是名和利,要么演讲者有名,要么组织者得利,哪儿的技术圈都不例外…… 中午冒着雨实在是没心思好好找吃的,随便吃了个美式Diner就回来了。 下午的开场演讲我很喜欢,虽然是讲哲学的,却是深入我心那种。 我一直认为Go是一门聪明人写的很蠢的语言,它的关键字极少,程序结构也很简单。 每次在golang-nuts讨论群里有人提需求,官方的回复总是说这样会带来什么样的复杂性,这样的功能不具有普遍适用性,十之八九就拒了。 甚至Go标准库的各种代码在我看来,也没什么技术含量。唯一的特点就是很容易看懂。 以至于习惯了之后看身边的新人拿Go写出各种花来内心居然还有些内心抗拒。 现在终于有人敢在所有人面前表达出对这一现实的欣赏了,我忍不住会心一笑。 随后又有一个人的演讲表达了类似的观点,这个人因为是顶了sqlx作者Jason Moiron因病缺席的空,所以我连名字都没注意,但是他的演讲实际上也很有趣。 他是一个只有两人的创业公司的CTO,他说的一句话跟上面这个Kyle很神似,那就是编程语言乏味一点是好的,乏味说明你不需要动脑子就能驾驭他,因而能让你有更多时间腾出来解决真正的问题。 然而紧接着又是两个节奏拖沓不知所云的演讲,拖沓到我总觉得他们超时了…… 直到Nick Sullivan开始讲Go的crypto包的一些进展,他又是从CloudFlare来的,主要介绍了CloudFlare用Go做的几个产品,例如DNSSEC。然后列举了他们对Go标准库的贡献。 其中他反复提到他们公司一哥们把某某某加密算法用汇编写了一遍,于是把运算的速度提高了十几倍然后merge进Go标准库之类的,也是够神的。 不知道他们是不是有意的,不过今天之后,我的直观感觉还真是觉得CloudFlare这个公司既重视安全又拥抱开源,做东西还细致,值得一夸。 当天的压轴演讲是著名的澳洲Go blogger Dave Cheney。我觉得应该算是当天最重头的演讲者了。 估计也是知道自己是压轴的,他没有介绍自己新做的构建工具gb,而是非要高屋建瓴地谈论Go的非物质遗产…… 讲得挺好,值得一听,但是也就听听了事了。 最后还有一个小插曲,中午的时候跟Google的一个人聊天,我问他们是怎么做依赖管理的,我说我被go get坑了很久,他说:“哦我们从来不用那个,我们自己用bazel然后所有code都在一个tree里……”。 怪不得Go的团队在面对“go

我们想要什么样的有线电视

今天看到贵司的官推转发了一篇纽约时报的文章:How Television Won the Internet,新来不久的新同事说:我怎么觉得这个标题写反了?作为一个给有线电视公司打工的Cord Cutter(不订阅有线电视的人),我心内尴尬一笑。 然后就又在Reddit首页看到了这篇:Years Of Pretending Netflix Cord Cutting Wasn’t Real Is Biting The Cable Industry In The Ass。 其实这两篇文章,第一篇更像是大佬花钱买的软文,第二篇则是一个完全不太懂电视行业的人写的檄文。但是读完之后,反倒勾起一些想法,这场电视行业对互联网的战争,为什么会变成现在这个样子?我觉得我自己就是一个很矛盾的例子,作为一个给有线电视公司打工的码农,却连自己都不看有线电视。 想了想,我觉得是这样的。 为什么我不看有线电视呢? 因为我不喜欢灌输填鸭式的节目,不可否认,现在最好的视频节目都是大型电视公司制作的,但是大多数电视频道里的大多数内容是非常无趣的。我以前也吐槽过一篇不看电视,虽然说的是中国的情况,但是实际上美国大多数的电视节目也是非常的无聊且没有信息量,更别说广告的频率高到让人心烦。 虽然确实很多好的节目都是在有线电视首播,但是说真的: 我不想为追一两部电视剧一个月花近百美元订阅200多个我从来不会想看的台, 我已经够忙了,我不希望我的娱乐还要看人家排的时间表, 我也不想然后看一集掐去片头片尾只有40分钟戏的电视剧,还非得在电视机前守一个小时。 我觉得现在除了体育直播,真的没有任何看有线电视的动机。我想这也解释了为什么电影行业近年来又重新红火了。去电影院看场电影其实不管是时间还是金钱的成本都非常高,但是区别在于只要你想看某部片,你基本上可以在档期内任意时间找到播放它的影院,反倒比看电视有更大的自由度。现在互联网基础设施这么发达,还在死守着捆绑打包订阅卖频道的人真是美梦做太久不愿醒了。当然现在很多有线电视公司为了留住客户而免费提供的点播服务,在我看来也是使错了劲,明明是更好的用户体验,为什么反倒当添头送了呢? 那为什么我又还在给有线电视打工而没有失业呢?说到底还是内容为王,注意力经济。 从一开始到现在,所有被互联网颠覆的行业大概可以分为两种,一种是被互联网和计算机的速度和规模打败,另一种是被互联网替代品的低成本和低价格打败的。前一种比如Google或者Wikipedia,后一种类似小米手机。 最近这一波一波的互联网创业出产的产品,我认为基本都是后者,没有哪一个是我觉得是靠质量取胜的。而电视行业的互联网对手,从Youtube这个靶子被树立起来之后,就背上了卖垃圾内容赚吆喝的名声。 要说Netflix,我反倒是认为他是被电视行业自己培育出来的一个更强的对手,因为它确实有电视级别的优质内容。但是我在免费试用了一个月之后,还是放弃了,倒也不是因为贵,而是因为他没有最新最好的内容。如果说一个电视剧你要等到明年才能看,那么虽然花的钱可能是有线电视的十分之一,但是没有了社交媒体上的各种热议,你还会想看么?Netflix因为一直不愿意赚广告的钱,在财力上终究还是没有办法跟大电视集团竞争,不管是优质资源的购买还是自制剧集的拍摄,感觉都差了那么一点点。没有了资金充裕的生态圈,恐怕优秀的内容是没法持久产出的。也不是每个国家每个行业都有中国现在这么多的现金可以烧。 在我看来,现在的传统电视行业,就像是一个卖排骨时非得搭着腔骨一起按排骨价卖给你,还一刀下去你就必须全部买走的肉贩,而Netflix以及Amazon Instant Video这种的,则更像是只不做蛋糕只卖别的店剩下来的蛋糕边的烘焙店。 我既不喜欢有线电视公司的这种强买强卖还自设高墙的贩子,也担心整个市场被所谓的互联网创新搞垮以至于以后我们都看不到各种神作。但是我也很讨厌现在为了看好的内容,却只能花很多很多的钱,还得忍受很差很差的有线电视体验。 而我所希望的未来是: 有线电视的基础设施,全面向互联网转型,利用互联网技术压缩订阅成本。用非常低的订阅费用加上非常多的广告收入来支持电视直播。 靠付费点播来赚取额外的利润,同时将点播观看计入电视Rating,保证真正热播(不管是直播还是点播)的内容能卖出更高的广告价钱,反过来支持高质量内容的产出。 我觉得这样才像是一个健康的商业生态环境应该有的样子:你花很少的钱,就只能将就人家的播出时间,并且忍受广告。而你如果想当大爷随时点播,那就请多掏钱。 靠低价值用户来养行业,靠高价值用户来定向支持高质量的产品。但是所有人享受的,都是高质量的产品。 当然,最终也能给用户更大的选择权,让这世界上少一些浪费生命的垃圾内容。

如何考察一个人的经验

前两年做面试官的时候,总是喜欢考算法编程题,对于来面试的人的工作经验却问得潦草。 这其实很偷懒的一种做法。因为考算法一定是挑你会做的题去考别人,主动权是在面试官手里,而跟被面试的人聊项目经验,人家却比你懂得多,不认真投入是不行的。 当然现在想来也是有另一重原因的,工程经验这个东西,那时我自己都没有,怎么去考别人? 以我的面试经历来看,社招来的人做算法题大都磕磕巴巴,但招进来给的钱却更多,除了市场竞争原因之外,经验必然还是有用的。 如果来面试的不是一个刚毕业的学生而是一个有几年工作经验的人,那么光考察算法编程能力就实在是没抓住重点了。 最近一年多来,贵司大力度的招人让我狠狠地攒了一下面试的经验值,面试过的人五湖四海形态各异,从我上小学那年就已经研究生毕业的大叔到90后小留,从在简历上都不写教育背景的野路子程序员,到MIT绩点5.0毕业的神仙。 在尝到小破公司建团队不易的同时,也对于跟被面试者聊天这个事情越来越有心得。 问一个人的经验,实际上是问一个人做事的方式。如果说考察算法算是考试人会不会做事,而跟人聊经验才是真正看人能不能成事。 一般来说,一上来我会先让被面试的人简要介绍一下自己,到后来我会提示对方,可以给我讲讲你简历中的闪光点。特别是有比较长工作经验的人,他们的简历可一点也不“简”。 在这个阶段,我觉得一个优秀的码农起码应该清楚自己的简历里面哪些东西是真正有价值的,并且能够很有条理地讲给没有相关背景的人听。 之前看过很多通用的求职鸡汤文章,都说简历里面重要的是突出自己的工作把产品的效率提高了百分之几十,让销售额增长了多少之类的。 但是作为程序员的面试,我其实只关心两件事: 这件事的复杂度如何,你接触到了多大的一块,对于你没有参与的模块,你又了解多少? 一个人过往的项目的阐述清晰程度,直接反应了他对自己做的事情的参与程度以及对复杂系统的把握能力。这也是挤出简历水分的常用技巧。 最近几年面试的人,经历五花八门,有号称自己给美军潜艇写网络协议的,也有说自己在拉斯维加斯写老虎机的嵌入式代码的,还有说自己维护着现在公司的私有Linux版本的。 但是大多数人不但说不清楚自己参与的项目的全貌,连自己做的一小块东西在整个系统里哪一个位置都很难指明白。 最近面试的一个比较印象深刻的人,虽然有着浓得化不开的印度口音,却让我觉得其实这个事情也是有套路可言的。 她跟我说她参与的项目是一个企业级的ERP系统,这个系统有个功能是通过一系列复杂的操作导出不同的报表,但是这个事情的测试很麻烦,因为是工作流软件,很多时候都要手动测试。 于是她设计了一个基于XML的表述性语言,通过脚本解析,把这些操作自动化了,这样可以自动模拟测试场景直接比较最终报表结果。 寥寥几句,其实覆盖了四个方面: 参与的是一个多大规模的系统 要解决的是什么问题 做出了哪些努力 得到了什么效果 比起来,很多人花很多时间给我吹嘘他们参与的项目和产品有多少多少功能,多么多么强大,还滔滔不绝让人没法打断,实在是让我哭笑不得。 当然,更高级一点的求职者,会把全局讲述得更主干清晰一些,抓大放小,既便于听者理解,也吸引人发问,一来一去,很容易就聊开心了。 比如有些有创业经历的人,对于产品的方方面面都很了解,但是他只告诉你这个产品实现什么功能,前端用什么,后端用什么,怎么联系起来。 你自然会想要问如何扩展?缓存是怎么做的?一致性是怎么保证的?总之在别人发问之前,不要先自己沉迷于细节是很重要的。 对应到招聘者的实际的需求则是一个新人来到一个新环境里,需要短时间内熟悉的东西很多,那么对于复杂系统的快速上手能力就很重要了。 同样是一个项目的代码,有的人会抱怨文档不够,有的人有会抱怨文档太多,有的人却能短时间内理清脉络甚至根据自己的经验提出改进意见,最后者才是社招真正的价值所在。 你是如何做出技术上的选择的? 这类问题往往问起来很随意,比如既然你抱怨AngularJS不够快,有没有考虑过ReactJS?为什么使用Redis而不是Mysql? 其实可以了解一个人在做事的时候只是跟随别人还是自己有思考,以及这个人是不是对技术有热情,对完美解决方案有追求,最后就是考虑事情够不够周全。 总之一点,就是是否靠谱,是否可托付。 说真的,如果招进来一个人,分分钟都得看着,他写代码比你自己写还累,这团队的可扩展性不会太好。 当然,编程还是要考的。既然是码农,基本起码功不能丢,但是在写程序的同时,我会更少关注手册上可以查到的东西,而更多地看重逻辑之外的东西。又或者说对于产品运维方面的考虑。 通常在被面试者吭哧吭哧写完代码之后,我会问类似如下的问题: 你这段代码如何测试 程序效率如何优化,在什么情况下需要重构 有哪些冗余的逻辑可以去掉 你的程序如何监控 对应到自己这两年学到的东西,其实写逻辑代码真的只是一个软件产品很小很小的一部分。在一个产品的生命周期中跟业务逻辑不相关的但是又非常重要的问题包括: 产品经理的设计是否合理?如果不合理,是否是需求理解的问题? 如果过于复杂,是否需要重新评估成本? 代码如何自动化测试,例如一个由timer触发的任务,是不是应该提供一个接口给测试框架来强制触发该任务?timer本身又应该怎么测试? 如何支持冗余,一个服务不应该变成单一失效点,所以在设计的时候,就需要考虑多实例共同运行,那么实例之间的协作和一致性又怎么保证? 如何自动化部署?对于一个新建的服务,部署的时候并没有已有的流程,而你必须假设实施部署的人没有任何产品知识。如何保证部署的时候不出错? 产品的运行如何监控?是不是应该添加进程监控脚本?需要关注那些指标的变化,是否暴露了足够多的运行时状态使得自己能先于用户感知问题? 如何对正在运行的服务进行诊断?如果后台的事务出错,是否有足够的日志记录?是否能重现错误?是否有足够友好的界面提供给支持部门的人使用? 你设计的产品的性能是怎么量化的?何时扩展?如何扩展?是可以直接加硬件,还是需要额外的开发工作? 对上面这些问题的回答,基本上是鉴别一个人是否真的在之前的工作中学到了真正有用的经验的标准。 而这有没有这些经验有什么区别? 借用《禅与摩托车维修艺术》里的比喻,如果说你的产品是一辆摩托车,没有这些经验的人就是那个根本不了解摩托车怎么运行,只会拿着扳手四处敲碰运气的车行伙计,有时候凑巧能修好些小毛病,但长期来看一定会加速弄坏它。 而真正有经验的工程师则是那个知其所以然,所以敢于拿易拉罐上的锡皮去修宝马摩托,使得它即使用过改过坏过之后还能接着平滑运转的人。

一次做志愿者的经历

昨天早上,我去中央公园做了人生第一次长跑赛事的志愿者。 最早想要去做志愿者,其实是为了凑纽约跑者组织(New York Road Runner)的9+1计划,好拿到明年纽约全马的入场券。但是后来发现其实做志愿者还是有其乐趣和价值的。 让我有些意外的是,即使是没有薪水的志愿者工作也还是有具体分工,而且很多的岗位是很抢手的。比如在终点发奖牌之类的工作,都对报名者有要求,比如必须之前做过三次以上赛事志愿者之类的。 昨天早上的赛事(UAE Healthy Kidney 10K),我的工作是在跑道上维持秩序(Course Marshal),基本上是要求最低的岗位了。在报名的时候网站上写着对志愿者的要求是Be vocal and upbeat,主要是因为这个岗位的主要任务是两件事: 在没有执法权限的情况下维持赛道秩序,阻止公园里的骑行者,人力车甚至是马车乱穿跑道。 变着花样鼓励赛道上的参赛者。 这对于我这样一个外国人来说,还是有些挑战的,因为要靠一张嘴让人遵守秩序,又不是native speaker,在说服力上就更需要努力了。 当然,在场也有赛会的人进行专业指导,也算是获得了一些领导力和协调能力的免费培训吧。 因此,虽然因为之前错过了太多赛事今年肯定是完不成9+1了,我个人还是收获到了不少东西的: 开赛之前我们的分区Captain说要找几个高大强壮的人去公园门口引导行人,我仗着宽度,居然在一堆白人黑人人群里也被选入了,不知道是该骄傲还是该无语。 跟我一起站岗的有一个哈林区来的亚裔小伙子,人特别热情,在引导运动员入场的时候在路边对每个人说Good Morning,以至于所有路过的人都注意到他的存在,有问题全都找他。 之前总在工作中觉得美国同事更擅长制造存在感,同时也觉得这种存在感是必要的,今天看到这么简单的办法,却感觉自己不太好意思实践……这个时候我才觉得,文化的差异造成的人性格和行为方式的差异,真的还是蛮明显的。 比赛开始之后,我们所站的地方是10公里赛程的第8公里处的一个大上坡,这个小伙子全程换着各种花样激励运动员,对比起来我觉得自己真的是词穷。 不光是我,跟旁边的白人志愿者妹子扯淡,她也觉得如此,还说幸亏我们在第八公里处,要不然都不好意思跟人运动员说,“加把油,快到终点啦!”。 到后半程的时候,有俩圆滚滚大叔气喘吁吁的走过来,妹子说了句:”You are doing great!“,大叔反调戏了一句:”Do you really think I am doing great?“。妹子也挺无语的。 比赛前有运动员问我PortaJohns在哪里,我一头雾水,后来问哈林小伙才知道其实是移动厕所的意思,算是学了个新单词吧。 比赛中我们有一项任务是阻止一切人力车,汽车之类的横穿跑道所在的一条车道,一开始劝劝人力车什么的还蛮轻松的,结果一会儿来了辆马车,对着高头大马的马鼻子跟车夫说不行你不能过去,还是颇有点紧张的。 比赛后再回去还赛事马甲的路上跟几个志愿者聊天,发现他们居然都要跑今年的全马,而且还居然都是通过9+1拿到的参赛资格!看来明年一定要好好规划,坚持执行下去了。

Dark Pools

因为自己看书实在是很慢,所以不敢轻易尝试一本未知的书,由此渐渐养成了每年年底去各种网上总结看年度推荐的习惯,从此也就永远不可能赶上文艺的潮流了。 这本《Dark Pools》是年初在知乎上看到有人推荐《Flash boys》,然后去Amazon看书评却发现大家一致认为《Dark Pools》更好于是买了Kindle版,作为床前读物来读的,事实证明,这本书不但容易读,也非常值得读。 对于很多人来说,这本书算是一个美国股市高频交易的演义故事,作者Scott Patterson作为华尔街日报的记者,长期浸淫在这个行业里,确实有些奇趣的好料。比如那些做机器学习指导交易的人会用机器人爬取纽约餐厅订座网站OpenTable上华尔街附近高端餐厅的订座情况,以此来判断华尔街交易员对股市的行情看好程度,不可谓脑洞不大。 但是在我看来,这其实是一份很不错的“计算机技术如何颠覆一个行业”的纪录文献。书中所记载的故事从上世纪八十年代中期开始,一直到2013年收尾,纵贯三十多年,一步步介绍计算机系统是如何在速度,情绪以及判断力上胜过人类交易员,最后成为股市中的主导力量的过程。 现在的人可能很难想象,普通投资者在自己的电脑手机上下单买卖股票查看行情其实并不是一开始就有的事情,而普通投资者可能也没法相信,自己在看好一只股票并下单的这几分钟里,高频机器人可能已经对这支股票进行了上万次买卖交易。 在计算机和互联网行业,有一个常见词汇叫做破坏性创新(distruptive innovation),可能跟计算机技术的特点有关,可编程的机器最擅长的就是更快更精准的做重复的事情,而计算机网络最擅长的就是更快更廉价地传播信息,因此在给行业带来变化的同时,不可避免的就会破坏行业中既得利益者的利益。最著名的例子就是Apple的iPod + iTunes,可以说iPod是2000以来Apple的第一个改变世界的创新,也成就了它在音乐产业里的领导地位,但是在21世纪的前十年里,整个音乐产业却缩水了一半。 而对于华尔街这么一个玩钱的地方来说,既得利益者的抵抗力量可比音乐家文艺青年们强多了。计算机化网络化的交易系统,不但要跟守旧势力交易员作斗争,还得努力扭转法律法规,书中充满了各种道高一尺魔高一丈的故事,而作为全书主角之一的Island电子化交易系统以及其作者Josh Levine,虽然被作者演义成了一个一己之力对抗整个华尔街和美国金融系统的出世英雄让我觉得略有夸张,但是确实让人看到一个具有行业领域知识的人,如果用新技术武装起来,会有多大的创造力和破坏力。 而最终的结果现在已经很明了了,现在高频交易的基础之一,做市(Maker-Taker)就是Island的创造,而高频交易商们,更是不惜为了缩短3毫秒的延迟,逢山开路遇水搭桥耗费数十亿美元铺设光纤,最后更是转向了大气微波通讯(这么说起来,逐渐兴起的无人机行业,倒是高频交易者的隐忧之一呢)。 因此华尔街被计算机和网络技术颠覆的历史,一定是可以作为教科书指导一众创业者去颠覆其他行业的。 当然,科技创新并不是全是优点,就好像现在世界上的任何一个软件产品一样,bug是无处不在的,最著名的应该就是2010年的flash crash,在几分钟的时间里,因为线路故障,导致高频交易软件触发bug,因此做出了疯狂的举动,导致埃森哲的股票直接跌到了几美分,而Apple的股票却以10万美元一股成交,而此时,交易所的人甚至都还来不及拨通电话会议,监管机构则根本搞不懂发生了什么。在看懂了后面的逻辑之后,作为软件从业者不禁一笑,但我想当时的投资者和公司高管们的心脏应该都经受了不小的冲击吧,以至于几大交易所只能协商取消过于荒唐的交易。 总结来看,作为用新技术武装自己的创造者,如果想要颠覆一个行业,这本书给我的指导包括: 一定要具备领域知识,想当年做电商的那么多,真正颠覆了传统零售业的,却只有做贸易起家的阿里巴巴和在中关村卖光盘起家的京东。懂行业知识,才能找准痛点使对劲。从另一方面来说,如果完全没有领域知识,只是为颠覆而颠覆,反倒有点无病呻吟的意思了。 关注细节,持续改进,正是因为创新是破坏性的,你必须预期到守业者的反扑,我觉得这一点在国内互联网页更加明显,很多时候大家一起上新产品,往往到最后胜出的并不是技术最好投资最多的,却是那个运营做得最仔细的。 技术是必须的,但是却不是充分的。直白点说就是码农没那么重要,自己作为一个码农还是觉得挺忧伤的,但是却也是无可奈何的现实。

Microsoft Band用后感

三月份的时候在网上买了微软的手环(Microsoft Band),用到今天差不多有一周了。 今天带着它去星巴克买咖啡,用它自带的星巴克应用付账时,星巴克的小妹好奇的问:“这个好酷,是Apple Watch么?”。 随后我把这个段子以及它的照片发到朋友圈,居然所有人(除了在微软工作的小伙伴们)都在问我这是什么玩意儿。 看起来确实还真需要给大家科普一下这个我个人非常喜欢的智能手环了。 其实我之前对于智能手环或者手表都是持否定态度的,认为这是一个伪需求。因为之前我所听说的所谓智能手环的主要功能是记步和监测睡眠,而这两样我都不需要(特别是睡眠监测,我穿袜子都睡不着,别说还带个硌着不舒服的手环,睡眠质量肯定高不了),而其他的智能功能都需要配合手机实现,加上我本身没有戴手表的习惯,所以总觉得这个设备很鸡肋。因此哪怕是Apple也要推出智能手表,我也没有一点点兴趣。 之所以又买了微软手环,其实是想要一块心率表。在坚持了三年慢跑之后,发现减肥效果其实没有想象中的理想,因此想到了用心率表来辅助控制配速,达到有氧减肥的目的。一番调研之后觉得传统的胸部束带式的心率带实在是不方便,手指触摸式的心率腕表又必须停下来读数很烦,所以就一直没有决定买哪款。好在随后发现了光学心率监测这么个技术,通过光线感应皮下血管里的血液流动状况来推算心率,因此可以做到把传感器装在手腕上,持续监测心率。当然好的技术并不是没有缺点,第一个缺点是因为技术比较新,精度还不是很高,第二个缺点就是价格贵,目前在售的光学心率监测表主要是Mio自己家和Adidas使用Mio生产的传感器做的腕表,价格在150-200美元左右。 恰好这个时候微软推出了Band,这个传感器怪兽虽然看起来臃肿不堪简直就像个实验室原型而不像个产品,但是却恰恰好集成了一块我想要的可持续监测心率的光学传感器。在它发布之初,我查阅了不少评测,大多数人认为它的精度还属于可接受范围。而我想着反正自己用着WindowsPhone,其他产品反正也得差不多200美元,不如就买个Band玩玩算了。 当然就好像之前我买Surface Pro 3一样,现在考虑买一个电子产品的时候,硬件配置其实只是一个并不算太重要的方面,对我来说最重要的还是应用场景。之所以我会迅速爱上Band,主要还是它极大的改善了我每周三次的慢跑体验。 首先是有了持续的心率监测,锻炼效率能得到提高,我只需要翻翻手腕就可以决定是需要加速还是减速。 其次,出门慢跑的第一要务是少带东西。以往除了公寓钥匙,我至少会用臂带或者腰包带上手机,用来听音乐和使用运动追踪软件。而因为我一般都是在下班后跑,所以如果路上还想要买杯咖啡提高一下兴奋度或者买个小点心补充体力,就还得拿上一些零钱或者信用卡。 现在好了,买咖啡这件事情完全可以用Band上的星巴克应用来完成,点击磁贴图标就会显示我关联的星巴克充值卡的条形码,可以直接在星巴克的店里购买咖啡和点心,钱和卡就省了。 而因为Band自带了GPS传感器和心率传感器,在跑步过程中Band会持续显示实时心率以及配速,每跑完一公里,手环会有震动提示,并显示上一公里的平均配速。可以说已经做到了一个运动追踪应用在运动中该做的一切事情。所以如果不是为了听音乐我都完全不用带手机,可以只管跑,回来再通过蓝牙上传到手机里的Health应用查看统计。 我现在还是会带着手机去跑,一是为了听音乐,二是作为Endomondo的付费用户,我感觉他们的统计数据以及训练计划还是比微软自己的Health应用要专业不少,所以我会同时开着Band的跑步模式和手机里的Endomondo。这倒是刚好对比测试了一下Band的精准度,总体来看还是非常不错的,两边的整公里的提示时机非常接近。 另外有了手机通过蓝牙跟Band的连接,又让Band的功能更加丰富了。因为有了一块长条形显示屏,我可以把手机放贴身的兜里,用Band来做不少事情。比如: 出门之前我可以查查当前的天气,来决定穿什么样的衣服去跑, 去河边的路上可以顺便看看今天的股票走势, 回来的路上看看日程表上有没有晚上电话会议来决定需不需要快速回家。 全程更是可以接电话看短信,微软甚至还桑心病狂地弄了个虚拟全键盘在这块小小的显示屏上,所以只要你不嫌弃,边走边用智能手环发短信也是可以的…… 并且WindowsPhone支持连接多个蓝牙设备,所以之前使用的蓝牙耳机也可以接着用不冲突。而这所有的功能都可以通过微软自带的Health应用来配置。 另外还不得不提到Cortana,因为集成了麦克风,所以可以通过Band上的Cortana语音助手给手机发指令,比如跑步过程中播放器随机到一首节奏不太对的歌曲,以往需要停下来掏出手机来调整,现在则可以长按Action按钮唤出Cortana,然后对它说“Next track”,它就会为你切换到下一首歌曲。 而且要赞一下这个Action按钮是实体按键,所以即使是在有五个月冬天的纽约,戴着手套跑的我也可以照用不误。 然后在跑完之后如果还需要肌肉训练,Band还提供了两个非常实用的功能:秒表和Guided Excercise。 秒表很好理解,比如做平板支撑的时候想记个时时很实用的。 而Guided Excercise我觉得真是一个非常Apple范的功能。首先,你可以在Health应用里挑选你想要做的练习,每一个动作都有视频示范教学。 学会了之后可以把练习计划同步到Band上,让它指导你来完成。 整个过程给人一种确实很合理的感觉,也是我在Apple的产品之外得到过的为数不多的自然顺畅的软件使用体验之一。 最后,Band的电池续航也值得称道,在集成了这么多的传感器和一块液晶屏之后,居然还能在我隔天跑一次的情况下做到两天一充,至少我觉得比一天只有18个小时的Apple Watch不知道要高到哪里去了。 虽然我觉得Microsoft Band于我来说是一个非常棒的产品,但是说到底还是因为恰好挠到了我健身过程中的几处痒痒。因此我并不能简单地说它是一个值得每个人入手的产品。 作为一款价格不算低,但是相比于Apple Watch来说简直是烂便宜的智能手环产品,他还是有一些问题的。目前我感受到的有: 不支持中文。虽然我觉得这个问题有可能通过之后的软件升级来解决,但目前来说对绝大多数中国的用户来说是个deal breaker,不过好像现在也没有在国内发售,估计到了真的正式推出的时候就不同了吧,毕竟微软的研发可有不少人在中国啊。 存在感太强。因为使用了长条形的屏幕加上较厚的电池和光学心率传感器,整个手环的厚度是比较可观的,最直接得影响就是带着它基本上没法在电脑上打字,手腕有一种被托起来的感觉,所以实际上他不太适合作为普通意义上的手环使用。 更像是原型机而不是工业设计的结晶。结合上一条,Band的佩戴舒适感其实是一般的。因为整个手环有四块硬质的材料,分别是长条的屏幕,背面的心率传感器和两侧的电池,通过具有一定弹性的橡胶材料连起来,还都是朝里贴在皮肤一侧,怎样也没有办法做到完全贴合手腕曲线,但是光学心率传感器又要求必须紧贴皮肤,所以还得使劲扣紧背面的滑动扣。在我看来,如果当前没有办法缩小传感器或者电池的尺寸,那么在整个手环的内侧用更柔然的弹性纤维包裹手腕,而把硬质材料放置在另外一侧,哪怕有些原件会有些吊着的感觉,佩戴也会比现在舒适得多。 蓝牙连接不太稳定。这个问题也是在微软的论坛里被提及过不少次的问题,很多时候,当手机偶尔离得太远,导致蓝牙连接断开之后,即使重新回到有效范围,Band和手机无法自动重新建立起稳定连接,有时候尝试手动连接也会出现连不上的情况。官方的建议是关掉Band的蓝牙重新启动,或者重启手机,最后不成可以重新配对,虽然每次都能解决问题,但这个确实不太应该。 长条形显示屏的显示效果和触摸手感都非常一般,并且也没有什么蓝宝石玻璃加持,带着总有一种分分钟要被划花的感觉。 总结一下: 如果你是一个对用户体验有极高要求的Apple用户,建议还是等Apple Watch吧,只是有些功能Apple Watch从硬件上不支持的你还是得不到就是了。说到这里不得不感叹一句,领先者总是容易被自己的成就所拖累,只有追赶者才敢猛干快上,新技术即使不成熟也会先用上再说。 所以如果你是一个勇于尝鲜的电子玩具爱好者,Band是非常可能让你开心的。 而如果你是像我一样需要一个无胸带心率表又实用运动追踪软件的慢跑健身爱好者,那Band极有可能成为你的心头之爱!

Docker open-source-a-thon小记

周四的晚上,去时代广场微软的纽约总部参加了一个Meetup,跟不少技术宅聊了聊天,也亲见了外国人是怎么做开源的,觉得觉得还蛮值得一书的。 当天的主题是庆祝Docker的两岁生日的系列活动之一。名字叫做open-source-a-thon,因为活动形式跟Hackthon很像。 组织者设立了一个网站:docker.party。号召大家为Docker贡献代码和文档。有意思的是,因为Docker的Logo是一个鲸鱼,于是他们决定跟某个保护海洋动物的慈善机构合作,在活动期间参加活动的人每成功为Docker相关的项目提交一次代码或文档,活动赞助商就向该慈善机构捐助50美元。 不得不说这个点子还蛮赞的。因为当天吸引到的都是对Golang或者Docker有兴趣的人,不说免费的披萨和啤酒,能在github上成为Docker的contributor其实还挺诱人的。而Docker则不但推广了项目本身,还突然多了一大批人来帮忙改进一些大牛们懒得去看的细枝末节(比如出错信息,指引文档之类的)。当然,对应的慈善机构也乐得多筹一些款项。所以说算是三赢。 开场前,有个叫Steve的人在会场内问,谁会Go,谁知道open source,出乎我意料,举手的人其实并不多,而我因为两次都举了手,也被招募为当晚的Mentor之一,被发了一件紫色的T恤。 当然,后来我才发现这个Steve自己其实是github上的spf13,本博客所使用的网站生成系统Hugo的作者。能目击大牛,也算是当晚收获之一了。 然后随着大家吃完披萨陆陆续续地回到会议厅,Steve把活动的流程和规则简单讲了讲,大家就开始分组开始干活了。组织者很贴心地给Docker项目在github上的700多个issue中很多都打上了标签,标明了难度和类别。有代码相关的,也有文档相关,所以即使你不会写代码,也可以参与进来。而且他们设计了一个小机器人GordonTheTurtle,自动分析issue页面的评论,来给当前issue打标签 开始之后,我跟附近的人聊了聊天,各自自我介绍了一下,发现完全不懂Docker或者Golang的也还挺多的。导致一时间我也不知道怎么去Mentor人家了,因为我觉得虽然Golang很容易,但也不是几分钟能讲完的。 后来Steve过来给了个很好的建议,说如果之前有编程经验,那么学习Golang的一个很好的办法是看代码写注释,因为Golang的文档都是自动生成的,所以了解了注释的格式之后,写注释就相当于写文档了。 于是几位小伙伴立马就挑代码开始看了起来。不得不说这是个好主意。我们一直说学习一门语言最好的方式是读开源的代码,平时也会去读读Docker的代码,但是一直没有想到这其实也是个入门的好方法,而且还能够从一开始就给开源代码做贡献。看起来一开始我举手说懂open source是大误了,其实我还真的不怎么懂open source。我一直认为做开源首先你自己得是相关领域的大牛,而且我之前狭隘的理解给开源项目做贡献就是帮人家实现新的功能或者改bug,无一不需要大量的时间和对相关技术的精通。 而谁知道真正做起来,其实门槛要低得多,当晚我看了一会儿issue列表,就尝试着自己claim了一个小的输出信息的issue,直接改了然后提交了pull requset了。当时我就想,要是我们自己的产品代码也能请用户帮忙完善细节该多好。 第二天,我就发现自己的pull request已经被并入Docker的代码主分支,在开心自己为开源和慈善都做了一些贡献的同时,还发现有人给我发了一点叫做PrimeCoin的电子货币。 谁知道做开源这么好玩呢? 另外,当场还跟另一位Mentor聊了聊天,感觉这娃对Go和开源项目都很有研究,自己平时也做很多好玩的工具,一听说他再给一个加拿大的公司远程打工,就觉得放着大好的纽约机会舍近求远太浪费了,于是塞给他我的名片一张,看看能不能赚点推荐费,哈哈。

2015 NYC美联航半马

今天刚跑完2015纽约曼哈顿美联航半程马拉松,本以为冬天一直训练不太规律成绩会掉很多,没想到还是刷新了半程的个人最好成绩。 从去年北马的2小时11分缩短到了2小时06分。 虽然很可惜地没有在2小时之内完成,但是对于赛前保守地在手上绑了个2小时15分配速条的我来说,第一次海外马拉松体验还是可以点个赞的。 这个美联航半马,虽然是个半程比赛,但是因为全程在曼哈顿岛上,而其宣传标语也是“让时代广场上的交通为你让路”,所以成为了nyrr.og组织的众多赛事中除了纽约全马之外唯一一项需要抽签的赛事,尽管参赛费用超过120美元,2万多个名额依然非常紧俏。 整个路线就是一个经典的曼哈顿一日游,从中央公园出发,绕园一周后沿第七大道向南直到时代广场,在时代广场的五光十色中沿42街向西直至哈德孙河边无畏号航空母舰博物馆附近,然后沿着被封闭的West High Way一路沿河往南,路过世贸中心,最后在华尔街冲线。 早上为了补充能量,六点就起来煎了两个鸡蛋,半盒午餐肉,用两片吐司夹着吃了。根据以往的经验,一顿高热量的早餐对于长距离比赛还是非常有帮助的,平时为了减肥不吃饭就去跑,最多十来公里的时候已经精疲力竭了。水不敢多喝,总共就喝了一杯牛奶一罐红牛。 今天的天气也还是不错的,虽然有一点点风,但是温度好歹是零上。鉴于之前三次北马我都穿多了,今天狠心决定短袖+压缩长裤,外面套了一件被kiki同学嫌弃了很久的抓绒外套作为赛前御寒,开赛时扔进了GoodWill的募捐箱。虽然出门的时候冻得有点发抖,但是真跑起来之后倒觉得刚刚好。 一开始在中央公园里跑,地形比较崎岖,特别是3-4英里之间的一段爬坡,是之前比赛和训练都没有经历过的。当时直接觉得这次肯定要跑到两个半小时了,好在整个路线其实是先难后易的,跑出中央公园之后,基本上就是大直道加几个直角弯,而且总体来说海拔是下降的. 从中央公园冲出来,感觉没几步就跑到了时代广场,很多人都在这边慢下来拍照,我也折腾了几张,但是其实天色原因拍出来不太好看,还浪费了时间…… 而且从进入街道开始,赛事组委会召集了一帮艺术家和DJ在街边演奏,每隔一段距离都有一摊,到了河边之后又变成了节奏强劲的打击乐和重拍DJ舞曲,一路鸡血打不停。也算是这个现代艺术之都的特色之一吧。 从42街右转,就已经过了半程,此时稍微有点撞墙的感觉,然后就看到旁边有人搞怪的加油标语写着“Don’t stop, people are watching!”(别停下来,好多人看着呢-_-||)。恰好此时遇上了组委会的2小时10分的pacer,于是就调整脚步跟她跑了一段儿,其间聊了聊天,一听说我是北京来的,一哥们从后面拍我说他明年要去跑长城马拉松,我只能拜服…… 此时又遇上组委会在路边发能量胶,上去抓了一支,觉得也缓得差不多了,就跟pacer说我先跑了,咱回聊。结果没想到竟是一路在2小时10分的线之前跑到了终点。 河边的行程是在封闭的West High Way干道上跑,瞬间觉得路宽敞了很多。因为自己经常沿着哈德孙河边跑,所以居然有种主场的感觉,而且美帝大个子多,跟随的时候跑起来很省力,嘬完一管能量胶,居然没怎么难受就跑到了世贸中心。 最后的两公里,有一段是在隧道里,此时各种鬼哭狼嚎响彻全程。为了早日见光,不觉又加快了速度。 从隧道出来之后显示离终点只剩800米了,之前我都会在终点前一公里左右稍微走一段,为冲刺攒攒劲,但是这次全身没有什么不适,所以也就不停了,最后虽然没有能够全速冲刺,但从赛会的照片来看也还不算太狼狈。 最后要夸一夸NYRR的赛事组织。 首先是计时设备,两根芯片条贴在号码布上,全程看不到计时点,但是亲朋好友却可以通过专门的手机app即时追踪你的进程。也不知道用了什么黑科技。 然后是在21公里的路程中,设置了多达10个补水点,提供水和佳得乐,错过了一个也没关系,而且秩序井然,完全不需要排队等水。 赛会的安保工作做得很仔细,可同时亲朋好友观战也很方便,除了终点前有一段运动员专属区域,其他地方基本上都是开放的,特别是在河边的时候,感觉家属们要是有兴趣,都能陪跑一段。 另外赛会在中途和终点处请了很多名专业摄影师,为跑动中和完赛后的运动员拍照,所以一个人跑也不怕没法留念了。 上午跑完,下午网站上就能凭参赛号码看到照片。虽然想要高清大图得掏不少银子,但是专业的相机和摄影师捕捉的瞬间还是很让人有收藏的欲望的,至少这次我可能会掏钱买就是了。 比赛终点处还有电视台的摄影机,下午的时候就可以在ABC电视台的网站上回看自己的冲线片段。 结束之后因为风又变大了,所以没有多逗留,径直坐地铁去唐人街喝了个早茶,kiki同学起床了就直接过来居然还比我晚到,下午两人一路从唐人街逛+吃回来,连地铁票也省了。这一天下来基本上绕着曼哈顿岛一小圈也是醉了,不过感觉自己的一天多出好几个小时,还挺充实的。

我的跑鞋史

这几天跑步每天都路过一家Asics的专卖店,然后门口拿彩色粉笔大大地写着全店7折。 当然跑过去的时候自然是看不见奸商在下面写着一行小小的“某些产品例外”的。 周五又专门走过去逛了一下,结果是又买回来一双GT-2000 2。 回来整理一下鞋架,发现自己虽然才跑了4年多,鞋可是买了上十双了。 Runners’ World上经常说,不要总穿一双鞋跑,轮着穿才能延长跑鞋寿命,可我这待命阵容,运气不好的那真是跑一个月轮不上一次了。 不过倒是正好有了一定的样本量,可以总结一下业余跑步爱好者的跑鞋选择问题了。 上面这张照片里左上角的Asics Kayano 16是我买的第一双真正意义上的跑鞋。 当时正是刚开跑,严重超重的体重让我不到一个月就跑断了一双李宁跑鞋的中底,同时被各种膝盖脚踝痛困扰,于是一咬牙,上就上最顶级,买了双传说中的跑鞋之王Kayano。 第一次买装备肯定是要吃亏的,虽然这双鞋是我用六折的价格买入的,但是其实当时并不知道,这款鞋已经是老款,而这种橡胶材质的减震鞋底,哪怕是新的放在仓库里一两年,也是会老化的。 另外,后来才知道的事实是,所谓的顶级跑鞋,并不是说就是最好的跑鞋,而是给体重最大的人使用的跑鞋。 而且人的跑姿分内翻(脚掌着力点偏内侧)外翻(脚掌着力点偏外侧),对于不同的跑姿其实需要适配不同的跑鞋来保证跑动时脚踝的正直。 所以其实并不存在什么对所有人都适用的顶级跑鞋,对于每个人来说,都只有最适合的跑鞋。 好在我当时属于大体重加上大众脚,所以这双鞋算是让我比较舒服的入了专业跑鞋的门。 2011年中有机会来到慢跑之都纽约,别人都去五大道买名牌,只有我专门去了趟中央公园西南的The Running Company测脚型买跑鞋。 当时刚刚开始接触跑鞋,还属于迷信四大厂的阶段,就想着买双国内买不到的Brooks或者Saucony之类的回去酷炫一下。 这趟实测却被专业人士拍了几掌。 首先是他说我不够大体重,根本没有必要上Kayano,我说我挺胖的啊,卖鞋的美国哥们说:呵呵,你看看我们街上的胖子…… 然后在跑步机上对着摄像机试了好多双鞋,他告诉我最适合我的居然是一双国内跑步圈最鄙视的Nike!也就是上图左二的Nike Zoom Structure 14。现在看来这双内侧支撑强劲的跑鞋虽然避震一般般,但是对于调整踝关节的姿势反倒是起到了很好的作用。 反倒是后来贪便宜在折扣网站上买的一双Brooks Ravenna 3和一双Saucony Ride 4,是在是有点令人失望,和所有美国牌子一样,这两双鞋做工粗糙,一双结构臃肿,一双包裹性很差,2012年我穿着Ravenna 3跑北马半马,成绩反倒不如穿着Nike跑的2011年。 于是从此之后相信跑鞋没法迷信品牌,只能亲身尝试。 到了2013年下半年,又看上了被Fast Company评为2012年最具创新力公司第一名的Nike的新产品:Flyknit系列。心痒之下在一年里分别买入了Flyknit Lunar1+和Flyknit Free 4.0两双。这个系列的特点是脚感无敌,整个鞋面感觉特别轻薄柔软,包裹性很好,加上轻,跑起来真是人鞋一体。尤其是主打赤足体验的Free系列,感觉就像穿着袜子在跑。但实际上这个时候这两双鞋对于我来说还是太轻量级,所以基本上Lunar只在放松跑短距离的时候穿,而Free 4.0完全就是图个体验,夏天拿来走路用…… 这其间我的主力跑鞋其实还是Nike Zoom Structure,到了2014年,这双鞋一是老化,二是减肥初见成效之后,Zoom Structure高耸的内侧支撑已经变得相对坚硬,使得我跑的时候觉得鞋底不平。 当时发现Kayano 19代正在特价,才80刀,于是兴冲冲地入手,只是后来才发现美国的Asics鞋码比Nike和Brooks都要大,于是这个买大了半码的鞋,只能穿特别厚的袜子跑,最后还是决定留作日常步行鞋了。 在花了80刀冤枉钱之后,还得继续物色新跑鞋,于是就买了左下那双骚黄的Mizuno Wave Rider16。第一次尝试物理减震结构的跑鞋,最大的原因是好奇,当然还有我觉得Mizuno的鞋款的设计是一线跑鞋厂里面除了Nike之外最好看的。 这款Rider 16后掌的减震确实很给力。物理减震结构总体来说更加硬朗,跑起来不会有泄力的感觉,加上没有大块的橡胶挂在鞋底,跑起来格外轻松,于是这段时间不断刷新各种个人最佳成绩。 只是物理减震的问题在于老化快,在大跑量备战2014年北马几个月之后,逐渐感觉到了跑步中膝盖负担变大,折腾了一番在家里的几双跑鞋之间换了一轮之后才开始怀疑是不是跑鞋的问题。于是在回国跑北马之前去了趟纽约著名的Jack Rabbit运动品店,在专业人士的帮助下,买了双Brooks最新的Defyance 7,当时我是穿着Rider去的,试鞋的时候,一站起来就立马感觉到了不同,于是也就立马刷了卡。 所以说,与其等到膝盖痛,不如隔一两个月穿着跑鞋去跑鞋店试试鞋,是不是改换跑鞋了,你立马就会知道,哪怕脚上跑鞋的鞋面还毫无瑕疵。 这双丑到爆的Defyance,是我第二次全价购买最新款跑鞋,也改变了我对Brooks的看法,2014的北马半马,穿着它刷新了个人最好记录。 所以说最后一条略无节操经验就是:买新不买旧,新的贵的就是好的,买买买! 所以,今天买这双看好已久的GT 2000 2,其实是穿着去年买的Asics Kayano 19去的。同理,呵呵。

把这个博客静态化了

有朋友已经发现我为这个没什么人看的博客又买了个域名,换了个模板。 而实际上,后台还有更多的变化。

从三十岁开始改变人生

如果总结2014年的关键词,我想一定有一个词会入选,那就是“任性”。

又记得在知乎上有人问过,“你收到过的最好的礼物是什么?”。 我想我的答案是:“宽容”。