2016年10月DayDayUp

25日 星期二 Android学习笔记

最近学习了Android“键盘消息处理机制”、“安装过程”,这几天正在看“Activity”的启动。和上半年相比,近期的学习速度加快了,方法上也有了一些改进。现在拿下一个模块分三个步骤:

一、把《Android系统源代码情景分析》这本书的相关章节快速读一遍。读这一遍的目的在于让重要的概念在脑子里留下印象,一遍就想完全理解是不太可能的,但在脑子里留下的印迹能很大程度地帮助后面阅读代码。
在这个过程中要做好标记和笔记,老罗这本书非常棒,但是文笔上有点啰嗦,标记是要把重点筛出来,把文字直接对应到它所讲解的代码上去,这样读一遍代码就可以了,而不用看着文字再去找代码。这本书的另一个遗憾就是Android版本过低,有些代码沧海桑田,读这本书就像跟时间赛跑——随着时间流失将越来越落后于Android的最新版本,阅读的困难也就越大。

二、深入到最新的Android代码中去。做这一步也离不开《情景分析》这本书,我把书当做向导,按照作者的思路去找代码。撸码的过程中很可能遭遇“此路不通”的情况——书里的内容在实际代码中被重构了。没关系,阅读源码的过程就是找主干、去末梢的过程,带着在第一步中收获的概念,书中的代码在源码中时隐时现,这些踪迹足够自己在源码中寻找主干了。
在这一步要做好记录,我的博客就是在这个环节中完成的。我把源码拷贝到笔记中,砍掉细节只留主干——我认为这就是阅读源码的本质——细节暂时扔掉,把主干中主要的数据结构、控制流程梳理清楚。尽量把笔记插到代码中,方便以后阅读。

三、再快速地把笔记读一遍,这一遍就不必停留在细节,而是弄清楚主干的目的是什么。读完这一遍可以为每篇笔记完成一个总结,有时候看起来浩浩荡荡二三十步的过程,其实目的很简单,比如Android应用程序的安装过程,就是把记录和实际磁盘数据撸一遍,保持二者一致性,让这份数据始终在内存中。

这段时间跟上半年读源码最大的不同点在于:之前在第一步中花的精力比较多,我会在读书的过程中同时读代码,并且花了很大的功夫在代码里做超级链接,标记函数的调用、跳转以及返回等信息,以方便再次阅读。其实并不是很有必要,因为只要能把骨架砍出来,再次阅读一两遍就能把代码吃透了。撸一次码要快,否则说明你可能陷入太多的细节,可能并没有抓住本质,没有抓住主干。陷得越深,把握主干就越困难。理想的情况应该是把握住主干后,如果对某个局部感兴趣,再把这个局部当做一个整体,迭代使用以上的方法,再深入研究。

27日 星期四

在接手一项新工作的时候要调动200%的注意力和敏感度,不放过每个人跟你说的每一个字。如果当时没听明白,立刻提出疑问,解释清楚。尤其是当接手一个团队的时候,你会听下属跟你讲到很多细节,你要做的虽然不是记住每个细节,但是要比记住要求更高——是要把这些细节串起来,了解细节之上的宏观逻辑,以及接下来每一个决策可能带来的衍生影响。

我的记忆力很差,介入一项复杂的工作常常像读书那样,第一遍沟通了解梗概,在深入工作的过程中才又发现事情A和事情B之间是有关联的,有需要找下属把之前讲过的事情再讲一遍。这个时候你会发现原来对这件事儿的理解跟之前有很大不同,有的时候甚至要再次反复沟通才把事情吃透了。

我觉得这种做事方法亟待改进。

30日 星期日 被扭曲的KPI

老板在朋友圈里发了一条消息,大概意思是说公司的空气质量太差了,这样的工作环境会影响创造力的发挥。很快就发现行政部门行动起来了,每一层隔几米就有一台空气净化器。机器有一米七八那么高,至于里面是净化器还是风扇,就不得而知了,因为工人拆开的时候我看到了挺大的扇叶,却没看到滤网。而且机器一旦启动起来,风力十足。

有一天突然觉得冷风嗖嗖的,踅摸了一圈没找到哪在吹。下班后循着风源才发现原来是离我四五米开外的一台净化器本来是对着墙吹的,风被反射改道后刚好对着我!吹了一天,觉得脸和额头都是热的,本来想给它转个向,发现这玩意儿还挺沉,干脆把电源关了,可是每到第二天,机器又跑起来了。而且几天后,我发现每台机器上都装了个小天线,只要任何一台机器停运,三分钟内一定有人过来检查,并且把它再次启动。

有一天我跟检修的同学说:“这玩意儿是我关的,对着吹是在太冷了。”哥们也没说啥,默默地走开了,可是没过一会,我头顶上轰隆隆地启动了另一台机器,那声音跟一辆大公共启动起来也差不多。对着轰了一天,实在是被它打败了,我只好自觉地把净化器打开,以后上班要穿上小棉袄才行。第二天“大公共”没再开,我知道行政的同学也不容易,老板一定给了不小的压力,责令公司空气质量必须达标,可是人都吹出毛病了,空气再好有毛用啊。

其实有几天我试着把净化器的方向转了一下,可是公司工位安排得很紧张,不管朝哪个方向,总有受害者,因为我发现总有人把它再掰过来。

仔细想想,这不就是KPI导向的副作用嘛。老板是个很强势的人,下达指令确实能够很快落实。但人终究不是机器,我们的事业也不能当做一段代码来执行。因为我们要服务的对象是人,不管做产品还是管理公司。你的目标是让同学们思路清晰,提升效率,让空气清新是达成这个目标的结果,而不应该作为目标本身。可如果你跟下属说:“再让我测到公司的PM2.5高于xxx,你就不用来了”。那结果就是这样,他不关心会不会把人吹坏了,能达到KPI就是胜利!

对于这个问题,我也没有绝对有效的解决办法,我的办法就是跟下属推行我的价值观,并且身体力行地去践行,去给下属做表率。应该让下属理解你希望给大家营造一个好的工作环境。做了多年的管理,我发现人的记忆力其实很差,有些话要不断地讲,有机会就讲。让下属知道你赞同什么,反对什么。遇到具体问题的时候,就要不失时机地结合这个事件,重申你的价值观。只有这样,才有可能见效。指望开一个会,发一封邮件,说“我们要以人为本,以用户为中心blabla…”,那必然不会有效果。

今天刚好看了张小龙在腾讯领导力大会上的发言,题目就是《警惕KPI和流程》。张小龙也是通过不断阐述自己的价值观,让团队理解自己的目标而不是如何测量目标,来纠正KPI导向导致的偏差。在理解价值观这件事儿上,KPI或者OKR这些工具都是无能为力的,只有理解和认同了价值观,才能在团队建立一个共同的事业想象体,才有可能让每个人朝着这个事业目标前行。

31日 星期一 关于职场中的冲突

职场中经常看到冲突。那天看到两个下属因为非常小的小事儿就杠上了。俩人是在技术接口的上下游,遇到了一个bug。
一个问:“你的XXX返回的是什么?”
答:“这是个系统调用,系统给我的是什么,我返回就是什么。”
问:“系统返回给你的是什么呢?这代码不是你写的么?”
答:“你不是也有代码么?你不会自己看么?”
……
问的人知道我在旁边,所以还是很克制地甩了句“真服了你了”。当时的气氛如果我不在,感觉真是一点就着。另一个同学后来也看到我,俩人才又正常对话。

在我看来这种无谓的语言冲突太低级,不管是刺别人,还是被人刺后的怒发冲冠、回击,都是职场上的低级行为。看起来牛逼一把,看起来人人不敢惹,可是仔细想想,我们在职场上行走的目标是什么?这么做是跟这个目标一致的么?

反正我在职场上行走,唯一的目标就是提升自己的能力。一切与此目标相左的行为,都应该杜绝,这是我在职场上需要修炼的境界。你可以表现出愤怒、表现出兴奋,那都是为了这个目标而做出的行为,只有十年如一日地朝着自己的目标前行,你才能和竞争者拉开差距,成为这个赛道的胜者。你的目标是前方,却时而不时而地挠一把旁边的人,然后就是小心防御,因为他们以后冷不丁会再绊你一脚。你说这种行为不是低级又是什么呢?

职场不是江湖,更不是庙堂。因为江湖和庙堂的价值维度只有一个,所以大家要拼个你死我活,在这个唯一的坐标系下当盟主、当上卿、当丞相、当内阁首辅、当总理……其实越牛逼越容易成为众矢之的,也越容易被坐标系的设置者拿掉,有什么可牛逼的呢,不过是枚棋子而已!

而职场的坐标系应该由自己设定,你不可能吊死在一家单位待一辈子,即使给你发工资的老板对你做出的评价也不过是暂时给你安了一个价签,标定了你在此时此地的价格。每个人真正应该在乎的是自己的价值,支撑这个价值的是自身的能力。所谓“万般带不走,唯有业随身”,你在这里是总监、是CXO,换个地儿是什么货色,靠的是能力和修为,不是别的。

所以这么想来,被人误解、被人排挤、甚至被人陷害,在职场上的含义和在江湖、在庙堂是完全不同的。你要做的是达成自己内心的目标,而不是被别人赞叹或者评价,那些只是副产品。你停下来跟人理论,或者自证,哪怕分心听别人说你如何如何,都是不值当的。除非你认为那些人,那些话可以与你的目标相提并论。