盘点我的2013

5个月前 19 分钟

提笔(确切地说,敲下键盘)开始盘点我的2013时,我感觉 回顾我的2012展望2013 似乎就在眼前。都说岁月催人,这哪是催,这是赶。无论心智是否更成熟,知识经验是否更丰富,过了一年,就老了一岁,去年的那支影子也渐行渐远。多愁善感并不单是文人的专利,年过三十后,我也染上了这臭毛病。太白说『白发三千丈,缘愁似个长。不知明镜里,何处得秋香!』(好吧,是秋霜 ^_^),本不大懂,但经历了2013这奇特,曲折,煎熬,仿佛过去的十年职场都被挤压收缩的一年后,我很能理解他那种年过半百,壮志未酬,人已衰老的那种痛苦。

这一年经历了太多太多。

大事记

  • 1月:创业公司走到十字路口,向左走寻不到『生机』,向右转看不到『光明』。两权相害取其轻,不得已放弃『光明』选择『生机』,忍痛送别一个又一个战友。月底站完最后一班岗,正式自我放逐。
  • 2月:拒绝了不少创业团队的邀请后,整天泡在国图看书,写书(创业回忆录『途客们的旅行梦』),同时思考未来,寻求出国工作的机会,但四处碰壁。离开的战友开始一个个找到工作,看在眼里,暖在心头。
  • 3月:两年来在收入上对自己的吝啬让家里的经济状况开始触及红线,考虑到孩子的奶粉钱,无法留出哪怕一个 gap month。就业之紧迫感,为人父之责任感,应『劫』而生。在老领导的奔走帮忙下,虽应聘PLM无疾而终,但阴差阳错被AK激励重回旧地,重操旧业。一切尘埃落定后,当晚订机票酒店,第二天带着四个月大的小宝飞海南度假。
  • 4月:两年前的3月31日离开,这月8日回归。打开邮箱,看到两年前的goodbye邮件的各种回复,有种时空错乱的感觉。人还是那群人,事还是那些事,仿佛我从未离开,仅仅是休了一周的PTO。那逝去的两年时光,就像一滴水汇入大海,瞬间消散地无影无踪。
  • 5月:为了给小宝做视频,看了几个imovie的教程,拿team building和CNRD spring event练手,阴差阳错地被视为视频编辑能手。所谓劳者多能,我的视频编辑能力就这样一步步成长起来。此外,公司要求招聘要做code exam,于是我便花了个周末(及后续的n个晚上),做了 vint & cerf 这对鸳鸯来提供code exam。自此我个人的开源项目都使用计算机科学家的名字来命名,如:church,kahn,karp,etc.
  • 6月:感觉Cliff track PR很辛苦,team用excel汇报PR状态也很痛苦,做了个爬虫,及其衍生出的网站,来减轻这一负担。同月得到机会去美国出差参加global TL meeting。Staybridge没有变化,North Mathilda似乎还是老样子,不过公司搬到了新楼,会议室门口都挂着ipad,有种土豪的感觉。
  • 7月:迷恋上erlang。飞内蒙给老婆的爷爷过九十大寿。写下长文 长日无痕,平日门可罗雀的博客变得宾客盈门。
  • 8月:人生中第一次恐怕也是最后一次因公出差去印度。由于种种原因,停止更新正在写的『途客们的旅行梦』。已写的很多内容也一直未能对外开放。也许明年下半年,这些文档才能逐渐解密。
  • 9月:在茫茫bug中迷茫与彷徨。创业圈离我渐行渐远。更新了 teamspark,让其终于赶上 meteor 0.6.x 的脚步。
  • 10月:和美国一个team吵得不可开交。人生中还从未因工作的事如此愤怒。
  • 11月:小宝满周岁,越南芽庄庆生。度假前后的三周里我每周完成一个feature,找到些成就感,也一扫十月的阴霾。
  • 12月:出乎意料地在reorg中换了老板。接下来的至少一个季度,我将不得不与彼得定律『在一个等级制度中,每个职工趋向于上升到他所不能胜任的地位』抗争,来证明自己还未上升到不能胜任的地位。因为工作的需要,学习golang,一股脑写下了千余行代码,演练各种语言特性。

数字来说话

博客和文章

对比2012年末做的2013展望,除了涉及的计算机书籍基本没读外,其他都做得还可以。博客当然没达到每周更新的频率,但也在抽风似地螺旋前进。

Month Posts Published
Jan 7 7
Feb 6 5
Mar 4 3
Apr 2 2
May 2 1
Jun 4 4
Jul 3 3
Aug 0 0
Sep 2 0
Oct 4 2
Nov 9 4
Dec 4* 4*
Total 45 35

实际发表数在每周 0.67 的水平,2014年争取达到 1。此外在 Medium 撰写五篇文章,发表两篇:Programmer's DilemmaHaving a harse boss

Title Views Reads Recs
Programmer's dilemma 54.1K 45.2K 123
Having a Harsh boss 911 672 6

两者悬殊巨大,原因在于 [P] 被读者推到了 hacker news 上,并引发激烈讨论。另外,此文更容易引发争议,而争议引发激辩,是眼球的重要来源。

项目及代码

2013新创建了不少项目,完成的项目或者说基本功能可用的大致如下:

Projects Commits LOC Lang Intro
Vint 22 707 python exam client
Cerf 54 26534 python exam server
Church 40 24218 python team bug tracking system
Gnats 19 350 python gnats crawler for church
jd 17 394 python company directory crawler for church
kahn 39 421 nodejs company directory and gnats api for church
karp 12 6840 python a set of tools for internal use
matrix 4 515 python a hackathon project for downloading internal resources
tracker 31 33781 python a hackathon project for easing management tracking problems
calcapp 45 16540 golang a breakable project for learning golang

注意:

[1] 获取git diff:

$ git log --author="YOUR NAME" --pretty=tformat: --numstat | gawk '{ add += $1 ; subs += $2 ; loc += $1 - $2 } END { printf "added lines: %s removed lines : %s total lines: %s\n",add,subs,loc }'

这条命令需要gawk,如果你的系统中没有,可以使用 apt-get (ubuntu) or brew (osx) 来安装.

[2] 获取git commits数量:

$ git shortlog --numbered --summary

[3] 代码行数不太准确,有几个web项目偏大。这是因为把第三方的javascript也包含进去了。所以那些超过万行代码的,把前边的一位数去掉就差不多。

个人奥斯卡颁奖

以下各大奖项都和我有关,和您无关。我评我的奖,自娱我的乐。

最刻骨铭心

没有任何悬念,最刻骨铭心当属我亲手裁去一半的team,并随后离开途客圈。个中滋味,外人是体会不到的。

本想将当时我发的邮件和日记在此公开,但考虑到保密协议,一年后再补吧(如果我还记得的话)。

最深刻教训

全年我领悟了很多教训,包括但不限于:

  • 北美找工作。如果想申请美国的工作机会,在前一年11月就要动手。近些年H1B基本4月初就被抢光,倒推下来能为你申请H1B的公司,他们内部可能1-2月就已经对H1B申请freeze了,所以早动手没坏处。
  • 创业投融资。(见下)
  • 工作生活的平衡。去年末小宝降临(源于去年初的意外)打破了我工作(创业)与生活的平衡。每周80小时的工作必然引发家庭中的诸多矛盾,这种状态是不可持续的。工作(创业)不是一个人的事,它与家庭息息相关。
  • ...

入围教训:创业投融资,工作生活的平衡

获奖教训:创业投融资

在创业投融资方面,刻骨铭心的教训是:

  1. 如果你投入自有资金创业,在找到 product/market fit 前不要着急融资。对我和我的创业伙伴而言,50万人民币的自有资金只能给我们差不多半年的试错机会。我们要么在挣扎中找到收入来源,建立可持续的商业模式,要么破产清算。前者自不必说,后者能让我们更早更快地失败,最小化时间成本。而在没有做到 product/market fit 前的盲目融资,会让一切变得不再紧迫,大家的专注力下降(因为各种可能性,各种方向增多了),有种温水煮青蛙的感觉。
  2. 如果在创业之初有了产品后就奔着融资去,则不要投入自有资金,即使投入,也将其作为公司的债务。相对于融资额而言,个人投入的资金对公司后期的发展而言杯水车薪,而往往对自己的家庭影响巨大。以我为例,25万元人民币的投资在50万美元前不值一提,但这确是我当时家庭可动用的全部积蓄。之前自己有没有投钱,在融资时对创始人的股份,地位影响基本为零,而融资时投资条款中100%会出现的各种优先条款会让你个人的投入变成毫无意义的数字。
  3. 目前还不便透露,也许一两年后可以解密。

综合以上,更合理的创业公司设置是:使用尽可能少的钱作为公司的注册资本(最新的法规应该已取消最低注册资本的要求,所以理论上1元钱可以注册公司),然后将要投入的钱作为公司向个人的短期借贷,也就是债务。当公司运作良好,融资与否债务都可以收回;当公司破产清算,债权清偿后才轮到股权清偿。这样能最大程度保护创始人自己的利益,不至于一次创业失败,失血过多,短期内很难东山再起。

所以,创业投融资获得最深刻教训奖绝对众望所归。

最意外事件

入围事件:

  • 回到Juniper。
  • google I/O 抢到票,行程已定,却在可退票的最后关头因种种原因取消。
  • 在芽庄度假即将结束前一天,小宝高烧至39度。
  • reorg后被更换老板。
  • 08年和09年申请的两个invention disclosure在今年正式成为US patent。

获奖事件:回到Juniper

回归需要勇气,也需要运气。

最佳阅读

2013读了不少书,哲学,小说和创业相关的书最多。我有意减少了技术书籍的阅读,一来 online document,wikipediastackoverflow 足以弥补 99% 的知识,二来我希望涉猎更广些。

入围书籍:『长日留痕』,『西游论心』+ 『西游记』,『Programming Erlang』,『中国哲学史大纲』

获奖书籍:『西游论心』+ 『西游记』

以前读过好几遍『西游记』,但最后一次读西游还在高中。看完吴闲云的『解读西游记』和『再探西游记』,总觉见解虽很新奇,但有诸多漏洞,戏谑成分大些。而我无意中拾起的『西游论心』,从儒释道,易医巫几方面解读西游,很有滋味。边读『西游论心』边对着原文一点点啃,劲道十足。不得不说,是『西游论心』促使我十几年后重拾『西游记』这部巨著。

最佳个人项目

入围项目:

  • 代码机考系统。vint & cerf.
  • matrix。一个提供类似git命令行的下载工具。用于下载jive space里的文档。(内部项目)。

获奖项目:matrix

vint & cerf 很可惜,虽然我们已经使用它管理和组织了上百次code interview,但它还不是理想中的产品。功能稍嫌薄弱,也不足够简单。所以这个奖项给了matrix —— 这个从产品构想到实现我仅仅花了两三个小时就完成的项目。它足够简单,非常实用。TTI(Time to implementation)趋近于零,而ROI(Return on investment)却非同小可(省了我很多时间)。

最有价值文章

入围文章:长日无痕Erlang瞎扯软件工程师的职业生涯创建下一代家用防火墙

获奖文章:创建下一代家用防火墙

这是年初的一篇文章,大胆地构想了一种全新的智能家用网络(安全)产品的商业模式。从市场的角度来看,一个家庭基本上只会有一个网络设备,所以带有安全功能的网络连接设备最终会不可逆地取代单一功能的路由产品;从可用性来说,家用网络设备要尽可能地将IP/MAC,各种网络协议等术语隐藏起来,代之以人性化的命名。一条安全策略应该是:孩子的ipad 禁止访问 黄色网站,而不是只有专家才能看懂的配置;从智能化角度来说,利用云计算和大数据处理能力,将复杂计算,预测,防护和各种高级功能都云端化;从商业角度来看,硬件厂商最终不通过硬件本身赚钱(甚至免费为用户定期更新硬件),而通过ARPU持续产生收入。

最有价值知识

入围知识:lean startupCustomer development methodDo things that don't scaleTriz 40 principles

获奖知识:Triz 40 principles

Triz背后的研究团队研究了40, 000个patents,从各个patent中和已有patent的delta中,试图找到创新活动的特征。最终他们得到了这40组principle,对创新很有指导意义。对我而言,知道这个结论产生的过程远比知道这个结论要震撼得多 —— 研究40,000个patents,这得花多大的功夫和毅力?

最佳程序语言

入围语言:c,python,golang,javascript,erlang

获奖程序语言:python

这些语言是我在2013年来写过有意义的项目的语言,玩票性质的 io,scala,elixir,emacslisp 不在此列。python获奖实至名归,我这一年来写的80%的代码都是python。尽管我倾注了不少精力向javascript倾斜,但真要甩着膀子大干一场,指尖下流出的还是python。(这就是爱啊)

什么?我的工作语言是C?好吧,大多数时间里C让我有钱花,而Python让我快乐。

最佳社区贡献

2013我对社区的贡献少得可怜,虽然写了不少开源的项目,但要么自娱自乐,要么为某一特定目的而作,对社区基本没什么价值。下面两个算是矮子里拔将军,勉强可以充数。

入围社区贡献:teamsparkgo compiler bug

获奖社区贡献:go compiler bug

在学习go语言的过程中,无意中发现在某种特定情况下,go的编译器会生成非常巨大的可执行文件。在stackoverflow上发问后,得到了有意思的答案,并促使我进一步去研究问题的原因和workaround。twitter上有人对此讨论,并建议我给go 提交bug。所以这个对社区的价值要比我用 Meteor 写的 teamspark 要高。

最佳进步

入围事件:

  • 从golang hello world新手到写下有价值代码的 学徒,仅仅花了一周多的业余时间。在为一个项目写下1339行代码后,我已经正式步入golang学徒生涯。
  • 从对编剧一无所知到写下一个自我感觉还过得去(比百度文档中找到的那些强多了),有故事,有笑点,结合公司内外大小诸事的剧本,仅花了半天时间。从此我正式跨入业余编剧的行列。
  • 看了几个youtube教程后,我便走上了视频制作和剪辑之路。全年产出9个质量还过得去的视频。

获奖事件:一周多学会golang

如果说C和python是我的现金奶牛事业部,那么golang则是我的未来发展事业部。至于编剧和视频剪辑嘛,在可预见的未来,他们都还是cost center。所以 "一周多学会golang" 拿下最佳进步奖当之无愧。

最美滋味

在劳碌了一天,拖着疲惫的身子回家,有什么能比得上我的心肝宝贝一句酥麻入骨的『爸爸』来得美妙?毫无悬念,这一年最美的滋味就是我那宝贝女儿。从学会翻身,到能坐起来,从勉强行走到奔走如飞,从只会叫大大,到十几个单词量,她带给我数不胜数的美妙感受。工作郁闷且又无法发泄时,想想她萌萌的表情,想想她动听的声音,快乐就从心底涌出,融掉了一切烦恼……

太久没放她的照片,这下一次就是五张!我会努力做一个称职的父亲滴!

小宝 小宝 小宝 小宝 小宝

尾声

啰啰唆唆写了这么多,还意犹未尽。暂且停笔,日后再慢慢修葺。千言万语都道不尽的2013,即将从指尖溜走;而我的2014,则注定会多姿多彩。