• 周报 – 2022年11月第1周

    久违了的周报。上一份周报是10月的第一周,十月接下来的三份周报我都在旅行。今年的这几趟旅行我是打算写游记的,但趁着现在记忆清晰我打算先把他们以周报的形式记录下来,正在写,还请期待。

    生活上

    上周日晚上落地回纽约。这一次时差其实调得也挺顺利,九十月这两个月我坐了6趟洲际红眼航班,也就倒了6次时差,在褪黑素的帮助下自己倒时差也越来越熟练。大概是撑到晚上十点就要含一粒褪黑素睡下去,这样一般能保证四五个小时的连贯的深睡眠,在半夜四点一般会醒来,在这个时候要坚决接着倒头睡,哪怕睡得没有那么深,保证总共七八个小时的睡眠。经过反复多次实验发现就算这样最后两三个小时比较浅,但总共睡了七八个小时,那对第二天的精力影响不大。否则如果最后两三个小时起来了或者在看手机的话,第二天会有点精力不足和反应迟钝(在首尔的第二天和这周回来的第一天就属于这种情况)。

    这周出去和朋友和室友吃了4顿饭,最好吃的一餐是和来访的LXX在东村的木村吃的もつ鍋。这家的豚足鍋和もつ鍋都超过预期的好吃。没想到在从福冈回来之后还能吃到这么正宗的博多鍋。

    豚足鍋

    这一周接着旅行中在读《岩波日本史2: 飞鸟奈良时代》,主旋律是日本律令制国家的改革,而开启律令制国家的一个契机就是日本眼睁睁看着百济亡于唐和新罗的联军,在白江口之战中日本大败于唐,在朝野引发了很深的亡国危机,从而开启了在政治体制和宗教上学习唐的高潮,大化改新,引入律令和佛教。而这一切都和上两周在九州的旅行很有关系,福冈的大宰府是保卫日本不受唐和朝鲜半岛势力入侵的前线,这次看到的水城和大野城都是因应白江口之战败而建立的防御工事。

    这周买了个AirPods Max给自己用。

    AirPods Max

    周末比较放松,也是好久没有在纽约过一个放松的周末了,难得给自己的闲散找一次理由吧。找日语口语老师上了一节日语课,我让老师多问我问题让我造句,这几次下来发现我的缺口不光是在词汇上(其实词汇还挺容易用更简单的词汇代替的,所以问题不太大),而是在一些固定搭配(表現)上,诸如我本该做什么(しておけばよかった)。也许可以专门找一些固定搭配的词库来背一背Anki。

    周末除此之外就看了好几集孤独的美食家,特别治愈。

    希望下周:

    • 接着保持好的作息。
    • 把韩日部分的游记周报写完。
    • 下周末计划一下感恩节的旅行。

    技术上

    本周技术上的进展不大。

    • 技术阅读和职业阅读几乎没有,看了一点关于Observability的talk。
    • 简历也没有来得及改,周末实在是太松弛了。
    • 工作上这一周在写一个关于Observability的项目的green doc,类似于PRD。大家都知道在这个组里Observability有进步空间,但把这些用户需求整理成PRD,选出prioritization里高的和影响力大的MVP,这么一做发现这个过程其实比想象中难一点。还是个挺有意思的锻炼。要克服存在银弹的wishful thinking,和脚踏实地地看到真正的需求是什么。

    本周一个大消息是Twitter被Musk收购之后的大裁员:我在Twitter纽约认识的两个朋友都被裁了。也因此想了想接下来自己的职业生涯规划,其实这个阶段的经济形势是不怎么影响得到我的,我目前没有负债和成家的负担,也不担心工作身份的问题,有的「铁饭碗」的job security在这个阶段可能对大多数人来说是很重要的,但对于目前的我似乎意义不大。那在这种形势下我该做些什么呢,大概是有两个选项,要么把成长的重心放在非职业的部分上,比如多出去看看世界,学些新技能,等等;要么把成长放在职业的新经验和背景积累上,比如虽然在这个时候整个行业普遍的增速较慢,这样比较难获得产品高速成长和团队高速成长带来的一些锻炼机会,但可能可以投入一个新的子领域(ML Ops?)开始一些经验和背景知识积累:也许可以转职去这样的公司和组,也也许可以从开源项目做起。

    希望下周:

    • 技术阅读和职业阅读要budget好时间。
    • 去改简历。

  • 周报 – 2022年10月第1周

    生活上

    本周:

    • 花了几个晚上研究这个月底的「韩国日本土耳其」之行,主要研究的课题是:
      • 日本的九州之行是选取福冈-长崎线还是福冈-别府线,抑或是福冈-长崎-别府三地都去。我还在推特上发了一个poll,大家的答案是别府温泉最好,但我最终决定选择长崎线,就因为长崎的历史(二战史、对外贸易与宗教史、中日交流史)和今年去过的好几个地方很契合(柏林、威尼斯、泉州)。
      • 还花了几个晚上研究在首尔的三天干什么。最后的结论是首尔是一个被我严重低估的城市——有各种各样好玩的tour,比如参加一日练习生,报名Kpop或者韩国传统舞蹈班、泡菜班、化妆班。我最后报名了两个Kpop班(因为有缺人被取消的可能)、一个传统舞蹈班还有一个学做泡菜的班。我在首尔也要过一个生日,稍微研究了一下要不要预定一个餐厅,后来因为Naver和CatchTable两个app对非韩国人太不友好而作罢。好在周日的时候,推特上的朋友冬天给我发来了一个首尔吃单,这样到时候总归可以找到好吃的。
      • 土耳其这周没来得及仔细研究,日本韩国的酒店也没来得及订,但日本内部的机票(长崎-东京)订好了。日本还想去住一晚上温泉酒店,下周看看吧。
    • 周日把9月的旅行延误险报销报上去了,好像总共也就花了一两个小时,比想象的轻松。
    • 周五去J-KURU日语角碰到一个美国小哥比我还会膜蛤(他会包括英中日的7门语言),感叹有趣的人还真是多。周日和朋友YQ吃晚饭,感叹我们这么多旅行导致今年在纽约待的时间好像就剩一个月不到了(她也要年底回国)。
    • 本周有两天晚上睡得比较晚,明显感觉第二天会有点头疼,另一个会导致影响一整天的头疼/视力模糊的因素是早上没吃或者没吃饱,这也是今年的新发现。同时今年发现自己现在已经能manage这种头疼而不太影响生产力了,但也提醒了自己睡饱和早上吃饱不要空腹太久对自己很重要。
    • 借着旅行安排这个话题可以再多说一点。我上周做了一次MBTI发现自己居然变成了ESFJ-A,在今年二三月的时候还是INFP,之前很多年也都是INFP,这是个意料之中的变化,虽然我自己并不太信MBTI的分析,但起码说明我回答那些题目有了非常大的变化。
      • 今年的很多次旅行,特别是9月欧洲的这一次很紧凑的意大利德国瑞典之旅,在做旅行计划的时候我意识到了是做不出完美的旅行计划的,特别是旅途中会出现各种突发状况(买不到票,排队比想象的长,突然关门,交通工具出状况等),所以一开始纠结去这个景点还是去那个景点,花太多时间纠结这些选择没多大意义——两个可能都是很好的选择,所以先选一个去,然后根据状况随机应变,把每天的时间利用率提高起来,最重要(另外休息好了也会大大提高第二天的时间利用率)。其实人生里很多别的选择也是这样,很多纠结的时候只能说明两个选择都是好选择,不存在唯一的最好选择,不如就选一个做起来,把时间利用率提高起来。Action now and iterate on it.
      • 做这样的选择也意味着放弃另一个选择更加果断。清楚知道自己鱼和熊掌不可兼得的时候放弃另一个选择不会有任何不舍。对很多事情也没有执念了——现在觉得人生没有什么必须要完成的事情,很多时候很多烦恼都是因为既想要这个又想要那个的执念带来的——自己在自己的评价体系里过的开心和有成就感就很满足了。
      • 除了做选择很果断了之外,今年也变得不care别人对我的看法了起来。这意味着我做选择的时候不太会畏惧因此导致的别人对我的看法。这需要自己对自己的评价体系是自洽的,对自己的评价不依赖于别人对自己的评价。这样反而能做出很多自信而且assertive的决定,也更能专心于和多做自己喜欢的事情。同时这居然让我变得更加更加外向了(E的变化),在社交和陌生人社交里更加活跃和approaching。
      • 似乎更能以第三者的视角看到自己的情绪。自己开心或者有点低落甚至是身体状态有点不佳的时候,自己能清晰地认识到,自己正在产生这样的情绪,自己为什么会产生这样的情绪,情绪对自己当下的在做的事情会不会有影响。情绪好像比较难影响到我自己在做的事情了,换句流行的话,自己不怎么会emo了。
      • 还有很多别的变化,这个周报就属于其中之一。对自己的计划和反馈落在了日/周这个区间。这也是减少了平日里很多「该做这个还是该做那个」的纠结,以及这种纠结带来的低效。就像旅行计划一样,自己的周计划做好之后就是可执行的了,这样在执行过程中自己的目标就非常明确,更加能专心于事情本身,就算有什么反馈也可以等到下次计划的时候再来考虑。

    下周计划:

    • 在周一周二把韩国日本的酒店订好,景点大致看好。
    • 周三周四之前把土耳其的行程和内部机票订好。
    • 周四晚上出发,好好享受这一次旅行。

    技术上

    本周:

    • 有点underbudget本周旅行计划会花的时间(当然旅行计划也更有紧迫性),本周技术上没有做什么事情。本来计划给简历 reserve 一个半天的也没有找到空,技术阅读也没有看(尽管安排了一个tech talk视频但没来得及看)。在旅行马上就要出发的情况下这也可以接受,以后要给旅行计划预留更多时间。
    • 这周在工作上碰到了一个很有意思的事情,我提出的一个refactor计划得到了很多同事的响应,但其中一个同事觉得这样不够,应该从top down来从头来过才能解决这些问题。我现在偏向于认为这样的top down的计划很容易虎头蛇尾而失去焦点,更重要的是这样的计划过于宏大,代价过高很不容易获得stakeholder的资源支持。我个人看法是不如着眼于最棘手的那几个问题,从几个中小型的问题scope来手术型解决这几个问题,这样代价比较可控,容易说服别人,更重要的是这样思考问题也不容易陷入顶层优化的怪圈——很多时候做top down的优化是要花超过自己想象很多的时间来思考的,比较不容易比较各种alternatives,也不容易迭代,更何况手术型的改进和以后top down的优化并不冲突——就算以后真的发现需要top down的改变不可了,那这中间的收益和从改进之后再改进的代价来算账都是划得来的。当然这件事情归根结底是对项目演进的哲学有所不同理解,解决这个问题的关键不是和同事争论哪个是真理,而是和同事们合作,商量在有限的资源的前提下(stakeholders的支持等),做出什么样的选择最符合大家中期的利益,和同事讨论中明白我们的共同目标是什么,这个过程会很有意思。

    下周计划:

    • 花点时间做旅行出发前最后的技术阅读(关于observability)。另外最近RecSys 22刚开完会,有空的话也可以过一下有没有值得读的文章,来归档一下。
    • 如果周四能挤出空来,花2h在简历上。

  • 周报 – 2022年9月第5周

    生活上

    本周:

    • 上周的感冒和疫苗恢复了之后,本周恢复了一三五的力量训练。但周二去做了个静脉抽血的lab test,但似乎扎的位置不是很好,我也没按好,再加上周三的二头训练,左手臂弯有点淤青。
    • 周二收到了瑞士申根签,只给了三个月,当时看了一眼感恩节机票总价大概$500出头的样子。
    • 周四的时候上周末和我在一起的某个同学说ta在周三COVID阳性了,发烧,不过我自从上周五打了疫苗恢复之后一直也没有症状。
    • 周五和朋友们一起吃了个台菜和甜品,886的台菜好像没有印象中好吃了,不过氛围感还是很不错的,塑料凳子很有台湾热炒店的感觉。
    • 周二的时候我用日语连着给日本纽约领事馆和外务省分别去函询问在10月11日之后旧有的日本签证能不能继续使用。领事馆很快回信说他们在等上级通知,同日外务省领事局外国人课给我回信说此事还没有决定但建议我等等看。周五的时候日本外务省终于宣布经过内阁会议讨论恢复以前的签证。周五这天我特别开心,这意味着终于能回日本看看了。
    • 周六便开始大刀阔斧地改旅行计划:
      • 十月本来是韩国7.5天+土耳其8天的联票,在日本开放之后,改成了韩国5天+日本4.5天+土耳其6天的联票,中间这一程ICN-IST改成两天后的HND-IST,需要补$200,另外单独购买PUS-FUK约$80,这增加的成本在本周日本宣布开放之后赴日机票涨3倍的背景下也还算不错了。这一次韩国砍成了首尔和釜山两个城市,考虑第一次去韩国本土还是留了5天时间。土耳其同样的也是第一次去而留了6天。日本的话因为九州玩儿几天都不够,就留4.5天剩下的留待下次吧。
      • 改完这个月的机票,看了一眼感恩节的欧洲机票,发现涨了$100不到,周日的票还卖完了只好周六回,于是顺手也订完了,行程是纽约-伦敦-里斯本-(火车)-波尔图-布鲁塞尔-(火车)-阿姆斯特丹-奥斯陆-纽约。总价$650多,也还不错。
    • 周六订完这么多机票(一共8张)之后,在italki上了半年多来第一次日语口语课,这次新的老师是在菲律宾当日语教师的新潟人,感觉也很聊得来,之后应该会坚持下去。
    • Build这本书读了又一章(目前快到第3章了),这周发现这本书中文版就已经出版了,好快。

    下周计划:

    • 确定日本和土耳其的内部行程。
    • 确定首尔和釜山的住处。
    周日阴冷的雨中在Prato Bakery吃了个早饭
    周一的时候跑去Madamn Vo吃了一碗Bún bò Huế,但没想到是旁边蘸鱼露的Bánh xèo (越南煎饼)更出彩。

    技术上

    本周:

    • 做了一次LC双周赛,还挺简单的,虽然最后一题需要用到平衡树(C++ STL的树类容器的distance()几乎都是线性时间的,不够用),于是抄了一个splay模版改一改,居然还能用。
    • 这周在旅行计划和工作上花费了比较多的精力,本周没有推进太多简历和技术阅读的项目,是有点可惜的。

    下周计划:

    • 刚好工作的需要,可以把SRE book和Honeycomb新出的Observability的书快速阅读一下有关可观察性的章节。目标是了解对一个中等规模团队项目,Observability意味着做什么,通常可以带来哪些价值。
    • 简历大概是真的需要reserve一个半天的时间来写完。

  • 周报 – 2022年9月第4周

    生活上

    本周:

    • 这一周是身体状况不太好的一周:
      • 上周末的重感冒一直持续到周三左右,虽然COVID一直阴性,本来应该后半周已经完全恢复过来了,周四的时候听到日本开关的消息,就约了周五早上的Pfizer bivalent COVID booster,周六下午便又开始低烧,到周日现在还没完全好透。
      • 于是周一三五的无氧健身也停了一周。希望下周能好起来。
    • 周二的时候寄签了瑞士签证,也花了一下午时间准备材料,主要是为了11月或者明年初可能的欧洲行作准备。
    • 本周的社交生活满点,周一到周五的每餐晚饭和周六一整天都有约:
      • 周一和刚从国内回来的SC吃饭,带来了最新的国内资讯。
      • 周二和YQ去想去很久的Izakaya Mew吃饭,我第一次去,有被牛肉和关东煮温暖到。帮她规划了经香港回国的路线。
      • 周三下班的时候同事们临时说要不要去寿司,我当然欣然同往,契机是从苏黎世来的SRE Alberto和从印第安纳来的Patrick这周都在纽约。COVID以来,好难得和七八个同事一起吃饭聊天,出乎意料的开心。
      • 周四和室友和好久没回纽约的BYV一起吃饭,又出现了驴友们一起畅聊去欧洲去中东去亚洲各种奇闻逸事的时候,再是老友相聚,特别开心。BYV今年生了个孩子,又跨国搬家,还升了职,真的为朋友开心。
      • 周五晚上和GQ在家附近catch up最近的工作生活。
      • 周六一整天和BYV在纽约逛博物馆。我们去了Asia Society的现代艺术展,和藏传佛教有关的Tibet House US和Rubin Museum,纽约最大的天主教堂Church of St. Francis Xavier的礼拜,上一周在斯京路过但没进去的Fotografiska摄影博物馆的纽约分馆。我们明显比较享受藏传佛教的那一部分,有BYV给我讲解各种佛教、印度教的历史知识以及梵语和佛教用语,应该是我能找到最好的导游了。晚上我因为疫苗开始有点难受,我们在逛Google Pier 57之后我就打车回来了。

    下周计划:

    • 如果休息好了就恢复锻炼吧,恢复饮食的控制。
    • 把感恩节的行程初步定好。
    • 韩国的行程初步细化,同时考虑日本的可能性。
    • 整理斯京机票取消的收据。
    • 接着看看 Build 这本书吧。

    技术上

    本周:

    • 本周比较反常,没有做太多技术上的事情,主要是因为本周的社交比重特别高,占据了所有业余时间,唯独的周日我也比较反常地加班(想早点wrap up一些事儿)。
    • 本周没有做LC周赛,也没有什么技术阅读时间。
    • 本周在工作上其实是觉察到组里有一些tech debt方面的工作一直没人认领,或者说大家都没意识和察觉到这方面的工作。我和几个人深度聊了聊,觉得做这些事情是有价值的。在我明确暂时不想在product方面投入太多研究的情况下(因为短期的可能跳槽等因素),我是想做一些有一些技术难度和复杂度的工作,当然可能更重要的是scope这些tech debt,选出ROI最高的几个子项目,以及做出一个初步design说服组里的人,这一整个过程我也挺想做的,毕竟上班时间也想充分利用,即便有点可能不是长久的工作了。
      • 当然做product等直接在roadmap上的事情可能更明显或者更容易说服一点,但目前短时间内不太想在product上花特别多的精力调研了嘛,刚好tech debt方面的工作可以直接用到自己的技术特长。
      • 同时发现平时养成一个好的和同事闲聊的习惯也挺重要,对于发现可能的tech debt改进之处挺重要的,自己一个人改代码只是碰到代码的一小部分,平时留意别人的抱怨和想法。然后自己有想法的时候也可以找到人聊天来validate自己的想法。
      • 如果要generalize上一点的话,那么平时和不同role的人,PM,sales,management chain上的人闲聊,然后不要吝啬或者忌讳找她们validate自己的想法,看看他们怎么看的视角,其实挺重要的。这个在 Build 这本书里 Tony Fadell 把这个比做一个扇形饼状图,我们只看到眼前几度夹角同时短距离的事情,management chain上的人可能看的是中距离甚至长距离的事情,而不同的role的人比如PM和sales看到的是扇形另外的一些切面的事情。要想看得长远一点 (look up),那看看旁边的视角 (look away) 是必须的。
      • 如果我希望在product上使劲儿的话,应该更加站在老板和director的角度思考。
    • 本周和BYV也有过几次不长不短的关于职业的闲谈。
      • 我的一个观察是,他能在非常多的事情里找到有意思的部分和有挑战的部分,这个和兴趣广泛和不把自己局限在一个事情里有关系,同时也没那么在乎脸皮。
      • 另一个观察是,他对这个公司是怎么运作的有比较深的认识,他知道director, VP的清晰职责和大致目标,这样做事的时候他会想 director 怎么看这件事(有时候他会直接问),会从他的角度理解公司做这件事有什么价值,这是很重要的一点,理解对公司有什么价值当然也先要大致了解公司是怎么运作的,怎么planning,怎么分配资源,怎么晋升。他同时也和 director 保持比较好的个人关系。
      • 再者,快速决定,果断,不要有太多留念,知道工作和生活上什么对自己更重要。

    下周打算:

    • 希望没有本周这么高密度的社交了。
    • 花时间在简历上。
    • 花时间在技术阅读上,从欧洲回来之后还没有恢复呢。

  • 周报 – 2022年9月第3周

    生活上

    本周:

    • 本来的计划是周一结束欧洲十天的行程,从斯德哥尔摩回来。还记得那天坐在 ARN 机场的登机口感叹这十天满满当当的行程终于走完了,再也不用担心一会儿要坐陌生的公交去赶哪一班车/飞机或者哪个景点的预约了。命运还是开了个玩笑,Delta 居然在登机口取消了飞机。错愕片刻,在确定能坐次日的补班回来的前提下,我比较淡定地走出机场(需要重新入境申根,因此我收获了一枚申根取消出境章),在斯德哥尔摩接着玩儿了半天,晚上在用航空延误险报销的本地餐厅大快朵颐和在五星级酒店里好好休息,周二才回到了纽约,回来的飞机比较空,平躺着回来的。
    • 周一周二在斯德哥尔摩一直在听 ABBA 的歌,周一的时候还路过了他们的博物馆,但没挤出时间来参观。第一次听 ABBA 是 The Martian (2015) 里用 Waterloo 作为背景音乐,但经过这次瑞典之行更加喜欢这个乐队了。听 Gimme! Gimme! Gimme! 的自己特别自信和快乐,走路都带风。
    • 大概周三的时候开始感觉鼻子有些不适,终于在周五周六发展成比较严重的感冒。我测了两次都还是 COVID 阴性,也许是这次十一天的行程太 intense 了,累得抵抗力下降了,得了普通感冒。不过这十一天的行程我是相当开心,该走的地方都走得差不多了,时间利用率很高,倒是不后悔这么累。如果是普通感冒的话这几天就好好多休息吧,适度做的事情少一点。
    • 周三上午和现在湾区但之前在纽约的DJ同学吃了个 brunch。他去年换组做 MLOps,但吐槽最多的还是湾区生活的无聊 lmao。
    • 周五周六晚上参加了两场日语角。周五的这场 J-KURU,疫情前我常去,这次是疫情后第一回,惊讶人数比预期多,自己好像也找人聊天更自然了。周六这场是 Discord 线上的,都是中国人聊的话题更亲近一些。这两天说日语的感觉还是挺开心的。
    • 周末在家附近发现了一家专做 Tuscany 面包的 Prato Bakery,环境挺好,面包的种类非常托斯卡纳,我点了个叫做 Siena 的 focaccia 三明治,里面放 prosciutto、cheese 和西红柿,和上周在 Firenze 的 Mercato Centrale 吃到的 prosciutto panini 一模一样,瞬间穿越回意大利托斯卡纳。在这家店坐着也很舒服,周末干活可以常来,本文就是在这里打完的。

    下周打算:

    • 好好休息,感冒早日康复。
    • 做一些之后的旅行 logistics,特别预先开始办英签和申根签,虽然这两个地方应该在明年才有机会再去,但护照的档期尽量充分利用。
    • 整理旅行的帐,整理延误报销的文件。
    在斯德哥尔摩有三百年历史的 Pelikan 吃驯鹿肉——很像牛排,但肉质比较粉,不如牛排筋道。
    家附近的很正宗的托斯卡纳面包店

    技术上

    本周:

    • 做了一场LC双周赛,不是特别理想,最后一题很有意思但没写出来。感冒对状态还是稍有影响的。
    • 终于又开始写简历了,但简历的进度比预想的慢一些。

    下周打算:

    • 接着在简历上花些时间。
    • 也接着再投一些简历。
    • RecSys 22 是这一周,可以把大纲过一遍。

    本周我还想好好记上一笔的是最近很多关于工作的思考:

    • 过去三年,我在Google Cloud的一个做安全产品的组。但纵览这三年,我真正享受这份工作的时刻其实比较少,对比起来在上一个产品反而更享受一些,所以也不能算是我对工作的期待太高。
    • 前两年我以为是因为这个项目的代码量太少了,这是安全项目都有的特征,代码量都不大,大量的时间是花在非代码的部分。起初我以为这是因为「写代码」这个本能能给自己带来快乐和享受的活动的份额变少了的结果。
    • 但最近有了很多新的感悟。上面的原因都是很表象的。真正的原因是这样的:1)这个项目的产品设计过程和工程系统设计过程都不是特别满足我的兴趣;2)在这个背景下,在这个项目里的成长路径也就不是那么诱人了。
    • 下面分别来谈谈这些问题。这是个很有意思的问题,认清自己喜欢什么不喜欢什么,以及认清楚不同的项目和工作能提供什么,对自己的职业生涯规划很重要。
    • 产品设计过程:
      • 绝大部份的软件工程师都是在商业公司工作。所做的项目也都是产品,而所有的产品都是有其目标 (goal) 和衡量成功的指标 (success metrics) 的。因为大家都是商业公司,所以最终这个衡量成功的指标都是能为股东创造多少利益,有直接和间接的差别。
        • 有些项目非常直接,比如直接面向用户的 feature 类项目(比如视频网站等),其 success metrics 一般都是日活用户 (DAU) 或者点击率 (CTR) 等比较容易量化的指标,这种指标对最终的 metrics ——股东利益的贡献也比较直观。
        • 有些项目不是那么直接,比如服务其他项目的 infrastructure 类项目(比如内部数据库等),其 success metrics 其实也比较容易衡量,比如这个数据库能支持的并发查询数 (QPS) 或者查询的延迟 (latency) 分布。需要注意的是这里的 success metrics 虽然比较直观,但是对最终的 metrics 股东利益的贡献并没有那么直观:比如这个产品如果以 QPS 作为 success metrics,那么它一定要能以某种方式转化成股东利益,它才是一个好的 success metric——比如 QPS 增长 unblock 用户数量增长,使得另外的产品的 DAU 增长,从而贡献股东利益。而当这样的 metric 不能看到一条比较清晰的贡献股东利益的路径时,它就不是一个好的 success metric,即使这个 metric 本身可能对这个系统(数据库)本身是一个有意义的指标。
        • 而有些项目就更加模糊了,大的公司一般会战略性地部署一些前瞻项目,这些项目没有短期内的盈利压力,但这些公司做这些项目一定是有其商业逻辑的。比如我所在的安全产品组就是这样的项目,我们没有短期的盈利指标和用户数指标,我们的目标是成为这个领域内关于安全的事实标准设立者。不在安全领域的例子也有,比如 Docker,其当初的目标就是成为部署领域的标准设立者。这种产品很难有明确的 success metrics——你如何在当下衡量你将来是不是标准设立者呢,虽然它们的 goal 很明确(成为标准设立者)。这也不一定是一件坏事,在这种项目工作比较像是在读 PhD 做科研,自由度比较高,不太容易被短视的 metrics 捆绑,但同时也比较难量化阶段性的成功。
        • 对于任何项目,没有清晰的 success metrics 或者 success metrics 看不到一条清晰的转化成股东利益的路径,注定会失败。首先如果 metrics 或者 goal 无法转化成股东利益,那这个项目的商业价值就是零甚至是负数,本就没有存在的道理。而要是没有清晰的 success metrics,即便对于那些 goal 能比较明确地转化为股东利益(比如行业领先地位带来的垄断效应)的项目,如果不能制定出清晰合理的 success metrics 或者说阶段性目标(即便不是量化的目标),那这个团队本身的激励机制就会出问题——你没有办法衡量一个人做的事情是不是对公司更有价值,更何况个人也很难从中找到成就感,而没有激励反馈和成就感的团队是难以为继的,所以对于这种项目,领导者能否设置清晰的 success metrics,以及领导者是否能让整个团队意识到什么样的事情对公司更有价值,是一个决定长期成败的关键。
      • 说了这么多产品本身对公司的价值,产品本身对工程师个人也可能有价值。这体现在工程师的个人兴趣是不是和这个产品的最终效果或者 problem space 相关。比如某人对语言学本来就非常感兴趣,那么做输入法这样的产品本身也能给她带来满足感,那这样这个项目对工程师个人也是有价值的。这里要注意的是,产品的商业价值(几乎总是由 success metrics 为指南针)决定了产品的走向,而个人兴趣带来的满足感是由这个产品的社会价值带来的,产品的商业价值并不总是和社会价值重合,如果要在这里找寻自我实现要思考这两个价值有多少重合的部分。
    • 工程设计过程:
      • 软件工程师创造的都是工程系统 (systems),而它们恰好能被公司拿来直接或者间接包装成产品来赚钱。拨开产品层面的问题,这个 systems 本身也很值得讨论,这其实是绝大部分软件工程师在大部分时间里直接打交道的部分:在确定了产品需求之后,她们需要设计一个系统来服务于这个产品。
      • 一个系统本身会有各种各样的 systems metrics,诸如 latency, throughput, correctness, scalability, maintainability 等等等等。但服务的产品不同,这些系统所强调的 systems metrics 也有不同。举个例子,某个搜索或者推荐系统的 latency 可能就比这个系统的其他的 metrics 更重要,因为 latency 可能更能影响用户满意度,直接影响商业上的 success metrics(从这里开始我把上文提到的 success metrics 称作 business metrics,以和这里的 systems metrics 作区分),从而影响股东利益。
      • 正是因为 business metrics 的影响,本来看来差不多的系统,在其设计实现维护的生命周期内其需要的技术技能完全不同的。比如同样处理用户数据的 pipelines,即便处理相同量的数据,latency-intensive 的 pipeline 和 correctness-intensive 的 pipeline 的设计实现,对于工程师来说是完全不一样的体验。(什么是correctness-intensive?比如安全功能就是,我们需要宁可错杀一百不可放过一个,或者更好,既不放过一个也不错杀一个。但我们对这个结果是一秒钟还是几秒钟出来不是很关心,而别的工程系统可能正相反。)
      • 工程师对于设计不同的系统是有偏好的。就像对程序语言,技术栈等等有偏好一样,在这里 systems metrics 也只是偏好的一个维度,但也是一个不容忽视我认为甚至比语言等更重要的偏好。
      • 我自己是特别关注系统的 performance,或者说我很喜欢解决也很擅长解决 how to make systems process more data 和 process data faster 这两个问题。安全产品这种 correctness-intensive 的系统是没法给我在这个维度上提供很多满足感的。
      • 但这里也有个误区,就是对于关注 performance 的人可能会认为自己只适合做 infrastructure 相关的项目,比如数据库等俗称的造轮子。其实不然,就像上面解释的,这些造轮子项目之所以吸引这些人,是因为这些轮子的 business metrics 很清晰地等同于它们的 systems metrics,而提高某些 systems metrics (比如 latency, throughput)刚好是这些人的偏好。
        • 当然这里实际上更复杂一些,有些人可能就是对数据库本身这个产品层面的 problem space 非常感兴趣。但要明白,像数据库也只是一种产品,也有一种可能你只是被解决的工程问题所吸引,如果是这样的话类似的工程问题其实也会出现在和轮子毫无关系的产品组——做抖音推荐视频的 pipeline 可能和某个做商业数据库的 ETL pipeline 都有非常类似的 latency 优化的工程问题需要解决。
        • 在这里实际上重要的是知道自己对什么样的工程问题感兴趣、更擅长,systems metrics 的偏好只是一个维度而已,但我认为是个很重要的维度。
    • 在项目里的成长路径:
      • 成长也是满足感的很重要的来源之一。成长可以是你自己关心的任何维度上的,责任与能力上的成长,智识与经验上的成长,甚至是金钱和地位上的成长。
      • 我的观点是,这个成长的维度一定要是自己所关心的,而不是外界所关心的。自己所关心带来的驱动力(内在动机)和为了满足外界期望和虚荣带来的驱动力(外在动机)的质量和持久力是天差地别。比如金钱很少是一个内在动机,人们大多数时候是为了满足外界期望而赚钱,但有时候它也可能是一个有足够持久力的内在动机——比如当你真的很缺钱很窘迫的时候那金钱驱动是足够持久的——当然我相信只有很少的人处于这种状态。
      • 回到实际的项目里,如果自己所关心的成长不是纯内向性的(比如单纯智识上的积累,当然这也是一种很好的成长),那么成长一般体现在对外部 impact 的增大上,这一般体现在:
        • 我能解决的问题的 scope 变大了(能力和责任的纵向成长)
        • 或者我能让更多人一起更高效地解决某个问题了(能力和责任的横向成长)
      • 在这里,能力的纵向成长很好理解,就是你解决的问题的难度和复杂度 (difficulty and complexity) 变大了。这也比较容易衡量。
      • 而能力的横向成长很多技术出身的人误解比较多,它同样是在解决问题,这个问题同样也有难度和复杂度,也很有可能很有意思。一个人单靠自己所能做的事情终究是有限的,就像系统里的单个节点所能做的也是有限的,所以我们创造了分布式系统,而团队和公司正是这样的分布式系统。而我们知道,一个本来很简单的计算在分布式系统里可能会变得非常复杂,最难的部分是不同节点之间的通讯和共识 (communication and consensus),这在团队里是同样的,有的人做事快有的人做事慢,有的人有不同的偏好,就像分布式系统里的节点一样。从这个角度看,能力的横向成长,即所谓的领导力 (leadership) 也可以是一个很有趣的问题,而既然是一个有趣的问题,那么自然也会有人有偏好去解决这样的问题。这么想,就不难理解在工程团队里为什么会有纯管理岗位的出现,以及为什么有人非常享受解决纯管理问题,她们对团队和公司带来的价值也就更清楚了(注:有读者反馈,怎么衡量管理者带来的价值是个难题。的确,虽然这个价值定义非常清楚,但是怎么去测量以及测量误差多少,是非常难的)。
      • 个体的成长可以是很多维度上的,你可能在这个项目里既获得了纵向的成长,也获得了横向的成长。回到本节一开始的话题,这里一定要有一部分成长是你真正所关心的(所谓内在动机),注意这里是一部分而不是所有。
      • 打个比方,你真正关心的是解决某个更大的技术问题 (difficulty),但在有限的时间内你自己是无法完成的,所以你只能直接地管理或者间接地在技术上领导一个团队来完成,所以对你的横向能力 (leadership) 也有成长的需要。但在这种情况下,你的纵向成长是你的目标,而横向成长只是达成目标的手段之一。
      • 要明确自己的目标是自己真正关心的部分。这需要对自己有更好的了解。比如我觉得自己是一个问题意识导向的人,会被这个问题的社会价值(social impact,在产品层面)和技术价值(technical difficulty,在系统层面)所吸引,我不排斥甚至非常欢迎对我横向能力 (leadership) 的提升,但这似乎只能作为一个手段,如果把它作为一个目的的话,我很难激励自己去带领一个团队去解决一个我自己不太关心的问题。当然这里只是我的个人情况,有很多人——我在职场上亲历过不少——能做到把 leadership 作为她的目的的,毕竟 leadership 所解决的问题也有它的迷人之处所在,所以你如果是这样的人,那么把目标设置为带领更大的团队是非常合适的,但据我观察这种人并不是大多数,很多人把目标设置为带领更大的团队是为了满足外在的期待和虚荣——这当然也可以,也在一定程度上是有效的,但我比较怀疑这个的持久性和其过程的享受程度。
      • 回到我的具体的项目里,在安全产品里我能看到的两个成长路径分别是:1)在产品层面解决更难的安全问题——这需要对安全有更深和更前瞻性的理解;2)或在系统层面设计交付更复杂的系统——而在安全模型 (threat model) 已经被前者确定的情况下交付这个系统的挑战在于要理解内部其他各种不同数据源的数据以及如何 provision 这些不同数据(获取,权限处理等),而当获得这些数据之后怎么处理这些数据是比较简单的。
        • 对于第1点,对某些人是很迷人的,我也觉得这个过程是很有趣的,但很不幸成为安全专家不是我的目标,我所获得的能力成长在离开安全领域之后不是 transferrable 的。
        • 对于第2点,它所解决的问题也不是一个我很享受的问题,它给我带来的能力成长是能对Google Cloud的各种不同系统的数据获取和权限有更全面的了解,这所隐含的能力成长有:a)能在短时间内理解不同的业务逻辑系统并统筹设计利用的能力,这是一个 transferrable skill。b)和大公司内不同的姊妹团队沟通并取得共识的能力,这是一个非常有用的 transferrable skill。c)带领更大的团队交付这个系统的能力,同样也是 transferrable 的。
        • 但就像上两点所分析的,这些 transferrable skill 并不是我特别关心的那一类问题,所以如果我把它们作为我的目标的话是很难持久下去的,虽然中短期内是会有效果和收获的,但不是长期的办法。
    • 总结一下的话。软件工程师对自己的成长需求,和对不同项目所能提供的成长路径有更好的理解的话,是能做出更好、更充实的职业规划的。首先要明确自己最关心的成长目标。
      • 如果这个目标真的是横向能力上的 (leadership) 那可以寻找相应的机会,比如一个快速成长且有很多管理问题亟待解决的团队。
      • 如果这个目标是纵向能力上的,那可以看自己关心的的问题和这个项目所要解决的问题是不是有部分重合,这里既可以是产品层面解决的问题的社会价值和个人所关心的社会价值重合,也可以是系统层面解决的问题和个人的技术兴趣重合,也可以是两者都有。
        • 而在产品层面,你自己关心的社会价值和这个产品的商业价值 business metrics 最好有某种程度的关联,否则自己努力的方向和这个商业项目的走向有不一致的风险。
        • 在系统层面,自己关心的技术问题也最好和这个系统被 business metrics 定义的 systems metrics 有关联,否则同样也有自己的技术兴趣和商业走向不一致的风险。
    • 最后我想说,记得当年刚入职场的去做一个Dart前端项目的时候,我的第一个经理对我说,做什么其实都一样。这句话现在回想起来,既对也不对。对的部分在于,不管做什么项目,前端也好后端也好研究也好,都是要给公司提供商业价值的,而公司也一定是根据你带来的商业价值大小来评价你。不对的部分在于,个体的差异性相当大,每个人所擅长和所喜欢的事情也都不太一样,而如上文分析的,项目本身的问题性质和所能提供的成长路径也都是不一样的,找到能发挥自己所擅长和喜欢的能力的项目,就能把能力发挥出最大效用。不过同样重要的是,这里「自己所擅长和喜欢的」并不是一个不变的常量,保持开放的心态 (keep an open mind)、成长心态 (growth mindset)、好奇心和问题意识,你几乎总是能在各种事情里找到有趣而待解决的问题,而这些问题适不适合你,只有勇于尝试才能揭晓,be a good risk taker。

  • 周报 – 2022年9月第2周

    生活上

    本周在罗马,锡耶纳,佛罗伦萨,威尼斯,柏林,以及周日晚上回到的斯德哥尔摩旅行即将结束,明天就回纽约了。

    • 旅行方式:总的来说这是很多个两日小旅行(锡耶纳和威尼斯只有一日)拼接出来的欧洲之旅,这也是时隔三年又一次采取这种旅行模式。现在反思,相比以前我也多次采用的飞去一个城市住好几天的旅行,这种模式的优缺点有:
      • 适合单个城市景点单薄(锡耶纳、威尼斯、柏林)或者某些城市注定是未来多次转机的城市(罗马)。
      • 但不太适合需要待几天好好体会节奏的城市。这种安排导致行程安排非常紧凑,一般是清早或者晚上赶路去下一个城市,为了省出白天的时间去景点,很多时候甚至连午饭都省去了就为了多看一眼博物馆。对意大利这种吃饭也是很重要的体验的地方就有点不好。
      • 同时因为清早或者晚上赶路,导致很容易睡不饱。这次除了早班飞机的两天没睡饱,剩下的六七天基本都睡饱了,柏林的最后这天甚至特意为了休息充电睡到了十点多。
      • 但这次也没耽误什么行程,基本上每一天都是八九点出门,九十点回来。但不得不说这样还是很累的……
    • 各个地方:这次在意大利待了六天六晚,柏林两天一晚,斯德哥尔摩一天两晚。
      • 意大利九月份很热,但是很好吃,以后应该还会常去(但可能不是夏天了)。中间在佛罗伦萨和同事Tom吃饭,他很推荐我去Parma吃吃喝喝,他也很同意意大利很热,他在北部有一次热晕到失去知觉。
        • 罗马应该还有一半的博物馆和古迹没有看完。
        • 锡耶纳是临时加上去的,是个非常中世纪的小镇,但也是个完全的旅游小镇,整个时代感和2019年去西班牙的塞哥维亚非常相似(当然建筑风格完全不同),但锡耶纳让我发现在意大利小城市吃东西真的是随便找一家都又便宜又正宗好吃,比罗马等大城市要好。
        • 佛罗伦萨果然名不虚传,非常漂亮但又现代的城市,这也是米开朗琪罗的城市。这次在佛罗伦萨的两天是本次旅行的高光部分,原因其一当然是这个城市的风景,其二则是这次住的Camplus Firenze酒店非常舒适,而且这个酒店有一半似乎是本地大学生研修住宿,在一楼餐厅吃饭有在意大利大学食堂的感觉,气氛很好。我最爱从圣母百花大教堂的400多阶钟楼看到的佛罗伦萨全景和从米开朗琪罗山上广场眺望整个老城的日落,端着酒杯伴着音乐,还有几对台湾新人专程来拍日落婚纱。佛罗伦萨的中央市场(Mercato Centrale)的牛角包(Lampredotto)、pasta也都很好吃。唯一的遗憾是佛罗伦萨的第二天我因为错过手机闹钟起晚了一个多小时,导致Uffizi Gallery的时间被缩短——不过也许下次再来意大利中部的时候我能更加看懂文艺复兴时期的宗教艺术了吧。
        • 威尼斯本次被缩短到一天,另外一天被前面锡耶纳挪走了,因此也没有上去任何博物馆和教堂。这个城市非常漂亮——从各方面都和西塘很像,满城的水的气味,等着做游客生意的小贩。在这里和大学同学lxx和xj吃了好几餐饭。有意思的是这应该是我第一次见到地中海,最后我还坐着海上客船直接去的机场。另外在刚到威尼斯的时候和BnB的host有一点沟通的小误会,导致我等了一俩小时,但房东大爷是个很可爱很认真的威尼斯本地人,一家子做的早饭也很好吃。
      • 柏林的一天半主轴是20世纪的历史,大屠杀纪念馆,柏林墙和Checkpoint Charlie,东区画廊,和国会大厦。柏林的确感觉很前卫,很像蒙特利尔。最后在国会大厦穹顶的有声导览超出了我的预期,是比较详细的柏林各个区主要建筑简介。最后只吃到了德国香肠和酸菜,猪肘子就留到下次吧。在Checkpoint Charlie买到了两块柏林墙碎片。
      • 斯德哥尔摩则是来回都太匆忙,只非常快速地逛了皇宫、沉船博物馆还有一些地铁车站的organic architecture,不过能碰到高中同学zx一起吃饭真的是非常非常开心。
    • 一些想法:
      • 这次的时间利用率比较高,特别是比起5年前的巴黎一周,但也比较累。是属于“玩”,而不属于“休息”的旅行,也和这次的初衷一致,但有时候也真的需要纯“休息”的旅行。
      • 本次的行程安排基本上是到达前一两天或者刚到之后才做的,其实也就是把Lonely Planet的推荐行程作为蓝本,把上面提到的景点全部标记下来,在手机地图上随机应变。但在好几个地方都被需要预约的景点给打乱安排。以后出行可以适当在出门前一两周或者订酒店的时候顺便把LP的推荐景点的预约网站给过一遍,按照实际情况来看过一遍花不了一个小时。

    下周计划休整一两天之后迅速回归正常工作生活。

    Firenze, 7 Sept 2022

    技术上

    本周啥事儿也没干😊。

    下周要加快简历的速度了,离下一次旅行也不远了…


  • 周报 – 2022年9月第1周

    生活上

    • 这周五晚上飞了斯德哥尔摩,开始了为期十天的欧洲之行。
    • 周五的时候还敲定了10月去首尔和伊斯坦布尔的行程,在两个城市各待7天。票已经买好了。去韩国的旅行是我今年最期待的旅行。
    • 落地斯德哥尔摩的时候好久没有的旅行兴奋感又回来了,上一次有这种感觉还是去年6月落地檀香山。
    • 在飞来欧洲的飞机上碰巧刷到base伦敦的高中同学zx也在斯京的动态,和她神奇地在斯京有且仅有一天重合,于是一起逛吃逛吃。给我推荐了好多下周去意大利的景点。
    • 周六周日连着两天红眼和早班飞机,周日落地罗马之后明显有些撑不住了。发现有些博物馆和景点今明两天已经被订光了,看来意大利的景点的确和别处不一样。接下来一周的行程也要尽早订票才行。
    斯德哥尔摩标志性的地铁站装潢
    罗马一瞥
    在意大利吃个pasta

    接下来的一周准备:

    • 在罗马、佛罗伦萨及周边、威尼斯以及柏林好好玩。
    • 旅行的每天保持充足的睡眠。

    技术上

    • 接着上周读完了《SRE》和《Streaming Systems》的第一章。
    • 周三晚上去Rust NYC Meetup听Pinecone.io的人讲他们把vector database用Rust重写一遍的经验。和同事不约而同地去了这一场。
      • 他们onboard C++程序员到流利地写Rust只花了一个月,这比我在别的大公司看到的速度要快。当然他们一共只有十来个人。
      • Rust的工程经验我没有,所以对很多提问也就只当听听,他们对于unsafe的观点是有时候用unsafe是个又快又整洁的方案,比起purely safe。
      • Rust NYC社区比我想象中活跃,每个月都有活动。
      • 和Pinecone的主讲人互相留了联系方式,对他们感兴趣是因为他们在做ML system和Rust。据他说他总是能被客户公司用vector database的用法刷新三观,感觉做某些领域的infra小公司如果在轨道上的话是很能了解这个领域大的应用前景的。
    • 周五开始在欧洲旅行,没有做任何周赛和读技术读物。

    接下来的一周准备:

    • 不做什么安排。最多在旅行回酒店休息的空档改一改简历,找朋友和被介绍的人聊聊天。

  • 周报 – 2022年8月第4周

    生活上

    本周的计划完成度比上周好多了。解决了好几个躺在待办事项里的老问题:

    • 12月回中国的旅程
      • 周一把12月回中国的备选方案香港路线的两程机票都给订好了,HKG-CTU这一程大概在HKD 3500左右,比六月份刚开始关注这个机票的时候贵了小几百块钱,不过等到了现在也能按照港府新的3天隔离方案来订票了,也算不亏吧。JFK-HKG这一程是用UA出的fully refundable的NH的票,大约USD 1200,就算不能退也算是很不错的圣诞季节票价了。香港路线里还剩隔离酒店没有订,打算再过两个礼拜看看风声,看看港府是不是会取消检疫,不过如果港府公布了包含圣诞季的第九版隔离酒店名单那就要赶紧挑一个便宜的订了。
      • 把另一个温哥华方案的EWR-YVR这一程给订好了,提前4晚到温哥华,给核酸留够了时间,酒店就之后再订吧。
    • 9月初的欧洲行
      • 周日花了两三个小时照着Lonely Planet把9月整个欧洲行的酒店给订好了。
    • 改进家中的Internet
      • 家中的Verizon Fios经常会遭遇到莫名的限速,不打算和运营商争吵了,周四的时候去T-Mobile店里办了个5G Home Internet,当晚就把热点拿回来了,现在下行速度稳定在 ~200Mbps 单/多线程,虽然上行速度就只有 ~15Mbps 了,也很够我用了。

    这周完全没有出去看电影啊啥的,因为下周末就要出去玩儿了,不管是工作上还是生活上都有不少事情想要在出门之前做完。但是还是出去和朋友吃了四餐饭,都很开心。

    • 周三和室友在家附近吃了个墨西哥菜,是一家很有家庭餐馆感觉的taqueria,我特别喜欢喝他们家的tamarind water,是一种用酸豆(tamarind)做成的热带饮品,酸甜口,味道似没有加工过的山楂。家庭餐馆的氛围也很好,在家附近的话就算不太饿也可以过来吃个tacos或者喝杯饮料。
    • 周六的时候和室友打算去吃上周吃过的泰国小馆子,没想到扑了个空,这周关门,于是转战Newark Ave主街上的另一家泰国馆子,味道也很不错,这拌饭用的辣咖喱汤要是用作下粉面的汤底恐怕更好吧!Newark Ave上在办LGBTQ市集,走出来很自然而然就带入到这些人的活在当下的心情里了。
    • 周五中午和来纽约的LXX吃午饭,一起聊了很多大学八卦,而且意外发现他下周也会要去意大利,应该还能在威尼斯再碰上。
    • 周五晚上和朋友们在四四南村吃了一碗长达四个小时的牛肉饭,当然主要都是聊天啦。认识了个就住在那附近的新朋友Juju,听他们聊买投资房啊现金流啊以租养房啊我是叹为观止。
    tacos de carne asada

    接下来的一周里打算:

    • 好好读读LP和游记,把欧洲那些地方大概想去的点给定下来。周五晚上就要出发了,疫情三年没有跨洲的大的旅行了,好好玩。
    • 可以把10月的韩国机票订了。
    • 好好玩,但也可以挑一本书在出门的时候好好读,刘思慕最近的自传听说很不错,有声书还是他自己朗读的,很适合出门。

    技术上

    本周:

    • 没有专门看某一本技术书,挑了《Streaming Systems》和《Site Reliability Engineering》这两本Google自己出的书打算并行着读,而且应该也会跳过熟悉或者不太感兴趣的章节。这两本书我想读得更有问题意识一点,很多时候我们知道某些技术实践是好的,是有效的,但是为什么会这些技术实践会出现,他们解决了什么样的非技术的问题,也同样很有意思。Software architecture是一个技术问题的同时也是一个商业问题,毕竟绝大多数软件工程师都是给盈利机构工作的。
    • 读了几篇paper,blog post,或者tech talk。
      • How To Evaluate MLOps Tools: 这里关于很多人选择tools的动机——很有可能是崇拜权威或者单单是宗教原因(like editor wars)的讨论很有意思。太过于热衷于某一种tools某种程度上是会限制我们的思考方式,而且还有别的坏处。Try new tools often, if you don’t have the time, at least keep an open mind.
      • Towards Observability for Machine Learning Pipelines: 在MLOps的Discord里看到的一个event,是一个ongoing的研究成果的很简短的综述,paper已经出来了,没读。有可能有意思的点是关于ML system的SLO应该是什么的思考,这里牵扯到很多ML项目中feedback周期太长或者根本没有有效feedback的问题。
      • Hidden Technical Debt in Machine Learning Systems: Google在2015年的一篇文章,把传统软件开发的tech debt问题一一在ML系统上分析了一遍,对于每个问题ML系统都应该是有过之无不及的。两个亮点:一是关于ML系统至少有95%是glue code(传统软件)的论断,二是指出hidden feedback loop在(当时的)学界还不怎么受重视。
      • Full Cycle Developers at Netflix — Operate What You Build: Netflix在2018年的技术博客,讲了从2012年以来他们转向devops (full cycle developer) 的实践,基本和Google SRE的内核思想是相似的。值得观察的点是这些公司都是在成长到什么阶段的时候开始觉得,抽出一些人做ops的infrastructure比直接堆人做ops要更划算的。毕竟把ops自动化需要的人头开销和traffic的增长比是sublinear的,而直接堆ops的人是linear的。Netflix在2012年大概是2000名员工,Google在搭建SRE的2004年左右应该也是这个数量级。
    • 做了一场LC周赛,也算是无事地做完了吧。
    • 这周和一些朋友聊了一些中长期,特别是长期的职业目标。以前很少有很明确的长期目标,最近多多少少是更加知道自己想要什么了。多做自己喜欢的事情,做决定也要更干脆果断。

    接下来的一周打算:

    • 改简历、投简历。
    • 接着在上面两本技术书里找自己感兴趣的章节读。
    • OSS啊和社群里的别人聊天啊就不做太多安排了,毕竟要去欧洲玩啦。回来再说吧。

  • 周报 – 2022年8月第3周

    生活上

    本周是比较修罗场的一周。原定的周计划完成度大概在40%左右,原因大概有二,一来有几个既定计划之外的朋友邀约占据了两三个晚上,二来是周二吃太辣整个人都不舒服了两三天,还导致跳过了周三早上的器械训练。

    本周:

    • 和四个朋友分别吃了午饭/晚饭,还去另一个朋友家参加了一个housewarming party。
      • 其中Jimmy来纽约,和他去逛了逛MOMA才发现自己已经好几年没去过了。
      • 其中还有一个朋友准备从加州搬来纽约,老朋友十年没见面还是挺开心的。
      • 本来已经戒酒了的我有两个晚上难得喝了酒,以后还是少喝啦。
    • 周三下午还去Bryant Park参加了一个新的日语meetup。自从疫情以来这是我第一次当面参加日语meetup。听力这几年着实进步不少,说其实也不是大问题,只是好像我就很少在很多生人前说话(不论语言),也许以后可以试试主导一些话题。这个meetup的新朋友都挺友善的,一般是在周六,如果赶得上的话可以多参加。
    • 周四深夜还远程dial in了国内一个发小的婚礼。虽然错过了见到很多长辈和同辈的机会,不过好歹算是远程见证了吧。

    可以看得出来这周是社交有点快要透支的一周… 虽然这个量自己还是能够handle得了,但是占用的时间的确导致本周计划有点修罗场(生活上和技术上都是)。不过周计划都是stretch goals嘛,没做完也完全没有压力,毕竟这周回顾的时候发现自己还是干了这么多事情…

    这周在家附近发现了一家很不错的泰国小馆子,女老板一个人后台前台,做的绿咖喱也很好吃,有一股奶香。

    有好吃的就是开心。

    接下来的一周打算:

    • 稍微减少一丢丢社交占用的时间。
    • 接下来旅行计划要有些进展。

    技术上

    本周:

    • 看完了《Designing Machine Learning Systems》的第11章,也是全书最后一章。
      • 这本书从2022年7月5日开始读,花了一个半月,比预期慢一些,这本书前面ML algorithm和stats比较多的几章的确是肉眼可见地变慢了,但好歹没有太多完全读不懂的地方。
      • 本书的主旨似乎就是说服大家ML不光是一个data问题,也同样是一个很难的infra问题。Enlighten了我“哦原来ML里面不止那些算法还有这么多别的有意思的问题亟待解决”。
      • 我是把这本书当作我了解ML整个领域的综述来读的,没有太多ML算法背景知识也能很好的读完而对每个步骤有个比较清晰的认识。
      • 我特别享受第1章作者关于说服business leader和stakeholder的思路,这一章完全可以拓展到非ML的其他工程领域。其他的章节我比较喜欢第7-10章关于ML里有哪些infra问题以及解决这些问题的动机的描述。
      • 此外作者Chip Huyen是一个非常有意思非常inspiring的一个人,很会写作也很会evangelize。不光是ML,从她的个人经历和职业经历我也有很多收获和启发。
    • 做了一场LC双周赛,周六顶着有一点点宿醉做的,做得还不错。
    • 周日把本周另一场LC周赛的最后一题拿来看了看,因为据说昨晚很少人过,很有意思的一道题,我一开始以为O(k2 log k)的写法可以过,不过最后发现他们其实要O(k log k),最后的取法也很巧妙,算是我这么多年来第一次用到最大堆这个数据结构,如果真的是在比赛里大概这道题做不出来,今天前前后后在这道题上花了两三个小时。
    • xiaojun.hu 这个网站搭起来了,以后会用英文多写一些和技术有关的东西。也想多去社区认识认识人。当然总的来说不管是不是技术都可以多写多分享。
    • OSS code方面,花了不多的时间把上周开的MLflow的PR回复了两轮,在等review。

    接下来的一周打算:

    • 可以把简历改改投投了。
    • 和朋友介绍的做MLOps的公司聊聊天。
    • 再接着把最近收集的关于MLOps的paper, talks, posts给triage一下,挑一下,看个一两篇。
    • 这周没来得及写的polars的OSS code可以接着写下去。

  • 周报 – 2022年8月第2周

    生活上

    本周花了一些时间在旅行计划上。准备了韩国签证的材料,周二去签了韩国签证,在这种特殊时期韩国签证简直是一股清流,能很轻松地约到次日的预约、能去领馆面签、给长达5年的签证、最后的签证也是PDF签发从而不需占用任何护照的档期。与此同时本周(准确的说是周日今天)也终于把9月初在欧洲内部的机票给订好了,此行计划一共去斯德哥尔摩、罗马、佛洛伦萨、威尼斯、柏林共5个城市,其中意大利境内应该是火车运转,所以还有机会带上别的小城镇。接下来的9、10月旅行会比较密,也是希望趁着工作节奏(甚至工作本身)转换的档口,多出去玩玩吧。

    本周本来还计划吃一个新国家的餐馆写博客,也还计划抽空和家里人一起看一部Netflix电影,都没有抽出时间来。不过在这周的尾巴周日晚上,临时和回纽约两天的Cee吃了一餐据他说北美最好吃的鳗鱼饭,果然还挺好吃的。鳗鱼蒲烧之后蘸的酱非常薄,不似别家鳗鱼饭浸在红糖酱油里的感觉,于是还能吃到鳗鱼烤过之后的焦脆劲儿,当然薄酱的坏处当然就是用来拌饭不够了。Cee这两三年在加州过得挺开心,有车有房子有室友的生活对于自己总是能找到乐子的人来说的确很理想呀。

    周五晚上在Japan Society看了是枝裕和的ワンダフルライフ(1998)。这部电影很像纪录片,从这里可以看到是枝裕和后来的电影叙事模式的一些底子,本身很有创意——天国的工作人员让死去的人们挑一个生前最喜欢的瞬间拍成电影,剧中各式各样年龄性别的人反映出了很不同的人生观。说到人生观,周三参加Chelsea组织的《人生设计课》读书会也讨论了工作观和人生观,意外地发现自己现在的工作和人生观比前几年要坚定和自洽很多,少了很多迎合他人期望的部分,多了很多为了自己的部分。人生真就是场得道的修行,还是要乐在其中呀。周五看完电影出来吃了一家新的焼き鳥屋,难得的惬意,也许以后每周五晚都可以定为居酒屋之夜。

    接下来的一周要和两个从外地来的朋友吃饭,也要花点时间在9、10月的旅行计划上。得让自己挑一家乌克兰馆子好好吃一次写一篇博客了。

    技术上

    本周:

    • 看完了Designing Machine Learning Systems的第9、10章,这本书也快看完了,我看到这里其实对ML system的前前后后有了比较初步的了解了,详细的书评还是等下周看完这本书了再写。这两章里值得记一笔的是最近一两年ML platform的出现,这似乎又是一个在「大家都知道我需要但是大家都不知道精确的功能需求」阶段的东西,很有意思,Chip本人也在创业做这个。
    • 为了更好的了解ML platform,这周我花了点时间看MLflow的文档,还给他们交了一个PR(而我本来本周的计划是给另一个Rust项目Polars修bug)。目标是接下来的一段时间可以和这个社区里的人打一些交道,从而看看这些人是怎么理解ML platform的。
    • 做了一次LC周赛,也还比较顺利。

    接下来的一周会把Chip的这本书读完,快速翻过一些SRE向的讲MLOps的材料,以及会和之前被牵线的一些做MLOps的startup的朋友聊聊天。OSS的工作应该也会接着做下去。随着对这个领域有了个初步的把握,改简历和投简历也可以提上日程了。