自解释代码

最近在给同事们做code review的时候,发现需要反复强调代码自解释的概念,于是想写一篇文章专门说这个话题。 但今天搜到一个文章,已经很好的解释了什么是自解释代码,文章在 15 Ways to Write Self-documenting JavaScript,国内有人翻译了:如何编写更加自解释的代码

补充几点:

  1. 不及时更新的注释或者不正确的注释还不如没有。
  2. 如果一定要加注释,那么不要着重解释代码做了什么(what),而是要解释为什么要这么做(why)。而很多时候是可以通过函数封装,用函数名来解释这个why。
  3. 好的程序员会认为写自解释代码是天经地义,自然而然的事情。
  4. 再次推荐《Code Complete 》与《Clean Code》,《Refactoring》,这三本应该是每个程序员的必读书。

 

 

如何找到技术合伙人

今天在Twitter上看到Ryan Hoover 对有人问『如何找到技术合伙人』给出个有趣的答案,转译如下:

首先找到你的受众群
可以通过写博客,播客,举办线下聚会,(译者:国内还可以用公众号,小蜜圈)来达到这个目的。有了受众群会产生如下的好处:

  1. 招聘 当你没有产品,没有被大家认可时,是很难说服任何人加盟的(不只是技术合伙人)。(译者:而有了受众群也是打动技术合伙人的很好方式)
  2. 用户获取 产品的初期用户获取是一个产品最困难的一步,但如果你有了自己的受众群,就很容易做到这一点。
  3. 用户研究 有了受众群会跟有利你研究用户需求。

译者:有不少朋友创业时,让我推荐技术合伙人,要求还都不低。建议大家面临同样的问题是可以反过来想,不要先想着要找什么样的技术合伙人,而要想怎么去打动将来的技术合伙人及其他合作伙伴和用户,而在现在这个社交媒体的时代,建立自己的受众群是很好的向大家展现自己能力,吸引大家的手段。

多人间

春节前后去云南转了转, 发现遇到的客栈居然都没有多人间了。

好多年没住过青旅和客栈,猛然看见这个变化,有点震惊。 当年自己背包旅行的时候是特别喜欢多人间的。在多人间,来自天南地北的人聚在一起,几乎每天都是不同的一批人。那时候没有智能手机,屋子里也没电视,大家睡前没有别的节目,往往就是聊天。话题海阔天空,百无禁忌,还可以交换旅行情报。 到了第二天早晨,大家就背着包各奔东西。很多时候,这一晚的相聚,是大家第一次也是最后一次的见面。

这次还有另外一个发现,就是客栈里大家的聊天也少了。 10来年前第一次去丽江的时候,前前后后待了半个月的时间。当时一大乐事就是白天去旁边一个客栈的小天台上晒着太阳聊天,或者晚上去一个南京人开的客栈围炉夜话。从中听到了很多关于丽江,大理,泸沽湖的奇闻异事,颠覆了不少对当地的认知,甚至颠覆了些许的人生观。而这次看到的丽江客栈,院子里人都不多,有人也是在低头看手机。

后来和一个朋友聊起原由:多人间的消失是现在的年轻人更重视私密性;而聊天,则因为手机解决了大家的交流需要,原先聊天文化也趋式微了。

没有厚古薄今的意思,只是内心五味杂陈,忍不住吐吐槽。

 

非暴力沟通

以前听说圣雄甘地的非暴力不合作运动,当时只是简单的以为,非暴力就是没有身体暴力行为。去年读了《非暴力沟通》才知道,甘地还非常重视要杜绝隐蔽的暴力,他认为隐蔽的暴力甚至比身体的暴力更为有害。而沟通中的暴力则是隐蔽的暴力中的重要一环。暴力的沟通是无效的沟通,也是很多身体暴力,乃至国家间战争的起源。 读了这个书后才明白,身边充斥着很多的沟通暴力,自己也用沟通暴力带给过很多人(也包括自己)伤害。

非暴力沟通(Nonviolent Communication,简称NVC)是马歇尔·卢森堡 于1963年提出,1994年开始在前南斯老夫学校推广,随后以色列也开始在自己的学校中推广NVC。2003年,联合国教科文组织将NVC列为非暴力解决冲突的最佳实践。

那么我们如何进行非暴力的沟通呢?《非暴力沟通》这种本书中给出了四要素:不带评论的观察、表达感受、提出需要、说出具体的请求。

  1. 不带评论的观察
    『小张花5000元买了个上衣』这是观察,而『小张花钱太大手大脚了』这就是评论。 人们总习惯很快就下论断,给别人扣帽子,但这样会阻碍下面的沟通。 在观察阶段,要尽量只陈述事实,而不带任何主观评论。
  2. 表达感受
    表达感受时,要注意区分想法和感受。 『我觉得我今晚吉他弹的不好』这算想法,『作为今晚的吉他手,我觉得很郁闷』这是感受。
  3. 提出需要
    说出自己的什么需要造成了上面的感受。 很多人包括我在内,经常容易把自己的烦恼归咎于他人。其实深入思考的话会发现,烦恼往往是因为自己的某些需求没得到满足。 『你昨天没来令我很失望』这是抱怨,把自己的失望归咎于他人;『你昨天没来,我很失望,我本来想和你说些烦心事的』,这就很清楚的表达了失望是因为自己的愿望没得到满足。 当我们沟通时,能把自己的需求表达的越清楚,准确,沟通效率就会越高,对方也越能有积极的反应。
  4. 说出具体的请求
    作者举了一个例子,一个高中的黑人学生发起抗议,要求校长公平对待黑人学生,而校长认为自己已经很公平了,双方沟通非常糟糕。 作者帮助学生,把请求写成38项具体的要求,例如:『黑人学生代表可以参加校服标准的制定』,结果校长全部同意,沟通效果极好。 这就是很好的把要求具体化的例子。

一个妈妈看见孩子袜子乱放,她如果说:『你怎么老乱放袜子!快点收拾』 这个沟通就不算好。 而『你的床底下扔着两双袜子,桌子底下还有一双,我不太高兴,我希望家里很整洁,你是否可以把袜子放到洗衣机里呢?』就完美的实践了非暴力沟通的四个要点。

这本书不只强调方法,更强调的是爱,对自己的,对生活的,对他人的。 非暴力沟通也不只是和别人,也可以尝试到和自己沟通上。有人做错事的时候,常爱在心底里骂自己,贬低自己,对自己使用了隐形的暴力。人首先要爱自己,接纳自己,包括自己的不完美,才能真正的爱别人,接纳他人的不同。

这个书不厚,不过内容很丰富,上面的介绍只是讲出了书中的很小一部分。希望大家都能读读,希望可以让你自己,也让这个世界变得更美好。

刚读完这本书时,感觉如果这本书能早30年被自己读到就好了。不过现在读到也不算晚,这本书会是自己以后反复阅读的书,以后每当有了新的心得,将会都更新到这里。

 

 

 

孤独是一个人的狂欢

国际孤独等级表 前两天一个同事在朋友圈发了这个孤独等级表,发现自己十级居然全做过。

前5个都没啥可说的,跳过。

一个人去KTV: 当年去宜昌的时候,晚上逛夜市,突然下起了雨,刚好看到旁边一个KTV,就勾起了自己的歌瘾。作为一个朝鲜族可以不会唱歌,但不能不爱唱歌,进去要了个最小的包间吼了2个小时。出来的时候整个店里的人都用奇怪的眼神看着我。

一个人去看海:10来年前一个冬天,突然特别想去看大海,就周末坐火车去了大连。当时快春节了,整个滨海路大多数时间就自己一个人。

一个人去游乐园:在家做共享的时候,住的地方离北京游乐园近。很喜欢海盗船,有天一个人跑去玩了好多遍。

一个人搬家:刚来北京时在朋友家住了一个月,后来找了个地方,在双泉堡的一个国营肉联厂宿舍,自己把包袱一裹就搬家了。住的宿舍紧靠屠宰车间,每天晚上都能听到赶猪进车间的声音。

一个人去做手术:7,8年前,脖子后头长了个小肉瘤,一个人跑同仁医院,说要动个小手术。打了麻药,脑子还很清醒,边和大夫聊天边把手术做了。

说说其他的:

去嘉峪关的时候,进去的就比较晚,当时整个城里就我一人,结果看门的居然给忘了,到点锁门了。于是干脆一直待在城里,在城墙上看着月亮慢慢爬上城楼, 才从城门下面的缝里钻出去。

有年圣诞夜是在泰山顶上过的。冬天,大风,很冷。很多人来泰山顶等着看日出,但没人等着看日落,除了我。 一个人一直看着夕阳沉入天际, 看着山脚下的泰安华灯初上。

还有年圣诞夜是在金山岭长城的一个敌楼里过的。那天顶着大风,背着大包,一个人爬到司马台最高的望京楼,再回来爬金山岭。整个长城目力所及范围内就自己一个人。搭好帐篷,在帐篷里煮了香喷喷的方便面,吃完就倒头睡了。晚上突然醒来,听到大风声,还有帐篷旁有奇怪的声响,早晨起来一看,原来是一卷纸被大风吹得在敌楼里到处转发的响。 带的百事可乐冻成絮状,还能喝,很特别的口感,以后再也没尝到过。

第一次去哈巴雪山,下山的时候在海拔大约4000米左右的森林里迷路了,和向导走岔了路。 当时一个人在森林里,居然一点也没慌,根据经验找路慢慢往下走,天快黑的时候终于到了山下,和上山的入口差了挺远。刚下山,看到向导在等着。 他看到了脚印,估计到会从这边下来。

路途上还有很多孤独而又难忘的时刻。绝大多数孤独的时候,其实都是很开心的。很多人喜欢热闹,我则很喜欢独处,不过也有例外。

一次在梅里雪山,在一个山林里看到美得让人震惊的梅里,真正让人体会到什么叫美得让人窒息。当时整个山林里就我一个人,很安静,很享受。但又很希望有人,能在身边分享此情此景。

 

 

 

程序化广告的未来

前一阵看到一句话:Programmatic is eating the media world,意思就是程序化广告正在吞噬媒体的世界。 程序化广告这些年发展很快,人们都看到了程序化对传统媒体售卖方式吞噬,不少人却忽略了程序化广告本身也在剧烈变化之中,很可能再过5年后的程序化广告和现在又大不一样了。

下面畅想下程序化广告的未来:

  1. 媒体端的改变
    会有更多的传统媒体也开始用程序化来售卖广告。比如电视,广播,户外广告,楼宇广告,甚至高速路上的路边广告, 电影的片前广告都会程序化。 这些还都算传统媒体,将来一定会有针对程序化广告的媒体创新, 会有不少崭新的广告媒体出现。
  2. 广告形式的改变
    将来的广告应该不只是一个文字,图片,视频,他应该是交互的,不只是用户与广告的交互,应该是用户之间,用户与广告间,多方的互动。
  3. 广告购买方式的改变
    将来市场应该会有越来越多小的广告主。比如我们附近的小餐厅,可以花几百块钱, 在某个广告购买平台上开账号,在方圆500米以内投放各种媒体广告。
  4. 广告业态的变化
    第三点提到会有越来越多的小广告主, 他们会是各地小广告公司的服务对象。 地方的小广告公司将摆脱地域的限制,可以为广告主在线上直接购买全国,乃至世界范围的优质广告资源。现在不少DSP养着不小的销售队伍,私以为这应该不是未来的方向。 未来大大小小的广告公司会承担这些销售工作, DSP则需要回归初心,专心搭建高效的媒体购买平台。
  5. 统一的媒体采购平台
    将来应该会出现,能采购各种媒体流量的平台,也就是媒体采购的淘宝。甚至是程序化广告业的各种服务,都可以在这里实现一站购买。 这不表示DSP的消亡,众多DSP会是这个市场上媒体购买服务的卖家。
  6. 媒体的价值会更透明
    随着程序化广告的推进,数据的越来越透明,不同的媒体是什么样的受众,适合什么样的人群,价值几何,也都会越来越透明。
  7. 线上线下数据打通
    打通已有客户及线上潜在客户的数据, 用线下数据指导线上的广告投放,反过来用线上数据再指导线下的活动。这个市场会有超越传统CRM概念的系统出现,可能会产生远超SalesForce的巨头。

上面这些展望都是蜻蜓点水,没有展开,每个点展开了都要长篇大论。谁要是感兴趣欢迎一起讨论。

也谈Header Bidding

前几天看到曾宪超和北冥一起合写的《Header Bidding:程序化交易的一股泥石流》(下面简称泥文),受益匪浅。下面有自己的一些思考及疑问,提出来供大家一起讨论。

  1. Ad Exchange在进行RTB竞价时,给DSP的时间很有限,大多在100 – 300ms范围。而在客户端竞价时,这个时间范围相对会较宽,这样能参加竞价的将不只是DSP,Adx也可以直接参与竞价,这对提高填充和收益也是会有帮助的。
  2. 泥文中提到HB会引起高延时。这个有些疑问,用JS的异步调用,可以做到近似并行的效果,请求10个买家和请求1家的时间差异应该不会太大。 而且HB模式减少了ADX的中间环节,照道理总时长应该能得到缩短才对。
  3. 除了有自己adx的大媒体外,其实还有很多没有自有广告系统的中小媒体,对这些媒体来说HB能带给他们的好处是实实在在的。泥文不看好HB在国内的将来是基于大媒体的角度出发,难道中小媒体中也会没有市场么?
  4. HB在移动端App的变现上优势更明显
    现在很多App的变现是通过聚合,通过瀑布模式调用各广告提供方来提高填充和收益。这有如下2个弊端

    1. 延时非常长,因为要串行调用多个广告提供方,有时获得一个填充甚至需要10秒以上。
      而HB方式是并行向广告买家发起竞价请求,能大幅节约时间。
    2. 瀑布方式的调用明显没有竞价的收益更好。瀑布模式只能根据历史ecpm,填充率,点击率等信息决定具体的调用次序,来尽量最大化收益。
      而HB的竞价模式能保证每次的请求都得到了收益的最大化。

现在移动端流量已经超过桌面端,HB相对于聚合的巨大优势是很有可能会让它成为改变广告市场的重要因素。 泥文提到欧美市场有公司因为没能及时拥抱HB而造成暴跌,中国会不会也发生这一幕呢?

库不齐沙漠徒步小结

刚刚和公司的小伙伴们一起在库不齐沙漠度过了开心的两天, 徒步穿越了库不齐沙漠。 全司分成了7个组, 组之间展开了激烈的竞争。 我们第七组(队名『蓝色闪电』)第一天成绩不理想,排名倒数。 第二天则以较大优势获得第一。 能在一天时间内实现大逆转, 我们自己也是颇感意外,因为主要竞争对手第四组只有一个女生,还是个有户外经验的女汉子, 其他也都是年轻猛男。 而我们组,则近一半是没有户外经验的女生, 其他男生有户外经验的也较少。后来居然成为了第一,还优势相当大。回来路上想了半天原因,记录如下:
  1. 正确的战略
    第一天成绩不佳后,我们第二天早晨就根据前一天的观察,总结经验,确立了要保持自己的节奏,保持紧凑队形的策略。在整个过程中节奏和队形保持的非常好,第一名到最后一名的距离也就10分钟左右的路程。
  2. 战术执行
    确定了策略后, 我们将策略细化到了很多的执行细节里:

    1. 第二天早晨出发前,男生们就已经帮女生大量减负,大部分女生只背一瓶水
    2. 每到一个休息点,大家集合整齐再一起出发
    3. 我们发现先出发的队伍在沙漠里更容易保持队形,所以在休息点时我们非常注意距离前进方向较近的地方休息,教练一动我们就立刻跟着出发。
    4. 对一些同学登山杖的用法进行了调整,收到了较好的效果
  3. 抓住机会超越对手
    在最后一程,我们组拖后的三个人,和前面组员间,隔着主要竞争对手:四组的7-8个人。 当时我组三人非常累,但四组的人也是很疲惫的感觉。 我们三个抓住翻过一个沙坡后一段较平坦的路的机会, 一起咬牙加速, 终于超越了四组的主力部队,在爬下一个沙坡前抢占了有利位置,一举拉大了与四组的差距。 —— 竞争的时候一旦机会出现,一定要立刻抓住,你觉得难,别人也难。狭路相逢,勇者胜。
  4. 团队
    最重要的原因是,我们七组是个特别棒的团队,互相之间不断的肯定与鼓励。每个人的努力与坚持,又激励着队伍中的其他人奋勇前行。
后记:得第一的感觉确实很兴奋,但这种兴奋很快就过去了。而和同伴们一起同心协力,穿过茫茫沙海,冲向终点的整个过程,则成为了特别温暖的美好记忆,相信每个蓝色闪电的组员都将把这两天永远珍藏。
库不齐沙漠 - 蓝色闪电