• 团队OKR制订会经验分享

    这周最重要的工作是Lead团队做明年的Planning。今天早上组织了团队的OKR制订会。公司最近开始推行使用OKR来做项目计划,我也是最近才开始接触到OKR方法。这里分享一下我组织OKR制订会的经验。

    关于OKR

    OKR是目标(Objectives)和关键结果(Key Results)的缩写,最早流行于Intel和Google公司,现在很多大厂也开始使用这种目标管理方法。OKR可以有效的帮助组织上下齐心协力地实现企业的目标和战略思想。

    一般OKR会由公司的高层先定义最高级别的目标和关键结果,然后依次向下,每一个组织根据上一层组织的目标关键结果继续细分,直到落实到个人。制定团队级别的OKR要相对容易,因为已经有了上一级的O和KR,只需要根据团队实际情况和客户需求细分归纳出团队的O和KR即可。

    会前准备

    • 提前收集上一层组织的目标和关键结果。这次时间比较紧,上周五大组的目标才下来。
    • 提前一周让负责客户项目的组员去联系客户,收集一下现阶段的痛点和下一阶段的新需求或发展方向。有机会的话,最好还可以讨论一下关键Metrics和可能的项目。
    • 提前组织一个专注于关队创新的头脑风暴会议。这次我时间比较紧,准备了一个共享文档,让组员直接添加Idea然后offline sync。

    OKR制订会

    • 开始先强调一下会议的目的,争取在会议时间内制定出团队的目标(O),KR之后可以分算下去,让大家来再添。这样有助于避免,大家过度发散,完不成目标的制定。
    • 带领团队过一遍上一级组织的目标关键结果,看看大家有什么问题。争取让大家先达成共识,这样有助于一会儿团队目标的优先排序的讨论。
    • 让每一位客户负责人讲一下现有客户的需求和痛点,并把它们对应到上一级组织的目标。
    • 基于之前头脑风暴的讨论,把大家选出的好的idea归纳一下,也对应到上一级组织的目标。
    • 进一步收敛目标。这时每个上一级组织的大目标下应该对应了很多小目标(i.e. 之前添加的客户需求和团队想法),争取把它们合并归纳成为初步的团队目标。

    再下一步是让大家针对初步团队目标讨论重要性,并按优先级排序,最终提炼到4-5个目标。可惜这次会议发散的时间没控制好,这一步没有完成,只能会后组织大家Offline Sync。我打算明天先过一遍初步的团队目标,优化一下,然后发给队员,让他们来rate一下重要性,我再根据结果排序汇总成一个最终版。

    心得

    这次组织OKR制订会我有两点心得。第一,会议前的头脑风暴会是我自己加的,原因是我担心大家在制定计划时过于聚焦在当下的目标,而没有充足的时间来思考一些创新的想法和项目。这样把创新环节提前处理,可以帮助大家在保留发散思维的同时聚焦在组织的核心目标上。

    第二,团队在收敛排序目标时,应鼓励大家以公司或至少上一层组织的角度出发,来思考团队目标的优先级和重要性,而不是基于团队自身的利益。这样可以最大化发挥OKR的作用,更有效的统一公司上下的战略目标传递,从而确保团队明年的工作可以直接贡献到公司的使命与愿景。

  • 关于学习画画

    这周开始和女儿做第二个游戏项目,我打算和她一起做一个简单的记账APP。因为我觉得上次做的游戏有点复杂,这次想从比较简单的APP开始,并更注重练习编程。另一方面,最近打算开始让小布丁自己支配零花钱,正好她可以用来记账。

    可惜做了快一周了,进展却不是很顺利。其中一个原因是她觉着2D界面有点无聊,不怎么上心。这让我意识到,她之前很喜欢第一个游戏的主要原因是由于游戏的设计很好看。如果想让她继续对做游戏感兴趣,我就需要加强下一项目中的美术设计元素。

    不过我基本上没什么美工背景。为此这周我在网上订了几个辅助游戏设计的画画课程,打算练习一下。今天和小布丁一起看了一节课,还挺好玩的。其中一个环节是让你在一分钟内画10把剑,来锻炼速写和想象力。这是我和小布丁的练习作业。

    借着学画画的机会,我又入手了个新玩具😏,电子画板。七八年前我玩过一段 Wacom Intuos Pro画板,不过那时的画板还没有屏幕,需要抬着头画很麻烦。现在有支持屏幕的画板就方便多了。记得当年还是Wacom一统天下的时候,没想到现在已经有两三家厂商可以和它比肩了。这次买了个国产画板(绘王 16‘ 2.5k)先练练手,要是能坚持下来,到时在换个好的。

    最后在附上一张小布丁今天画的画,她起的名字是“会飞的长颈鹿”。

  • 周末去吃韩国烤肉

    好久没有吃烤肉了,周末中午去了一家韩国餐馆吃烤五花肉。这家餐厅(Hanrue Kensington)就在小布丁芭蕾舞学校旁边,环境布置的很KPOP。

    这里的特点是五花肉的部位非常好,肉片切的稍微偏厚一点,吃起来更有感觉。肉片表面还改过刀,烧烤时不会卷起变形,很方便。刚烤出来的五花肉外焦里嫩,小布丁超级喜欢吃,一个劲儿的让我给她加肉。

    我觉得烤五花肉超级简单,只需等烤盘温度升高,把肉往上一放,听到“呲呲“的声音就行了。把双面考到焦脆金黄色后,再拿剪刀剪成大块,翻转几次,烤到焦香出油就好了。整个过程应该是零失败率,因为肉片比较厚,而且充满油脂,基本上不会烤的过干或烤糊。再加上出锅前要把肉片剪块,所以也不用担心没有烤熟。

    比起其他几种烧烤,烤五花肉简直就是享受。不用像烤羊肉串时,一直在烤架上翻转肉串,生怕时间长了就烤糊了。也不像煎牛排,需要很好的控制时间达成相应成熟度。更不用像BBQ烤肉,盖着盖子跟本不知道里边肉烤的怎么样了。(现在烤牛排和BBQ我已经改用MEATER了,比较好控制一点。)

    一个好玩的小插曲。小布丁之前吃饭时一直使儿童筷子。筷子的上端连在一起,下方还有指环固定手指,很方便。这次她尝试挑战了一下超高难度模式,使用韩国筷子吃乌冬。韩国筷子比较沉,而且形状很扁,不是很好握,但经过很多次尝试后,她还是挑战成功了🎉!

  • 马斯克的提高工作效率建议

    上周四马斯克给Twitter员工发过“奋斗者协议”邮件后,据说还是有一部份人没有签,不知道他们是不是已经被开除了。后续上周五,马斯克在Twitter上就开始发自己和一群员工凌晨1点挑灯夜战的图片了😓。

    虽然马斯克管理缺乏人情味,但的确很善于打造高效的团队。以下是最近传出的他给Twitter员工制定的提高工作效率的六条建议 (之前也在特斯拉和SpaceX推广过)。

    1) Avoid large meetings

    这条建议是不要召开人数过多的大会。 很同意,大会的效率很难保证。一方面不是所有人都对会议的主题都感兴趣,愿意参与到讨论中。另一方面人多时发言人可能会有所顾忌,不一定会直接讲出最真实的想法。

    感觉一般除了少数的公司或Org的Townhall, Q&A 会议,或大组的项目planning或retrospective会议的人会多一点,一般会议应该尽量控制在6到8人(这是按照25分钟的会,每人分配3-4分钟发言时间来确定的)。

    2) Leave a meeting if you’re not contributing

    这条建议你不要去参加你贡献不了的会。这个建议我赞同一半。如果是想了解一下其他项目的进度或跟项目上的人加强联系,的确没必要去开会。第一种可以通过查看会议的摘要或者直接去找项目负责人1:1开会更有效率。第二种不如直接约个饭或去酒吧,可以更快了解同事增强联系。

    不赞同的原因是新人需要参加不同的会议来学习。比如初级工程师想了解如何做Planning,Drive项目,Lead会议,做Trade Off决定等,这些技能往往在不同的会议中都可以直观的从其他人的行为或大家的讨论中学到。而会后看会议摘要的学习效果就不是很好了。

    顺便说一句,我非常喜欢他说的这句话:It’s not rude to leave a meeting. But it’s rude to waste people’s time.

    3) Forget the chain of command

    这条建议是有事情需要讨论直接去找第一负责人,不要绕一圈通过你的Manager,找到对方的Manager, 再找到个人。这条应该算是常识了,因为大厂的Manager往往是来Support工程师的,一般问题工程师间都会直接进行沟通,除非到了“老死不相往来”的地步。

    4) Be clear, not clever

    这条建议给出的例子是开会时少使用比较晦涩或太专业的用语。我自己就有这个问题,平时开会经常会使用一些很熟的Acronym。开会前,应该在脑中过一下与会者的名单,看看如果有其他部门的同事就使用比较宽泛或通俗的概念。

    5) Ditch frequent meetings

    这条建议是把每周定期的会议取消。马斯克建议把应该会议专注与用来合作解决问题上,这点也很同意。的确一些每周定期的项目会议,时常没有什么大的更新,这时应该提前取消或者采用offline sync。

    但另一方面,我觉着工程师之间应该保留定期的1:1周会。大家可以通过这个机会来多了解一些你的同事,他们在做什么、想什么、有没有什么需要帮助的、也可以获取一些关于自己的反馈,看看有什么自己可以做的更好的地方。这样会使team成员间关系更紧密,彼此更加信任对方,从而更有效率的提高协作效率。

    6) Use common sense

    最后一条建议是不要闭着眼睛去服从公司的规矩。要了解制定规矩的原因,根据实际情况去判断。这个也应该算是常识了。

    这六条建议基本偏向如何提高工作中的会议、协作、沟通交流效率,还都挺实用的。

  • 周末复盘:Work Life Balance + 写博客

    今年冬天来的很晚,这周出门时才开始真正感受到英国的冬天。早上起床开始不想离开温暖的被窝儿,走在路上时常会被一阵寒风吹的瑟瑟发抖。这周回到了繁忙的工作生活模式,一上来还真有点不适应。好在只要再坚持三个星期就又可以放假了,还是很有盼头的🎄!

    Work life balance

    上班后一忙起来基本没有什么时间管家里的事。早上8点出门,一般晚上到家都快7点半了,吃完饭后没什么时间来陪伴家人。之前尝试过每天早回家30分钟,但发现晚饭前时间利用率不是很高,小布丁基本上都在看电视,一晃就过去了。

    改进:改进:尝试把一周的工作在周一到周四忙完,必要时可以加一下班。周五尽量在家工作,且不安排项目会议。争取周五上午把这周的工作收一下尾,中午可以和小丸子一起吃个饭,下午可以处理一些家里的事,接小布丁下钢琴课,然后一起去咖啡厅坐坐或者去公园的Playground玩一会儿。感觉这样把空余时间集中起来可以更好的陪伴家人。

    关于写博客

    这周又开始写博客了。这应该是近10年来的第6次开始写博客(数了一下,之前的五次是Tumblr,博客大巴,自己host的Wordpress,豆瓣,DayOne),可惜每次都因为各种原因没能坚持下来😓 。

    这次开始写东西的初衷还是缓解焦虑,记得当时快上班了,睡不着觉,不想练钢琴,又觉得玩游戏太浪费时间。最后通过写些东西来减少无意义的大脑空转,尝试将无序的思路转化成有条理的文字。没想到一转眼居然已经坚持了一周了!下一步先立一个小的Flag,争取可以坚持一个月。

    • 坚持,把写作当作一种生活习惯。
    • 不要太刻意的管理内容,写就比不写好。
    • 严格控制时间,每天分配最多三十分钟。
    • 除了写些生活随笔,还可以写一些学习、读书笔记,作为一个学习输出的闭环。

    由于这周花了额外的时间来写博客,没怎么练习钢琴。这点还是小布丁做的不错,上周我定的龙猫的钢琴琴谱到了,今天早上起来她就自己在练习了。

  • 第一次教女儿学编程做游戏

    第一次教女儿学编程做游戏

    我在这次长假中完成了一个长久以来的梦想,就是和女儿一起开发一个小游戏。我希望通过做游戏来帮助她开始学习编程并锻炼解决问题的能力。

    这是女儿第一次接触编程,我希望她可以体验到一个小项目的完整开发流程。这次我没有选择小朋友编程启蒙时常用的Scratch语言,因为我希望女儿可以一开始就接触比较专业的工具。我自己试了一下Unity和Unreal游戏引擎,最终决定用Unity作为开发工具(我感觉Unreal对小朋友相对更难上手一点)。

    第一天来做项目计划。我先和女儿来了一场头脑风暴,让她想象做一个什么样的游戏。可能是由于我和她在一起学钢琴,她说要做一个控制大象来弹钢琴的游戏(是的,这就是博客名字的由来)。之后我和她详细讨论了游戏的玩法,并写下了项目计划的初稿。女儿很认真的“审查”我的项目计划,并提出了一些建议。比如

    1. 游戏目标:快速移动大象来弹奏好听的旋律 “没有目标,只为好玩”
    2. 游戏策略:难度逐渐提高,弹错10次就结束 “保持相同的难度,No Game Over ,Just fun!!!”

    最后我把项目任务细分成子任务,女儿完成了游戏界面的初始设计。

    第二天开始3D建模,我没有给她介绍其他3D建模软件(比如Blender),而是让她直接在Unity下拿基本的3D图形来搭建场景。我先让她看我用立方体做了一个钢琴的模型,然后让她来拖拽材质上色。之后让她自己来按照我的方法给大象建模,她用了四个立方体建造了第一版的大象模型。

    下一步是采集声音,原本我想录制一下家里钢琴的声音,再导入Unity。后来懒了一下,直接从网上找了现成的采样。给女儿演示了如何导入声音文件并且绑定到钢琴的琴键上。

    第三天,终于开始编程了。我的目标是让女儿写一行代码来移动大象。我先给她建好了ElephantController脚本和负责移动大象的方法,并用注释描述了如何来移动大象。然后教她打出了第一个关键字,并在IDE的帮助下完成了她人生中的第一行代码。

    transform.Translate(Vector3.right)

    虽然她不知道什么是Vector3,但是可以根据关键字的大概意思理解这会让大象向右移动。当她按下Play键后,看到大象快速向右侧移动并飞出了屏幕后超级兴奋。之后她又反复玩了好几次,每次都嘎嘎的笑个不停。好不容易才让她平静下来,给她讲了要想更好的控制大象需要加入速度参数,并考虑屏幕刷新率,和判断方向键触发。她耐着性子听完后,按照我说的把剩下的变量加上了,完成了这一行代码。

    transform.Translate(Vector3.right * Time.deltaTime * speed * horizontalInput)

    不过很遗憾,后来她就开始不耐烦了。有可能是她理解不了之前那一大堆变量的作用。正好我让她休息一下,自己把使用大象鼻子控制按键播放声音的部分直接写了。

    第四天吃晚饭时,我让她来给妈妈演示一下我们的成果。女儿超级开心,尝试控制大象来弹奏她刚学会的曲子。之后我们开始迭代添加新功能。我问女儿如何可以让游戏变得更好玩,她的想法是当琴键按下时,大象或钢琴会把琴键的颜色喷涂到后面的墙上(可能是受了最近看我玩Splatoon3的启发)。

    我觉得这个设计很好,不过有点麻烦需要对物体材质编程。而且就算我实现了,女儿也没办法参与到其中。于是我引入了MVP的概念,给她讲解Trade Off的选择。为了“完成”我们的游戏,经常会牺牲掉一些功能。最后她同意了我们打算用射灯的灯光来模拟喷漆的效果。

    第五天迭代改进。我给女儿展示了如何添加调整灯光,并让她来编写把琴键颜色同步到灯光颜色的代码。这次我尝试让她来自己写,启发她想象如果电脑可以听懂她说话,她需要怎么样描述才可以把键盘的颜色传递给射灯。再反复的启发下,终于完成了下面这行代码。

    spotlight.color = keyColor;

    当她试玩时发现她的代码真的会让灯光的颜色产生变化,超级开心,又开始玩个不停。最后我又收了一下尾,多加了两个灯和一些随机移动、渐变的效果,最终完成了下面的MVP版本。

    这可能是我近年来做的最有成就感的一件事了。小时候我就梦想可以自己写游戏,但当时没有足够的知识和能力实现,所以这次也算是在女儿身上圆了一下梦。我想当女儿将来看到很多人是通过HelloWorld来编程入门时,再回想起自己的第一个项目应该会很骄傲吧。

  • Code Freeze 开始了

    终于到周五了,第一周上班顺利结束。最后花了大概四天的时间来熟悉假期落下的工作,与同事和客户开会跟进项目,制定下一步的工作计划。下周回复正常的工作模式。

    算了算今年还剩大概10天假,可以从12月中一直休息到年底。放假前还有三周的时间,主要又三个任务。

    • 组织团队计划明年上半年的工作
      • 今年公司推荐用OKR来计划,我还需要学习一下。
    • 写团队的年终总结
      • 这是比较烦的活儿。
    • 没做完的项目收一下尾

    这礼拜Code Freeze开始了。Code Freeze一般在感恩节和圣诞节前后。这期间有很多用户使用我们的产品。为了减少由于产品更新导致的Bug,一般大厂都会停止产品的更新部署。

    另一方面,这期间也有很多美国同事开始休假一直到年底,如果产品出了问题,还需要联系相关同事回来修,这样会影响大家的假期。所以下周不需要写什么代码,正好可以来学一下OKR,计划一下团队明年的目标和项目。

  • 牙齿仙子忘记来了🧚‍♀️

    牙齿仙子忘记来了🧚‍♀️

    晚上回家,老婆告诉我说女儿吃饭和她抱怨,昨天牙齿仙子忘来了。我才突然想起来,昨天她牙齿掉了,但忘记给她枕头下放金币了。

    在国内,小时后听说牙齿掉了要扔到房顶上,或者埋到地里。女儿第一颗牙松动时我才知道英国的习俗是将牙齿放在枕头下面,牙齿仙子晚上来取,然后给你换一个金币。刚开始我还以为是开玩笑,问了同事后发现这个习俗是真的,但不同国家的版本会有一点不一样。比如有的版本是小老鼠来取,还有的是牙齿矮人来取。

    当时花‘重金’给她买了一套10枚牙齿仙子金币套装(是的,我以为只需要第一颗牙齿掉了才给,但习俗是每颗牙都要给一个😓)。这应该是第四颗牙了,每次牙齿掉落当晚,我都会趁她睡着后给她换一个金币,第二天早上她总会超级兴奋的跑来告诉我和老婆牙齿仙子来过了。

    我看Wiki上说,一般小朋友会在5-7岁时知道牙齿仙子是虚构的。我很庆幸女儿现在还没发现。今晚我们告诉她有可能是牙齿仙子没又找到枕头下的牙齿,于是睡觉前她又在盒子上加了一个便条。真希望她可以晚一些发现,Keeping the magic alive!

  • 在岔路口上的Twitter

    早起看到Elon给Twitter员工昨晚发的一封名为”在岔路口上“的邮件。邮件中称为了让Twitter2.0取得成功,员工需要开始长时间高强度的工作。邮件下方还包含了“同意”的链接,如果在24小时内不点击同意,将会直接获得三个月的遣散费。

    这让我想起了华为的“奋斗者协议”,难怪他之前对中国特斯拉员工的效率很满意。一方面很庆幸我们公司的CEO没有像Elon一样,做事情会考虑Human Factor而不单是工程和效率。但另一方面也不得不佩服Elon做事的执行能力,在短时间内裁掉半数员工,每天住在公司,把剩下的几千人聚到一起,快速进入一个高强度开发模式。

    我想也许会有一小部分工作狂可能会认同Elon,真心追随他去做一番事业。但大多数工程师应该不会Enjoy在这种环境下长期工作。邮件中还提到了“Twitter作为一家软件服务公司,将更加以工程师为导向”,这就意味着设计与产品管理员工的待遇可能会被降低。

    也许在短期内公司可能会做出更多的新产品,但我不看好长期的用户体验和产品质量。当然我还是很期待Twitter2.0的,毕竟Elon是那个造出了Tesla把SpaceX送上天的人。

  • 第一天回公司上班就病了

    第一天回公司上班就病了

    昨天是长假后回公司上班的第一天,结果回家就挂了,头疼发烧了一晚上。好在睡了一大觉后,第二天基本好了,接着去上班😭。我实在想不出为什么会生病,之前休假身体一直很好,昨天也没受凉。我猜一定是我的身体或潜意识在抵触上班,通过生病来提示我一下。

    昨天也是上周裁员后第一次回公司,虽然我们大组没受很大影响,但工作区还是感觉有一点怪怪的,没什么精气神。和同事聊了聊,一半人压根儿就不怎么担心,觉着裁员的赔偿很合理,直接再去找家公司就是了😓。另一半人觉着天要塌了(尤其是拿工作签的同事),都没怎么睡好觉。听同事说英国今年推出了新的人才引进签证HPI(High Potential Individual),很多最近毕业拿工签的同事都打算去换签证,这样就不用担心被裁员后因短时间内找不到工作而被迫回国了。

    这两天我的目标是快速的follow up落下的工作,争取在三天内恢复原有的工作状态。下面是我优化的流程:

    • 先写个Post告诉大家我回来了
      • 包括一些假期的Highlights (省的每个人看见我都问我一遍)。
    • 和主要的Team成员开一轮儿会
      • 让大家Update一下这段时间的工作,感觉这样比我去看他们的post或代码效率高。
      • 问问有什么需要我这两天优先处理的。
    • 过一遍假期中所有的工作信息,邮件和Post
      • 这个最耗时间,尤其是由于公司最近的变动导致很多部门的项目重心都更新了。
      • 我不打算直接处理这些信息,只是根据项目分类,等处理具体事项时再来消化它们。而且根据经验有些事情拖着拖著就不需要做了😏。
    • 和主要项目合作伙伴定会
      • 跟进项目进度,看看有什么metrics还差的很远。
    • 将所有的待办事项列出清单

    争取周三可以把清单列出来,然后挑一些容易的事情开始做,逐渐恢复高效的工作Flow。