我人生的前 28 年
Life
2016-03-03 23623字

每次别人看着我年少无知的脸和我做的工作的时候, 都会像狗仔队一样扒我的人生, 我一次又一次的去背我的人生告诉朋友, 告诉陌生人, 今天我写一下我自己 28 年的人生, 看到我的博客的同学以后见面不用再听我吹一遍牛了。

关于名字

王勇, 这个在中国大陆熟的不能再熟的名字了, 在公司大家都拿我的名字开刷, 什么王勇糖炒栗子啦, 王勇烤猪脚啦, 是的, 黑我的同学, 这些都是我的产业, 他们每天都在使用我的名字进行各种生意, 可惜我真的去买栗子和猪蹄的时候, 我真的好想对老板说: “嘿, 老板, 我也叫王勇, 你能不能给我打个折扣啊?” 至于为什么叫这么俗的名字? 传说当年我生下来一个星期都没有名字, 老爸取了一个星期都没有取出来, 最后奶奶就说就叫王勇吧… 所以我发誓以后我自己有孩子了, 一定给他(她)取一个不会和别人重名的名字, 我的宝贝女儿, 你长大不要怪你老爸啊, 我是为了避免你长大以后被各种同学黑 … ;)

十岁之前的童年生活

我和大多数 80 后这一代人过得没啥区别, 小时候各种调皮捣蛋, 天天和同学打架, 主要是打别人, 从幼儿园开始一直打到小学, 比我高一头的同学脸上一般都是我的爪印。

日常的生活都是 80 后满满的回忆, 早上吃着 5 毛钱的糯米饭去上学, 学校喝着 3 毛钱的冰水, 吃一些乱七八糟的玩意(搅搅糖, 口红棒棒糖), 吹着大大卷, 早上在学校丢火药球吓女同学 … 放学后就玩警察抓小偷的游戏满大街跑, 我最喜欢当小偷了, 因为我跑的最快, 看着警察在后面追不上你的感觉真是太爽了。

周末玩的就是一些无聊的个人游戏, 自己在家玩可以拼各种形状的玩具(那时候还没有钱买乐高这种高大上的玩具), 一个人拿着小车会在空中飘半天, 然后想象小汽车越过何种脑海里虚构的复杂地形(比如桌子、 沙发、 有折痕的床单), 长大才知道小时候一直在玩“增强现实”的高端游戏。

那时候中国的经济还是一般般的, 没有什么电脑也没什么互联网, 最丰富的媒体的就是电视(广告就像文本铺满屏幕, 而且还很多), 不像现在一样, 手机就是形形色色内心空虚人的第三只手, 那时候每天起来都是非常无聊的, 正是因为无聊, 所以时间很漫长, 周末生活也过得很有意思, 比如和小朋友打洋画, 把降落伞从三楼上扔下去, 观察伞兵一点一点落下去的过程感觉那时候的空气像棉花一样, 直到看不到以后就快速跑下楼再来一次。

小的时候, 放学后大人能带出去兜一圈放风, 吃点烧烤, 买瓶汽水喝, 周末走到河边买一个人形的雪糕就已经非常幸福了, 不会要求大人买什么玩具, 早餐钱剩下 5 毛一块的在学校门口买一个夜光机器人就已经非常满足了, 最美好的时候就是过年的时候一家人坐在一起好好吃一顿团圆饭, 大人们唠唠叨叨说一些我似懂非懂的话(那时真幸福, 居然听不懂)看春晚, 其实春晚也看不懂, 唯一的印象就是好多糖和瓜子, 然后一家人坐在一起比较热闹, 好的话过年那几天大人会给 10 块去公园路买一个玩具(变形金刚、 各种各样的枪)。

玩具其实最多的还是小汽车和各种小机器人, 记得小时候家里面做生意, 有一种零食里面会带一个小兵, 为了凑足一个部队, 把 30 多包零食都打开, 怕大人知道, 就把零食全部倒进书包里, 最后也忘记那些零食哪里去了(反正我没有吃, 可能某个给我洗书包的家人妥善处理那些零食的后事了吧)。

那时候的电视节目也比较少, 除了大家都会看的西游记外就是各种动画片, 为了度过无聊的周末(现在的小朋友周末都好幸福, 各种玩), 就守在家里面看动画片, 最佳看动画片的方法就是拿着铅笔把电视报的所有动画节目全部按照时间顺序圈出来, 然后就按照时间线切换台, 这样可以避免来回切台的时间也比较容易有延续性, 幸福的苦恼时有时候两个都很喜欢的动画片会前后有重叠, 至于内容嘛, 和大多数 80 后一样, 就是圣斗士星矢、 变形金刚、 叮当猫啊, 最喜欢的还是一个叫做笨笨的黄色车, 小时候看过的最高科技的动画片就是星际迷航, 那时候还不知道什么名字, 只知道有一个圆饼样子的奇怪飞船, 看过最高科技的电视剧就是霹雳游侠和 Back to the Future。

十岁之前的人生就这么懵懵懂懂的过去了, 和大多数同龄人没啥区别

十八岁之前的人生

十岁那年去了河南, 为啥去那么远的地方生活? 因为从小父母就离婚了(我悲催的生活在一个离婚世家, 一家三代都离婚), 从小到大都是生活在家庭暴力的环境中, 一般来说每周都会被打一次, 打习惯了也成铜墙铁壁了, 当然也锻炼了自己好多打别人的技巧, 奶奶比较关心我, 每次问我腿上怎么了, 我都说自己在地上摔的(没有必要告诉她是被打的, 因为那只会带来更多我无法干预的家庭暴力, 多一事不如少一事)。

本来准备在这种家庭下, 就这样混下去, 和大多数人一样读书, 打架, 混日子, 反正大家都是这样过的, 大人的世界不论争吵还是被打, 随他们去吧, 反正我个人太渺小, 除了逆来顺受, 一个人出去玩, 该被打的事该来的一件都不会少, 所以也不太在意这些。 直到有一天被老爸用啤酒瓶砸了, 哎, 还是赶紧走吧, 要不早晚要被他打死的, 所以从小到大, 父母在我心中就是两个名词以外没有任何意义, 每当看到很多同学晒爸爸妈妈的时候, 我心中一点涟漪都没有, 爸爸妈妈是什么? 能吃吗? 一切都只能靠自己。

所以跟着姑姑来到了河南, 管他呢, 当时没想那么多, 反正生活再糟糕也不会糟糕到哪里去, 第一次来到河南, 真的好兴奋, 十岁之前都生活在城市中心, 周围的景物都是群山, 城市小巷, 第一次来到农村, 第一次来到一望无垠的平原, 真是爽啊, 从来没有看到那么多韭菜(后来知道那是小麦, 囧), 第一次可以吹刮几十公里的风, 而不是城市小风, 真的很爽, 一切都是那么新奇, 感觉永远都跑不到尽头, 去河南时带的天皇巨星和舞蹈天使第一天玩的时候就被踩坏了(以后才知道那是我将来 8 年唯一的玩具, 就这么悲催的在第一天玩坏了)。

去河南的时候刚好赶上香港回归前夕, 本来准备看三个月动画片和电视的, 每天看到的时候都是邓爷爷去世的画面, 那叫一个郁闷啊(以后也习惯了, 如果我自己想要啥之前, 老天一定不会给我那样美好的东西的)。 然后就在河南开始上小学和中学, 在河南学会了骑自行车, 学会了吸农村的清新空气, 学会了下河摸鱼, 学会了在泥堆里摸爬滚打, 学会了放学后要给大人烧火做饭, 去地里干活, 学会了当城市学生还在被窝里面的时候, 农村的小孩要 4 点 30 起床骑行几十公里自行车去学校上早自习。

当然也丢掉很多东西, 比如很少打架了, 至少频率少了很多, 倒不是因为自己懂事很多, 而是作为一个南方人个子就要比北方人矮一头, 不论从个头和力量上来看都差距太悬殊了, 从小打架的人自然明白打不过就不要逞强, 所以在河南就很少打架了, 也很少打得过别人了。

北方的生活过的还很朴实的, 从十岁到十八岁大部分最美好的时间都是在学校度过的, 家里面有姐姐, 弟弟, 妹妹, 其实是姑姑家, 一个远离父母的小孩异走他乡其实没什么盟友的, 同学们不会太尊重你, 家里面人也不会太瞧得起你, 没啥地位, 更不会有疼你的人围着你转, 你不要给家里面惹事就行了, 在外面打架也不要回家说一个字, 除了被鄙视和批评外, 不会像真正关心你的人说你有没有受伤什么的。

那时唯一让自己忘却这一切的事情就是努力学习, 从小学到中学都一直是学霸模式, 很少跌出年级前三(班级第二)吧, 除了有一段时间脑子发昏了不想学, 只要表现好, 老师其实就是 8 年来唯一让自己感觉到温暖的地方吧, 至少有人重视你(不管他们是真正关心你, 还是假装因为你是好学生能给他们争光什么的)。 那时候很多同学都是非常讨厌学习的, 别人都是作业做不完, 我还主动问老师要卷子和参考书来做题, 所以其实在学校来说除了会被当成学习好的以外, 也没有什么真心朋友, 因为你的学习太好了(别人年底都是发一张奖状, 你一个人就领了 8 张), 家里面有一面墙贴了 30 多张奖状, 每次都当做家里面的形象墙炫耀给外人以外, 所以没有人愿意跟你走太近自讨没趣。 反正也没什么, 一个人就一个人呗, 除了学习还能干啥? 没啥可干, 其实那时候学习好真的不是因为我愿意学, 实在是没人有愿意和你玩, 又不想城市那样那么多玩具, 除了学习真的没有什么人生乐趣了。

就这样, 学霸模式开启, 从小学到中学, 到县里面最好的高中, 小学和初中都是离家很近, 高中要住校, 上了高中时第一次一个月回家一次的生活, 开始还不习惯, 后来还是觉得很爽的, 一个人多清静啊, 还可以傻乐呢。 高一才去的第一个月就把一学期的数学书看完了, 自学所有数学原理, 题也做完了, 反而有小小的失落, 高中的东西也没什么难的, 就比初三学的多一点点, 然后是物理和化学也很快学习完了。 当同学们还在一门门的上高一的课程的时候, 我自己在看高二高三的东西, 一年下来三年该读的书都读的差不多了, 人生也没啥乐趣了, 上课老师讲的也是我都会得东西, 数学什么的, 很 easy 在 140 分以上。 所以从那时候就去书店借各种乱七八糟的书(小说, 文学名著, 人物传记)看, 老师一开始还为难我让我站起来回答问题, 最后发现虽然上课不听讲, 但是都回答正确, 最后老师们都达成默契了不要自讨没趣, 也再也不会有老师叫我起来回答问题了。 那时候还是班上班长(但是真的人缘很差, 其实班里面也管的一塌糊涂), 本来就这样, 我学我的, 大家学大家的, 老师依旧上课, 也没什么不好, 但是哪知道那年家里教学费比较困难, 同学们居然给我搞了煽情的捐款活动, 从小到大就是一个要强的小孩, 从来不想求别人, 这么一来把我彻底逼到没法混下去了, 一气之下再也没去学校上课了, 依然是一个月回家一次, 但是去县里也是在住的地方看书, 或者去书店呆一整天, 书店里面的书比学校的好看多了, 看了《钢铁是怎么炼成的》, 免不了俗看了大多数文学名著, 自己慢慢的也有了很多独立思想, 发现了以前真的是死读书, 做那么多题干嘛? 题海战术不但达不到强化知识的目的, 反而整个学校(后来发现是整个中国)老师和学生都在玩猫和老鼠的游戏, 一道最朴素的数学原理本来就是那么简单, 只要懂了以后长大就可能用的上, 非要把数学题做的像八股文一样, 要去揣摩各种场景和文字表达细节, 大多数学生完全是被老师玩死的, 英文课每天都让学生像大学教授那样研究语法和词法, 但是 99% 的学生连流利的英文都说不出来, 后面看到美剧才知道英文从来都不会像学校教的那样使用。

那时候最流行的歌手是阿杜, 最有代表性的文学是韩寒(就是你们现在看到的那个赛车手)的《三重门》, 读了太多真正有观点的书籍, 真的感觉人生不应该留在学校里面等死, 反正我不知道学这些没用的东西以后真的踏入社会能干啥? 慢慢的, 原来从单纯的学习为了收到老师的表扬, 为了所谓虚伪的分数以外, 我到了另外一个极端, 彻底不再学习学校任何课本, 也不再参加学校的任何考试, 反正我也不去学校, 也没有在外面打架(依然打不赢), 没惹什么事, 老师就当我是透明人了, 学校也没有找到开除我的借口, 就这样你情我愿的度过了半年, 那时候青春期超级叛逆, 平平安安的过着大多数打架学生们向往的生活, 想去学校就去, 不想去就不去, 反正也没人关心, 打电话给爸妈? 我简直对这一招免疫。

本来就准备高中三年的后一半也就这样在书店泡下去的, 这时候亲妈找到河南来了, 让我回老家学习, 要回去就回去呗, 反正我在河南吃馒头也吃烦了, 回到老家继续读高中, 依然过的是三不少年的生活(不听课, 不上学, 不参加考试)的生活, 家里面都以为我朝九晚五的出去是去学校, 谁知我在市里面最大的书店过了一年半, 那时候我涉猎的书籍更加广泛了, 除了流行的文学名著外, 我读了很多非主流的书籍, 比如普鲁斯特的《追忆似水年华》200 多万字的著作, 意识流的写作风格影响我多年, 法布尔的《昆虫记》十卷, 达尔文的《物种起源》, 尼采的哲学全集…市里面的书店比河南的书店大多了, 几乎所有的书籍你都可以读到, 所有伟人的传记我都读了个遍, 从居里夫人, 爱因斯坦到比尔盖茨…我很享受我高中 2 年的生活都是在书店里面泡着长大的, 文学, 哲学, 数学, 生物, 科幻, 各种非主流小说, 都读了一遍, 家里面买了几千块的书, 堆了满满一墙, 小时候钱都用于买玩具和打游戏机了, 长大 90% 的钱都用于买书了。

那时候听音乐, 最喜欢听一些有启蒙的音乐, 比如齐柏林飞船、 涅槃乐队, 老鹰乐队, 卡百利 … 最喜欢摇滚和民谣, 最喜欢的歌手就是 Bob Dylan 和 Neil Young, 感觉一个人能够作为世界上特立独行也是非常过瘾的, 不管这个世界多么黑暗肮脏, 但是一个人能够坚持自己喜欢的, 讨厌自己不喜欢的, 虽然过得很孤僻, 但是过得真实, 我一个人穿着卫衣在书店里面一呆一天, 在书中体验整个世界的生活过得非常充实, 那种一个人的生活的感觉只有真正热爱孤独的人才能体会 …

高中的三年一晃就过去了, 马上就要达到中国所有“莘莘学子”面临的高考独木桥, 多少人点灯复习卷子, 把自己的人生交给桌子上那一摞叫做“荒唐”的考题上, 有多少中国人抱着我上中学就好了, 我上了高中就懂事了, 我上大学就自由了, 所以高考是中国社会所有一连串谎言里面第一个, 也是最荒谬的的谎言, 高富帅的子弟期望高考完了就可以离开大人到另外一个城市鬼混了, 而穷人家的孩子期望考一个好的大学然后以后的人生就可以登上巅峰了, 变成高富帅那样, 过去十几年贫穷家庭麻痹自己, 能考上好大学人生机会转折了, 而真正浪费了 9 年时间学习进入的大学怎么样了? 还不是该玩玩该咋地咋地, 有时候真的可怜那些拼命学习的考试机器(也包括从前的我), 学习那么多没用的考题和分数有什么用呢? 最终来整个社会只有你自己相信分数能改变一切, 其实真的踏入社会后, 你会发现你作为地球上几十亿人的一部分, 你就像蚁群里面的一个小小的蚂蚁, 你没有钱, 没有地位, 没有虚伪的物质的一切, 你什么都不是, 没有人认识你, 我可怜学习机器的地方是, 他们要比那些学校混混花更多的时间看透这个世界, 你看多少学霸怎么在社会上衰落的, 就像现在流行的一句话: 长大以后, 学习好的是给学习差的打工的, 其实并不是这些学习好的不聪明, 他们非常聪明, 但是他们的聪明是被这个荒唐的社会骗了而已, 而他们自己麻痹自己认为分数就是银弹, 能解决任何问题。

中国教育最大的失败在于他们没有给这些未成年人看到真实残酷的社会, 他们没有教在社会上生存最重要的东西: 就是跌到以后微笑爬起来, 人在社会上最重要的就是你每天都会面对痛苦的事情, 你不喜欢的事情, 不顺心的事情, 最起码在你能力还不能支撑你个人理想的时候, 你要怎么去面对你个人, 你的家人还有这个操蛋的社会? 这才是学校最应该教的, 但是学校教的是什么? 教的是社会主义, 教的是我们生活在一个无比美好的制度里面, 我们的将来就像乌托邦世界那样光明和幸福。 为什么会有那么多学校好的以后混的那么差? 那么多好人, 保持自己良知一无钱二无背景的人活得那么惨? 因为他们在真正面对社会的第一天, 他(她)梦幻的心理落差太大了, 到达自己那颗还不够足够坚强的心脏能够平静的接受这一切, 他们看到的社会不是什么学习成绩, 不是什么公平, 不是努力就能成功, 恰恰相反, 学校虚伪教的这些东西(还有一大堆拿着学生无知善良刷自己成绩的老师们)是他们改变自己生活最大的障碍, 他们发现这么多年所学的不过是谎言, 一个人走下去是要有信念的, 当这些单纯的生命发现谎言时, 首先打败他们自己的就是谎言和被谎言培养的他们自己, 他们脆弱到社会都不用动手, 他们自己的信念, 他们自己的能力, 他们自己相信的一切就把他们打倒了, 很多人看透谎言以后就破罐子破摔, 只有少数人奋起直追, 开始自己的打工之旅, 给老板打工, 给银行打工, 给政府打工, 给一切债务和家庭打工, 终老一生, 80 后那些年轻时的理想(当科学家, 当医生, 当雷锋)也只是幼稚的回忆罢了, 有多少人真正为了自己的理想有骨气的面对这个肮脏得想说脏话的社会?

那么多年的摸爬滚打, 我高中时候就看透了这些, 家人一直以为我是一个乖小孩, 学霸, 成绩名列前茅, 上什么清华北大不在话下, 以后大家都可以指靠我了, 甚至那时候围过来好多亲戚, 给我出谋划策, 真是好生幸福啊, 这么多人关心, 对于我这颗十几年冷漠的心还真的有点不真实的让我不习惯呢。 可惜, 老天还是有良心的, 不给这些人太多幻想, 当他们知道我几年从来没有去过学校, 哪怕参加考过一场试, 当大家都在忙高考的时候, 我依然在书店里面淡定的看着书, 学费一直交, 考场里面有一个空着的位置, 大家都以为一定是哪个悲催的人这几天生病不能考试的, 当同学们都在幸灾乐祸的时候, 我一个人还在书店看但丁的《神曲》, 哎, 真的浪费老妈给我喝的那些补品啊… 当这些人的巴结梦想破碎以后, 他们的真实面目就如同这个残酷的社会一样丑陋, 大家一致的离我远远的, 并各种预言我以后就是一个小混混, 好好的找点事做, 不要变成地痞流氓去麻烦他们, 当然也最好不要去找他们, 因为他们不喜欢穷光蛋。

还好我从小到大都是这么淡定, 没有对这些虚伪的, 短暂的幸福报任何不切实际的幻想, 所以那几天就像风一样过去了, 家里人要死要活的让我再读一年, 我记得那几天我心情很烦, 3 年的书店读书幸福生活就这样过去了, 等着身份证到 18 岁好出去混, 在这之前只能在家听他们唠叨, 因为唯一出去的借口(去学校)现在都没有了, 郁闷之极。 一个冬天的早上的天, 天气有点干流了鼻血, 干脆吃一瓶高血压药, 加上一大堆乱七八糟的药全部一起吞掉, 就躺在床上, 等着自己的生命流逝掉, 睡着之前还想着一会就回上演电视里面那种悲催的丧事了, 然后街坊邻居这一个月都可以好好拿我这个默默无闻的人当做饭前饭后谈资: 你看隔壁有个小孩因为高考自杀了, 然后各种虚情假意的叹气… 就像我前面说的, 每当我很想做一件事情的时候, 老天都会为难我, 晚上起床的时候我以为我自己到了天堂, 看到枕头边的鼻血发现自己只是睡着了, 鼻血也不流了, 哎, 坑爹的假药, 专治它自己不擅长的病… 从那以后家人也不逼我了, 我开始了半年时间的自学…

上学的时候自己数学和生物成绩最好, 还拿过奥赛奖, 理智地想了想, 数学再牛逼怎样? 大学还有好多高深的数学没学呢, 而且像数学家那样过一生, 在中国这个社会还是算了, 真正的数学家除了过梵高那样潦倒的生活也没啥劲, 生物呢, 那么多器材, 那么多研究, 实验室都是需要钱才能玩得转。 有啥不花什么钱又能考自己的努力存活下去的呢? 看了身边那台赛扬笔记本, 就它了, 我只用厚脸皮去书店看书, 有电就可以活下去, 那时候自己除了会装系统折腾 Windows XP 以外狗屁不会, 真正像电视剧那些黑客凭着自己高超的技术行走天下? 那时的我还是小屁孩一个…

18 岁到程序生涯

原来有一个幼稚的想法, 去什么北大青鸟学一下, 电视上不是天天打广告嘛? 最后还是没去成, 我生性高傲, 听了一下他们的课程列表, 狗屁课程, 这些我在书摊上买几本电脑迷和程序员杂志都可以学到, 上天保佑他们几万一年的学费让家人也彻底打消了让我去的念头。 怎么办啊, 啥都不懂, 自学呗…

先买了一本清华大学《VB 程序设计》, 看到一半以后, 感觉就是拖动一个控件到窗口里面, 双击控件, 然后写一些代码片段, 然后最后运行一下向导, 程序就运行起来了, 一个有窗口, 有按钮的程序。 什么? 这就是写程序, 这不是玩过家家吗? 它怎么运行起来的? 这个窗口怎么画出来的, 启动这个程序都发生了什么, 我翻到了一半以后实在没有耐心了, 整本书都是讲, 拖一下控件, 点击控件, 填写事件代码, 然后就完了… 心中直接告诉我, 这不是我想学的东西, 看了一半就把那本 VB 的书丢到一边了…

那就学习一些真正高深的吧, 我首先把全英文的《C++完全参考手册》读完了, 最开始英文很差, 拿着金山词霸一个单词一个单词的从书里面手动敲到金山词霸里面看看单词是什么意思, 第一天只能看懂一段话, 第一周后一天能看一页了, 一个月以后一天能看十几页, 磨了 2 个月把 C++从最基本的语法, 面向对象, 多态到后面的 STL 库过了一遍, 自己第一个程序就是用了 C++ 写了一个日历…

后面又贪心的折腾了 Intel X86 汇编手册, 拿着 nasm 一步一步的敲, 理解计算机的最基本细节, 读了《计算机文化》了解的整个发展历史和硬件结构, 然后买了一张 DVD 玩了 RedHat 6.0 和一大批非主流的 Linux 发行版, 那时候装 RedHat 还要三张光盘, 经常容易安装挂, 但是第一次看到 gnome 和 kde 的时候感觉, wow, 世界上还有和 Windows XP 不一样的系统, 而且还能把硬件给跑起来, 太牛逼了… 但是最后也没啥用, 我还是一个没有读大学在外面混的人, 还靠着家人支撑着学习这些计算机知识, 但是 C++, 汇编, Linux 发行版除了让我开眼界外能吃吗?

日子就这样一天一天混过去了, 不知道未来干啥, 终于有一天我的身份证上让我正式进入 17.5 岁, 我想自己终于长大了, 借了家人几千块就自己座火车去北京找工作了, 凭着一腔热血和不服输的劲, 相信只要自己努力就可以活下去。

事实再一次证明, too young too simple, 我一到北京就知道几千块就不是钱, 我最多只能在北京撑半个月, 找了一个地下室单间住着, 每天 50, 算上吃饭和去网吧找北京工作公司, 一天花费 100 ~ 200, 不到一个月就会挂在北京。 我必须在一个月内找到工作, 那时候最困难的就是我的身份证没有满 18 岁, 网吧都去不成, 北京城那么大我怎么找那些公司? 最后想了办法, 就在网吧门口堵着, 看着面善的人, 给他 20 块然他帮我办一张卡, 我拿着卡直接去上机了, 只要别人检查的时候自信一点, 一般人都会想你既然都有卡即使很小也应该满 18 岁了, 就这样, 当时一进网吧就是一夜, 搜索北京各种安全公司的地址和招聘要求(我自我感觉还是有黑客精神的), 但是同时也知道自己技术还是处于稀烂的境地, 抱着去这些公司打杂的想法一个公司一个公司的跑, 很多安全公司的面试官非常讨厌这种没有预约毛遂自荐的, 而且最讨厌我这种嬉皮士, 看着就像街头混混的, 所以一般就直接轰走了, 少数几个公司的面试官虽然知道最后结局还是会把我轰走, 还是好心的让我做一下试题, 给我客套的聊一下, 让我知难而退(其实现在自己创业特别能理解那些面试官们, 他们一眼就能看穿你, 所以如果以后有那些经历跟我一样的人看到我写的这些文字, 千万不要觉得你放低姿态, 一副愿意为牛为马的想法就会打动面试官, 企业不会因为你不要工资就不会付出成本的, 企业任何地方都是成本, 即使他们让你进去不搭理你, 让你自身自灭, 你影响团队士气本身也是一种成本)。

在瞎折腾了半个月以后, 随着身上的银两越来越少, 而工作的事情已经被拒了 10 多家以后, 才踏上北京的那股豪情万丈早已被打回原形。 好汉不吃眼前亏, 赶紧买票座了两天两夜又回到家, 第一次的社会实践就这么狼狈的结束了 …

回到家以后, 家人想的远远比我成熟, 都说回来就好, 出去折腾一圈没事就好。 回来找一份安稳的工作, 好好过日子比什么都重要。

做什么呢? 什么都不行, 就我哪点计算机知识去电脑城打工还行, 干点别的就不用想了。 我那是深知如果自己还要有出息的话, 除了 C++, 汇编以外一定要学一样能赚钱的技能, 否则哪里都玩不转。 但是相对于我自己的理想外, 更重要的是先要找一份工作自食其力的活下去。 但是哪里有人会要我这样一个青涩的什么都不懂的小孩呢?

最后我想, 我高中 3 年一直读书的那家书店–西南风, 经常就是几百或者上千的书往家里买, 书店的经理都认识我好几年了, 觉得我一定是计算机方面的厉害学生。 而且为了我这个看似不正常但非常优质的客户经常自己去其他地方调书来让我买, 虽然不知道我名字但是已经非常熟悉我啦, 我如果去和他说来他们书店打工, 他一定不会拒绝。

果不其然, 当我这次是去打工而不是买书的身份去的时候, 他一口就答应了, 说第二天就可以来上班了。 我说我会负责把你书店中所有关于科技的书都整理的更上一个台阶, 其实换了谁都会答应, 一个月工资 150 元, 这种工资根本就不会有人来应聘, 只有我这种傻瓜才会来。 (我第一份工资就 150/月, 还生活的很好, 反而是现在创业以后看过太多大学生对 “理想本身太理想化” 了, 第一份工作就要超高薪水, 两年后就业界大牛, 5 年后就登上人生巅峰了, 现在的人啊, 不知道拿一份不符合自己能力的薪水是害自己而不是帮助自己)。

书店的工作倒也清闲, 一天只用上半天, 很容易就混过去了, 剩下半天就可以好好学习了, 而且作为书店员工, 可以免费借书回家看, 买书半价。 从上次北京之行, 光靠拼劲是不行的, 而且想要学习高深的技术, 没个几年的时间不用想了, 得先找一个比较容易的技术而且能赚钱养活自己的技术。 最后想了想, 那时候 Symbian 和 J2ME 游戏是最热的行业, 为什么不学习 Java 开发呢, 手机游戏看着应该很容做做到。 (因为和我差不多经历的 John Carmack 都能做到, 为什么我做不到? )

用了一年的时间, 上班就在书店整理书, 休息时间也可以看一会书, 下班就学习《Java 核心编程》 和上网学习 J2ME 编程, 那时候没有完全独立做过一个完整的项目, 也不会作图, 只好先在 PC 上玩游戏, 然后用视频软件把屏幕录下来, 然后再把录下来的截图, 用 PS 橡皮擦一点一点顺着边缘擦干净(那时候不知道怎么抠图), 然后缩小切成一帧一帧的图片, 因为缩小 10 倍以后, 图片的边缘已经非常平滑了, 所以在手机画面特别好, 一个优秀的 Sprite 是需要 360 度的, 为了得到这些角度, 我都把游戏设置成简单模式, 别人打飞行游戏都是消灭敌人, 我打游戏从来都不消灭这些敌人, 都是绕着敌人转圈, 这样我的视频软件机会吧敌人 360 度的效果全部录制下来好让我用橡皮擦擦掉, 就这样, 擦了半个月, 我要的所有 Sprite 的全角度帧的素材都准备好了。 接下来进入漫长的网上临摹别人源代码的时光, 因为 J2ME 是一个新兴行业, 没有成熟的教程, 从动画, 事件处理, 碰撞检测, 多线程处理, 对象池等必备技术都要从很多 demo 源码中一点一点吸收, 融会贯通到自己完全能够灵活运用为止(所以, 读到这里的观众们, 如果你真的要学技术, 一定要静下心来思考问题, 一遍不会读两遍, 读 N 遍, 直到你自己懂了为止, 不要期望在论坛跪求高手送到你嘴边的解决方案, 世界上没有免费的午餐)。

在书店的一年也收获了爱情, 遇到了当时的女朋友(现在的老婆大人), 在人生中最困难的几年都是她无条件的支持着我(在所有人都不相信你的时候, 有一个人即使不知道未来如何, 还是会依然支持你的那个人你一定要珍惜)。 我那时候每天的动力就是, 要给她美好的生活, 让她过得很幸福(命运真的喜欢捉弄人, 我那时年少轻狂的承诺居然要我花人生十年的时间才基本实现了), 我还记得一天凌晨, 我的第一款飞行射击游戏的飞机能够持续发子弹的时候, 我兴奋的告诉我老婆, 就等着我给你的幸福的生活 (从第一款能够赚钱养家的游戏到真正的进入技术世界还有几年的时间, 其实人生就是这样, 如果时光回滚到 10 年前, 我还会那样做吗? 会的, 人年轻最重要的是要有面对人生的勇气, 能力和经验都是通过后天培养的, 唯独勇气不抓住就稍纵即逝)。

在无数个代码之夜后, 两个月后我的第一款飞行游戏算是完成了, 从切图, 写代码, 设计关卡都是自己一个人独立完成的, 虽然可玩性和专业游戏相比还差很远, 但是里面已经有一些不错的想法, 比如当时设计地方的追踪导弹的时候, 遇到一个算法问题, 如果导弹跟踪的太快了, 玩家根本就反应不过来, 会非常受挫打不下去了, 如果跟踪的太慢了, 飞机从导弹边上快速过去导弹没有反应, 玩家就会觉得游戏设计的非常傻, 因为没什么挑战性放弃游戏。 那应该怎么做呢? 面对我这种没有经过正规计算机专业算法培训的人, 想要那时候通过碉堡的算法达到极高可玩性几乎是不现实的。 一定要想其他办法, 因为原来学生物对蝙蝠的超声波原理比较了解, 蝙蝠的可见光视力非常差和瞎子差不多, 蝙蝠完全是靠超声波的反射来定位整个世界, 蝙蝠一般都是在低频超声波进行飞行, 如果一旦遇到猎物以后就会发送更高频率的超声波来确定猎物的精确位置, 离猎物的距离越近发送超声波的频率就会越高, 直到吃到猎物。 我就想我的追踪导弹能否借用蝙蝠的这种方法呢? 平常就毫无目的的飞行着, 诱骗玩家以为导弹 AI 很弱智, 一旦玩家挑衅性的靠近, 马上就会高频率的变聪明追着玩家跑, 这样平时距离远的时候可以用占用 CPU 很小的算法跑着, 只有在距离很近时才加大计算量, 最后一个非常简单的三角定位函数, 只需要改变一下时间轴上的频率关系就在手机上这种计算能力很小的机器上展现出让游戏可玩性大大增强的算法, 而这个算法不需要我们具有高深的数学功底, 只需要最简单的三角函数即可。 (这件事在以后找工作肯定是面试加分项, 但是更为重要的是, 这十年的经验告诉我, 现实中遇到的很多编程工作并不像很多书中恐吓的那样需要很高深的技术, 有时候你只需要把你的聪明才智灵活的绕过看似不能成功的技术难题, 换一种视角去看问题, 你会发现解决思路会如此简单优雅。 用尽量简单的方式解决困难的难题不但影响未来十年的编程生涯, 直到今天的创业之路依然是非常受用的)。

顺便吐槽一下中国的计算机教育, 其实编程领域真的是非常简单直接的一个行业, 任何一个有高中教育背景的人通过培训都可以轻松掌握。 但是国内的很多计算机书籍的教学方式是: 把一个非常简单的事情讲解的非常复杂, 最好是让学生头晕最好, 以体现出自己的技术高深。 而国外的很多科学家和编程大牛非常善于把一个非常复杂的东西讲的通俗易懂, 傻瓜一听都会了。 所以编程更多是一项脑力运动, 思路清晰和大道至简才是一个人是否能够在这个领域有造诣的关键。

就这样, 一个无知的少年再次鼓起勇气去追寻自己的梦想。 不一样的是: 这次我终于满 18 岁了, 带着自己的作品, 1500 块, 还有义无反顾的追寻我的女朋友。 我们来到了成都, 这个我看着要比北京更容易找到工作的地方, 而且当时成都有几十家手机游戏开发厂商。

到了成都, 1000 块找到一个一室一厅, 剩下的钱要保证这个月的生活和最重要的事情 – 找到工作, 这次无论如何要在外面能够生存下去, 不能再找家里面要钱了。 我在成都面试的第一家就是当时最大的手游公司 – EA 旗下的 Gameloft, 我当时找到那家公司的时候, 面试官非常惊愕我怎么找到的? 其实只要善于使用 Google 语法, 很多东西都是可以被挖掘到的, 既然带着我的作品, 面试官还是给了一次机会, 我的蝙蝠算法赢得了技术面试官的尊敬, 但是当面试官问我为什么 18 岁出来闯而不是读大学? 从小坚强的我, 不知道为什么在那么一个冰冷的面试房间, 面对一个陌生人, 竟然对我的一生悲催的经历痛哭流涕, 最后结果可想而知面试官告诉我, 我很有天赋, 但是心理过不了关, 不能给我机会 (现在看来, 当时一个没有上大学的人能给一个 2 小时的面试机会已经非常好了, 我当时不能理解为什么技术 OK 不能去工作, 现在我明白了, 工作特别是在创业公司工作, 心理抗压能力绝对是比专业技术最为重要的一点, 没有坚强的心理能力, 面对困难机会放弃导致整个项目失败)。

第二家, 第三家, 一家一家的拒绝, 一个星期以后, 我死皮赖脸的堵到一家小型游戏公司的门口, 在别人上班不想看我简历的时候, 我说我有作品。 靠着我的作品, 我成功进入这家公司工作, 1300 元一个月。 Yes, 1300 元对于当时的我来说已经非常好的薪水了(虽然我是公司工资最低的人), 但是我不在乎, 只要能够靠自己养活自己就是很好的第一步。

我这种人在当时真的非常不适合在公司上班, 我相对于普通那种拿工资好好上班的人不一样, 我有太强的求知欲, 什么新的技术都想学, 而且性格又好强, 希望快速通过成绩来证明自己。 但是公司一直没有给项目机会, 只是让我自己熟悉代码(现在想起来真的是公司老板惜才, 知道天赋可以但是做不了项目的, 但还让我天天上班), 没有真实项目, 所以也会折腾一些其他的东西, 那时候最流行的就是 Ubuntu 操作系统, 这个操作系统比 Fedora 或其他的系统发展的快很多, 虽然不是很稳定, 但是 Ubuntu 为了让使用 Linux 能够快速流行, 做了大量的优化工作, 而且它那时候正在全球免费发送光盘的方式吸引了大量像我这样好奇的技术爱好者。

那时候通过 Ubuntu 折腾了从软件源、 字体、 驱动、 软件包等各种开源软件大大提升了我对计算机的理解, 原来很多在 Windows 平台封闭的东西, 我在 Ubuntu 上都能自己安装配置, 并学到大量在 Windows 上一辈子都无法接触到的系统构建技巧。

但是好景不长, 因为项目上一直没有发展, 我还做了一件蠢事, 在公司要求之外, 配了一把钥匙, 只为周末能用公司的电脑能够学到更多东西, 虽然大家都知道我只是学习, 但是还是被辞退了。

因为有了第一家公司的工作经验, 找第二家游戏开发公司的工作就相对容易的多(所以, 大学生一定要抓住你们美好的时光多去企业磨练, 公司看简历上的重点是你的工作经验和在学校外的能力, 学校里面不管表现多好, 企业都是一视同仁甚至是不看的), 在第二个游戏公司我开发了真正的手机游戏, 那时候手机的内存只有 800Kb, 就像给 DOS 开发程序一样, 所有的游戏场景的内容都要数着 byte 来写代码, 在第二家游戏公司成功开发了几款游戏(甚至比那些带着博士头衔的同事 3 倍的速度完成项目), 在公司因为我自己的年龄都被同事称为神奇小子。

在第二家公司工作的时间, 我接触到在编程领域第一次惊艳到我的东西 – Emacs, 在很多人看来不过是一个界面简陋的编辑器, 但其实 Emacs 是一个 36 年的产物, 从 Unix 时代一直流传过来, 它的生命周期甚至比 Windows 和 Linux 都要长很多。 就是这个从古老 Unix 时代延生至今的编辑器带入我进入了真正可以从技术和伦理上称为黑客文化的圈子。 在大学我们都只教 C++/Java 这些流行的编程语言或者工程语言(可以轻松找到工作), 导致我们认为只要是编程, 就只有 C++这一种解决方案, 所有的东西都是对象和设计模式。 而构建 Emacs 的 Elisp(Lisp 的一种变种)大大拓宽我对编程语言和构建程序的方法, 传统的程序几乎等同于 “数据格式” + “程序算法”, 在 Elisp 里面没有明确的数据和算法的界限, 所有的组件都是 List 这个最基本的元素来构建, 数据即算法, 算法即数据的编程理念以及 Lisp 独有的豪放的编程风格让我的编程世界观彻底颠覆了, 除了观念以外, 你可以在 EmacsWiki 上自由的查看全世界顶尖黑客为 Emacs 编写的插件源码和进化工作, 你可以从他们每天更新的插件代码中体会他们独特的编程世界观和高超的编程技巧…

那段时间, 我在 EmacsWiki , IRC、 邮件列表以及 Google 上收集所有顶尖 Emacs 黑客的配置和插件(包括很多 Google 语法爬下来的未公开 ftp 上的插件), 通过 1 年左右的学习(主要是阅读 Elisp 手册), 我已经把 Emacs 大多数功能都玩了一遍, Emacs 在我手中早已不是编辑器, 更是一个操作系统, 我除了用 Emacs 用于编程外, 所有我在计算机上需要完成的(上网, 邮件, 听音乐, 文件管理, irc 聊天等)都可以用键盘的方式来完成, 从那时到加入深度之前我都是不用鼠标的, 极高的编程效率和学习强度, 让我在 1 年内学到了以前很多年加在一起还多的计算机知识。

学习 Emacs 的快乐是经常可以在 IRC 和各种高手进行面对面的切磋, 在 IRC 里面学到的都是 Google 从来没法搜索到的知识, 因为世界顶尖黑客是通过 IRC 告诉你他们的思想和技巧, 在一个活跃的 IRC 频道, 这些知识很容易受到活跃的讨论淹没, 而且 IRC 聊天很能锻炼一个人并行思考的思维, 经常一个屏幕里面有好几条线在同时讨论, 你不但要快速的排除自己不感兴趣的话题, 还要和你真正感兴趣的话题继续聊下去, 那时候我自己写了一个英文补全插件, 我只需要打前几个字符就能快速补全英文单词, 就这样, 虽然我的英文各种语法错误, 但是几乎没有出现过拼写问题。 (所以我建议各位大学生, 如果真的要学习知识, 首先要做的就是静下心来和高手慢慢交流, 说出你真的不懂得地方, 不要怕被鄙视, 要学会尊重对方的情况下虚心学习, 像国内论坛那种伸手党, 跪求…之类的是永远都学不到知识的, 因为任何高手都不愿帮一颗浮躁的心)

每天早上起来的第一件事就是打开 EmacsWiki.org 的 changelog, 看看今天世界上有哪些黑客写了新的插件或代码片段。 当然那时候最喜欢的就是把自己写的插件分享出去刷 changelog … 那时候和几个日本人联合开发了后来被大家喜爱的 auto-complete 和 anything 插件, 我记得写 anything 插件的时候主要是 我, rubkitch 和另外一个开发者(他是我们仨中能力最差的, 我和 rubkitch 经常帮他重构代码, 过了几年他成为了著名插件 helm 的作者), 那时候最爽的就是三人离散式的进行协作开发, 我们没有用 git 或者分支管理, 就用最基本的 diff 和 wiki 进行协作, 互相帮对方提供代码改进意见和重构, 现在想起来真的好怀恋那种并肩作战的感觉, 而且大家互相不认识对方, 有的只是昵称和已经相互非常熟悉的代码风格 (现在很多国内的人始终不理解怎么做开源社区, 其实开源社区很简单, 只要大家都有兴趣, 任何形式和工具都是次要的)。

随着我的编程能力越来越强, 对 Linux 使用越来越熟练, 我对游戏工作本身的兴趣越来越低了, 一方面 J2ME 在当时是行业趋势(那时候还没有什么 iOS 和 Android), 钱景不错, 但是每个项目运用的知识都是雷同的, 一个一个项目除了提升工作经验外几乎学不到什么知识, 第二天天为了工作而打游戏(比如拿着作弊码和终极武器从第一关轰到最后一关, 除了爆炸效果外完全看不到怪, 只为体验这个游戏的关卡设计)导致我觉得这样下去大量的时间会浪费在“玩物丧志”上, 最后还是在选择离职, 虽然 Boss 极力挽留, 但是还是选择离开。 对游戏的厌恶其实最后也是我投身创建 Linux Deepin 的一个重要伏笔吧, 因为只有装 Linux 我才接触不到游戏, 不自暴自弃, Linux 是当时学习知识的强制限制。 就这样我又写了一年 Elisp 代码(大概 100 多款插件), 我的编程能力和视野已经相对于我才来成都的时候提升了太多, 但是最后还是因为没钱支撑下去, 选择去广州做服装生意。 (当时的想法很简单, 先赚钱后实现梦想)。

人生插曲, 离开我心爱的编程世界两年

当初去广州的时候, 想的很美好, 做生意赚到钱后, 在家安安心心的学习, 想怎么写代码就怎么写, 所有代码全部开源, 在自己学到东西的时候能够帮助别人就更开心和满足了(原来玩 Emacs 的时候最喜欢的就是突然有一天从地球另外一边的用户写一封热情洋溢的感谢信, 说你的一段代码简化了我的生活, 让我有更多时间陪家人, 那种感觉是别的任何东西都无法替代的, 我想也是世界上大多数开源作者在最艰难的时候坚持下去的唯一理由 …)

人生就是这样, 当你对一切充满美好憧憬的时候, 现实越残酷。 在广州的两年, 每天都是 2 点钟睡觉, 一早就起来了, 一个月只休息 1 天。 人前是老板, 人后是苦力, 是打杂的, 是赔笑的, 是一个比普通人更悲催的人 , 一个老板赚的钱可能会比别人多, 但是幸福真的要比普通人要少很多, 因为老板永远都是所有事情的最后承担者(现在经常看到很多人抱怨老板剥削大家, 其实大家不知道老板完全可以拿着自己的钱享受人生, 为什么他要拿钱给大家发工资, 还要在他状态最差的时候安慰大家, 听大家的抱怨? 他不是有病, 所以当你还给别人打工的时候多多向老板, 特别是好的老板学习, 心越大, 世界越大, 抱怨越多, 路越窄)。

体力上的累其实还好, 最痛苦的莫过于在工厂车间 100 分贝以上的环境下编程, 那真是对人是一种磨练, 原来写代码的时候太矫情, 非要环境绝对安静, 只要别人说一句话都嫌吵, 在当时那种一天只有至多 2 个小时的编程时间的情况下, 学习是一种太过于昂贵的东西, 所以不管机器声音多大, 我都能心无杂念的写下代码, 隆隆的机器声音仿佛是这个世界上最美妙的背景音乐, 让我忘记时间流逝的速度, 一行一行地让思绪从指尖流淌而过。 当然更痛苦的事情是, 在写代码时还要随时中断去修机器, 一开始都是悲催的节奏, 真的去检查机器的时候, 它们都不坏, 一旦坐下来机器马上就坏, 有一段时间甚至都放弃了, 感觉反正都写不下去就去打游戏好了, 一打一晚上。 堕落了很长时间, 天天打游戏, 那时的心理状况就是, 反正我写的代码都开源了, 也不赚钱, 那些重视开发人员的公司也不会知道车间中还有一个写代码的小子, 真的有时候对于当初那种先赚钱后实现梦想的想法越离越远, 每天早上起床后, 我只能告诉自己: 昨天写了一段代码, 解决了一个问题, 离明天的梦想就更近一步, 将来一定会变好的, 只是现在我需要耐心, 老天都是把机会给有准备的人, 机会之所有没有来, 是因为我准备的还不够好。

那时候我开始学习一种叫做 Haskell 的编程语言, 为什么会学习 Haskell? 因为在网上看到了台湾的顶尖黑客唐凤一己之力边学 Haskell 边写 Perl6 的编译器, 在整个 Perl 社区苦苦挣扎的时候, 一个中国人凭着过人的天赋让整个社区惊艳了一把。 我本人对 Perl 没啥情感, 反而觉得一个月能够做出编译器的 Haskell 产生了极大的兴趣。

当我第一天学习 Haskell 的时候, 简直把我自己震惊到了, 如果说 Emacs 是第一次开拓我编程的眼界, Haskell 就是彻底颠覆我对编程的最最基本的价值观。 比如说, 在 Haskell 是没有变量的, 我困惑了几个星期, 没有变量怎么保存状态啊? (后来知道, Haskell 的值都是不可写的, 模拟变量的方法就是在一个变量的内存标签中做写时创建新的内存地址, 对外输出变量的时间切片, 保证任何线程在写变量是不会产生计算机中的锁的问题, 也就函数式语言的无锁编程), 软件内存事务管理, 无限精度的数字, 递归表达式的表现力, 类型推导, 函数作为第一对象, 懒惰执行 … 如果说传统语言是小汽车, 每种语言都在比我车上的细节或者性能或者其他优点多么多么好的时候, Haskell 则是在另外一个空间的事物, 它根本就不用在路上行驶, 它就是飞艇, 它完完全全的颠覆了很多根深蒂固的编程概念和思维, 如果说 Lisp 教会了我穷尽任何可能性的意识流黑客编程风格, Haskell 则是用简洁的数学思维彻底颠覆我构建程序的基本逻辑和流程, 它强调的是一种用数学模型替代面向对象来映射真实世界的问题, 在 Haskell 里面, 所有的算法都是方法和组合, 唯一的区别就是有些函数是无副作用的(比如算法函数), 有些函数是有副作用的(比如 IO 操作), 它通过副作用的严格分离来保证软件工程在数学理论上的稳定性和正确性, 很多金融行业为了写出逻辑完美的原型, 都会选择 Haskell 或者 OCaml 这样的语言, 在 Haskell 社区里面有一个这样的笑话, 因为 GHC 编译器超级智能加上 Haskell 静态编译的强类型推导, 我们完全可以边喝啤酒边写代码, 只要过了 GHC 编译期的检查, 你的程序在运行时期就不会有错误 (这句话是真的, 因为 GHC 通过类型推导不但在编译期检查了最基本的类型错误, 甚至在运行时的分支逻辑都会提前排除), Haskell 程序输出了一种强编译期检查的哲学: 大多数开发人员是没有编译器聪明的, 所以 Haskell 完全不给编程人员做蠢事的机会(比如空指针这种问题就不存在)。

Haskell 因为一门超级严格的函数式语言, 在学院里面大受老师们的追捧, Haskell 的代码看上去就像一个一个数学公式, 没有中间变量, 把一个算法能够抽象到最高抽象的样子, 看着 Haskell 你就能一眼看懂代码的原理是什么, 而不用被各种中间变量和状态所分心。 也正是因为这样, 除了 Wiki 以外的学习资料就是各种 Paper, 看 Paper 学习要比其他语言学习要困难的多, 因为中间搀着太多严谨的数学推导, 即使代码真的很简单, 但是为了完全理解原理, 不得不天天硬啃各种数学定理和公式。

那时候, 想用 Haskell 做一个多媒体的 Emacs 出来(弥补 Emacs 不能多线程, 不能运行图形绘制来构建应用等), 就开始制作各种 Gtk+ 库的绑定以使 Haskell 能够进行图形化编程, 我记得那时候花了半个月把 Gtk+ 从 2.8 升级到 3.10, 写了一个 3 千行的 patch 就给 gtk2hs 的作者发过去了, 第二天作者拒绝了我的补丁, 说我的补丁太大了, 没法做 code review… 最后我又花了半个月时间把 3 千行代码拆成了 300 多个补丁, 有很多错误经常被 gtk2hs 的作者骂, 我就一遍又一遍的改, 有一段时间他都不想搭理我这个菜鸟了, 我就不厌其烦的给他发送补丁, 一共 300 个补丁, 最后他真的放弃了, 有一天他发邮件给我, 说这是仓库的 key, 你以后可以直接向仓库推送补丁了, 不再需要我的 review 了。 (过后的很多年很多学生都问我, 怎么参与一个开源社区? 是否有什么技巧? 我说你们都想多了, 参与开源社区最好也是最直接的方法就是像作者发送 patch 帮他解决问题, 而不是每天向别人的邮箱问很多愚蠢的问题, 发一遍不理就发第二遍, 直到作者最后接纳你为止)。

后面花了半年时间把 gtk+, vte, webkit, poppler, sourceview, imageview, gio, cairo 等应用程序开发所需的库全部绑定到 haskell 里面就开始编写我的下一代 Emacs 了。 中间花了 1 年时间的不间断的开发, 因为每天只能写两个小时的代码, 所以我经常在生意的路上想代码怎么写, 回家以后就马上实现, 就这样陆陆续续的完成了十几个应用的开发, 编程的能力和编程经验也活得了更大的突飞猛进, 知识也越发扎实, 看待编程不会再想原来一样: “我要变成顶尖高手, 我要当世界第一” 的愚蠢想法, 这两年学会了“天外有天”, 学会了“知道的越多, 懂得越少”, 很多事情都沉下来了, 不再着急, 耐心的做好每一步, 只要今天比昨天进步一点, 自己就很满足了, 长此以往心也平静了许多。

编程的能力成长有时候就和人的成长一样: 有欲望->浮躁的什么都学->坚持养成习惯->知道自己要的是什么->选择性学习->心平静下来, 一旦一个人达到“心如止水”的状态, 他离技术融会贯通的境界就越接近。

回首那段广州的两年多时间, 真的非常感谢我的人生经历了那么长时间的远离编程的过程, 之所以远离了编程, 懂事了很多, 被社会历练的更多, 在心理平静的时候抗压能力也强了很多倍(这段时间的积累为了后来的创业奠定了坚实的基础)。

虽然经历了人生难的的一段低谷时光, 赚了花不完的钱, 但是真的不知道以后的人生路怎么走? 有太多人和我想的一样, 先赚钱再成立自己的公司, 做自己想做的事情, 可是真实的现实是, 当你赚了很多钱的时候, 你丢失了你最宝贵的东西 – 时间, 你不再有时间做你自己喜欢的事情, 甚至连花钱的时间都没有, 最后自己除了变成一个赚钱机器外, 你离自己真正想做的渐行渐远… (所以真的想告诫各位, 钱这东西够花就行了, 千万不要为了这个虚伪的东西付出太多, 钱越多牺牲的越多, 不要最后连人性都输没了)。

也许印证了开源界“不折腾不生活”, 我放弃了自己的事业, 拿着我这两年的个人作品去寻找新的编程工作, 第一次尝试了我一直向往的 Google , 那时候像 Google 这种学霸公司, 高中毕业这种事情就是他们再惜才, 也会无情拒绝的, 甚至三个在开源社区有影响力的朋友写了推荐信也无济于事, 一封你的编程经验不适合 Google 而不了了之了。 后面找到了国内使用 Haskell 的一家香港公司 – Jane Street, 唯一感兴趣的就是我可以用我最喜欢的 Haksell 来编程, 但是最后一通英文电话直接让我郁闷了, 对方说整个公司全部用英文口语交流, 哎, 纵使有再强能力还是因为英文口语被拒。

无奈之下, 选择尝试在东莞的 YLMF, 那时候他们在做 YLMF Linux, 我把我会的简历投过去, 也去公司面试了, 结果和一直以来老天和我作对的节奏一样, 对方回答, 你会的 Emacs 和 Haskell 这些我们公司不需要, 我说我的自学能力很强, 任何一门语言一个月就搞定了, 但是于事无补, 还是被无情拒绝了。 此处不留爷, 自有留爷处…

在最艰苦的环境下默默修炼了两年, 换来的却是连续三次被拒, 我的人生怎么就那么命运多舛呢? 那段时间我在工厂里面默默呆着, 想不清楚为什么世界上那么多天才就这么被磨灭了? 我的伯乐在哪里? 甚至女朋友都快万念俱灰了…

就这样离过年越来越近, 我不知道我的未来在哪里, 我也不知道我坚持了 4 年多的开源情结应该该放在何处? 我有时候安慰我自己: 在中国做开源, 除了精神上有所安慰外, 甚至都没法生存下去! 这么多年回忆起来, 我之所选择开源这个事业, 其实并不是我是一个有高级情操的人, 我也不是什么伟人, 可能正是我这一二十年处于各种悲催和苦难中, 我特别烦争吵和勾心斗角, 所以就一直想做一些让世界更美好的东西, 一开始的选择计算机到做开源, 开源让我感觉到从未有过的平静和幸福, 开源就像鸦片一样, 当别人都在过“正常的赚钱”生活, 我每分享一行代码我都感觉前所有的充满力量, 即使能够感同身受的只有我一个人。

人在什么时候都不要放弃希望, 老天总是会眷顾你的。 就在我万念俱灰的时候, 我在 Soldoit 上看到 Deepin 团队在招聘一个全职开发者的新闻, 我果断的把我的简历投递过去了, 这次我没有报任何希望, 只是死马当活马医, 管他呢, 何必这么逼自己呢? 过几天 Hiweed 给我回了一封邮件让我去武汉面试, 我收拾了一下行李就去武汉接受面试, 我还记得冬天的一个早晨走进还是比较狭小的办公室, 张磊大哥面试的我, 我就简单的回答了各种问题, 最后幸运的通过面试了, 我那时还接到远在北京的 Deepin 的电话, 我不知道电话那头的人是谁, 我只知道可能是另外一个面试官吧, 他 blabla 的说了好多, 说年后入职来武汉上班吧。 (后面第一次见面的时候我记得 Deepin 老大也 blabla 的说了好多, 最后知道那叫一个专业名词:“忽悠”)。

那年冬天过了一个很简单的年, 然后和 5 年长跑的女朋友 10 天闪电结婚, 不知道将来的生活如何, 先结婚给老婆一个交代吧。 (2010 年的那个冬天可能是我踏入创业这个坑最幸福的最轻松的一个冬天了), 一场艰苦卓越的创业之路就此展开…

Deepin Linux 的创业之旅

2011 年的春天第一次来到武汉, 一切都是那么新鲜, 新的开始, 新的旅途。 做 Linux 操作系统, 这个对于一个玩了 5 年的 Linux 玩家再熟悉不过。 可惜的是那时候 Deepin 操作系统还只是和大多数 Linux 发行版一样, 修改一下预装软件和配置, 配上一个好看的主题而已, 真正自己的开发内容也没有什么。 才来的几个月 Deepin 老大本身也没有想好怎么开发, 先让我做了几个月的 Android 开发, 原来有 3 年的 Java 开发经验, 上手 Android 也快, 两个月做了一个新闻阅读器, 只是真的比较无聊, Android 开发一点挑战性都没有, 和原来的手机游戏没什么两样, 那时候 Android 是全世界最为火热的时候, 在我看来只是有行业热度和钱景, 但是真正能够锻炼技术的, 除了做 Android 系统本身的开发外, Android Apps 都没什么挑战性。

还好 Deepin 在我快对 Android 开发失去耐心的时候, 让我做了第一个 Deepin 软件开发, 开发一个软件中心, 那时候 Linux 所有发行版都是用命令行安装软件, 即使软件仓库配置的很好, 普通人还要花费大量时间学习命令去安装软件, 没法做到像 Windows 和 Mac 的图形化软件商店方便普通用户安装。

Linux 世界里面从来不缺乏技术高手, 也从来不缺乏各种操作系统和行业评论家, 缺的是行业视野和实干家。 中国 Linux 整个行业的分配并不像外人认为的是黑客精英组织, 真正出神入化的大神都在做基础性的构建工作, 一般都是隐居江湖的。 然后 70% 的半瓶水和喷子, 他们对任何事情都不满意, 天生崇洋媚外, 国外的月亮永远都是圆的, 国外的开发者永远都是对的, 国内的 Linux 水平和开发者都是傻 X, 不论任何人要做什么事情, 即使他们本身还不如做事情的人的百分之一, 他们总是站在上帝视角去评论所有的事情, 感觉世界上就他们看的最为透彻, 可惜的是他们每天除了只是打嘴炮不会干任何事情的窝囊废, Linux 在中国之所以发展不起来就是跟这些所谓的装逼高手息息相关, 不做任何事情, 天天教条的拿着自由软件的精神招摇装逼绑架和打击别人, 世界上宣扬自由软件精神最多的 RMS, 真正在他天天在全世界呼吁的时候, 他是大多数 Linux 关键软件的构建者, gcc、 gdb、 emacs 和一大票基础性软件都出自他之手, 可惜这些装逼高手一辈子都不会懂, 在你真正说话之前最好先练好内功。 剩下的真正在做事情的 Linux 高手, 凭着个人的热情和能力在各个行业分散的战斗, 少有个人开源开发者能够坚持 5 年以上。

真正阻碍 Linux 在中国发展的主要原因有: 开源商业化、 静下心来坚持、 生态引爆点。

开源商业化

说到开源商业化, 国内的很多喷子认为商业化和自由软件精神是相冲突的, 就像他们认为只要是高僧必须是穿得破破烂烂的扫地僧一样, 只有没有沾一点金钱气息的代码写出来才是他们心中矫情的自由软件精神, 任何个人和组织不论开发任何软件, 只要这是出自公司之手, 在他们心中都是邪恶的。 中国真的有很多一贫如洗的开发者, 他们的能力高超, 他们放弃高薪的工作, 他们不怕世俗看着他们是怪人的眼光, 每天如清教徒一般的写着一行行代码, 他们只想向他们在 Internet 上读过的那些为自由软件献身的斗士一样战斗, 他们不知道明天他们能否还能写代码, 能否不为生活所迫放弃他们喜爱的自由软件社区, 他们只是简简单单的每天坚持着。 而这些国内喷子幻想出来的大神如果真正的站在这些喷子面前时, 那些喷子又会拿着不知道在朋友圈读到的垃圾观点, 说你们这些技术人没有这个, 没有那个, 是不可能成功的。 作为开源社区十年工作者, 我真的相对那些阻碍中国开源发展的喷子们说: 你们可以去死了, 你们最好都死光, 不要浪费地球的资源, 你们有权利说话, 你们有权利啥都不干, 但是你们没有权利自己不做事情, 天天喷别人阻碍真正在做事情的, 回家把嘴洗干净再出来混…

开源的商业化和自由软件精神是完全不冲突的, 最典型的例子就是被作为开源先锋代表的 RedHat, 如果它不能在商业化上获得成功, 全世界那么多顶尖黑客只能单兵作战。 特别是在中国这个经济发展和社会福利保障还差很远的国家, 如果没有商业化把一代黑客的技术沉淀下来不断发展, 纵使黑客数量再多, 一代接一代, 大家的力量无法聚中, 最后的结果就和耦合的 Linux 开源社区一样, 一代又一代的人以一个极地的速度在向前进化, 大家都是在不断的造轮子, 造到一半就因为个人原因抛弃了, 然后许多年后另外一个人又重新折腾下去。 我相信大家都听说过猴子搬玉米的故事, 开源社区很多高手都是猴子(不是说他们的能力, 而是个人开源开发者的持久性), 他们的各人项目就是玉米、 西瓜和各种开发者新感兴趣的东西, 这些对于个人开发者来说是很好的锻炼机会, 但是对于整个世界来说, 这一个个半成品的项目来说除了对新的开发者来说有学习参考价值, 没有任何其他的价值。 开源商业化表面上是要持续的养活一代人和一个行业, 更重要的是他要让所有人对开源事业的发展产生信心, 不管任何苦难, 有信心的走下去永远都是国内开源最最重要的事情。

静下心来坚持

静下心来坚持, 这个朴实的不能再朴实的话, 在国内却非常难以做到。 中国还是一个在发展中的国家, 不论从小到大的教育来看, 还是大家毕业的后参加工作的商业社会, 全部都是忒浮躁。 太多的唯物主义洗脑了, 洗到大家做任何事情之前第一个先想到的是, 做这件事情的商业模式是什么? 各种花哨的创业军规, 要这样做, 要那样做才能成功。 朋友圈宣扬的各种创业鸡汤, 所有人都把创业等于登上人生巅峰在这个社会高人一等的捷径, 所有人都更关心结果。 创业是什么? 创业首先是就是做生意, 然后就是不要命的做生意, 因为没有多少人能够真正的创业成功, 为什么? 很多创业是因为没有经验瞎折腾, 更多创业是因为发展到一定规模后, 公司各种事情堆上来, 创始人首先迷茫了, 选择放弃。 为什么创始人会迷茫? 因为在很多年前他选择创业的时候, 首先不是建立在自己是否真的喜欢创业做的事情, 如果不是真正热爱自己创业做的事情, 是不会坚持下去的。 所以创业其实很多时候就是热爱+坚持。 静下心来坚持做你的事情, 不管外面的世界发生了任何事情, 坚持把你能做到做到极致, 失败了无怨无悔, 成功后大家都会拍马屁的反对他们在最初的时候讽刺你的观点。 走自己的创业路, 让没有思想的鹦鹉们喷去吧…

生态引爆点

生态引爆点, 其实就是中国以小博大的古语。 不要和这个行业的垄断者正面斗争, 在自己能够坚守的行业一点点做积累, 一旦积累到用户达到引爆点产生正向生态时, 所有的事情都是水到渠成的。 中国人的商业思路都是快钱, 做什么事情都忒浮躁, 恨不得快速在一两年解决战斗。 操作系统和中国的开源事业恰恰是一个最耗时间的持久战, 如果不潜心坚持十年, 是没法正真的达到引爆点。

深度 5 年

话说深度软件中心开发的时候, 我在思考一个问题, 我应该用什么语言去开发? Java 这个企业化最为友好的语言? 不适合, 因为整个 Linux 社区不像 Windows 和 Mac 那样在所有方面都有非常严格的标准, Linux 社区和之上的开发都是大杂烩, 一个大家看到的程序, 可能融合各种语言各种库融化在一起而开发成的。 Linux 仍然是 C 语言为主的社区, 用 C 语言开发? 前面我提到, 开源社区要在中国发展起来, 就是行业信心, 信心要怎么构建? 就是天下武功, 唯快不破, 我这里说的快不是程序的运行速度, 而是开发速度, 2011 年那时候的开发速度最快的就是 Python 语言, Python 语言本身就是一个脚本语言, 开发人员非常容易招聘, 不会给机会犯内存泄露的问题, 而且 Python 的库特别多还可以直接调用几乎所有的 C 库。 只有通过快速开发出各种软件解决 Linux 各种问题才能给整个行业信心。 我在加入深度以后, 花了半个月把《Python 核心编程第二版》看完就开始写深度软件中心了, 大概三个月以后深度 Linux 的第一款自己开发的软件面世, 全图形化操作, 当时小小的震撼了 Linux 的桌面社区一把。

开发深度软件中心后不久, 武汉深之度科技有限公司正式成立, 用 Deepin 老大的话来说, 告诉中国愿意做 Linux 的高手, 我们终于有钱可以招人全职开发了。 公司从 2011 年跌跌撞撞的发展到今天, 已经整整发展了 5 年, 社区开发从 2004 年开始, 整整坚持了 11 年, 到今天为止, 中国 Linux 的发展还需要至少 5 年的发展才能有可能会成功, 期间 Deepin 做了十几款原生应用, 图形库, 自己的桌面环境, 和独立的软件仓库和上百人的研发团队, 是中国 Linux 发行版中技术实力唯一可以和国外 Linux 发行版正面抗衡的团队。

从 18 岁到 28 岁这十年, 其中整整 5 年全部奉献给 Deepin 这项我为之热爱的事业, 从最开始的初试锋芒, 到创业过程中的拼命过程(有两年我除了上班写代码, 下班就在诊所中输液), 到现在已经脱离和研发第一线。 来 Deepin 的这 5 年是我人生中最为充实的 5 年, 除了研发经验更为丰富以外, 大大增强了团队管理和创业精神的培养, 期间的各种创业坑和故事什么时候有空单独再摆谈, 很庆幸的在这 5 年中受到 Deepin 老大的指导, 在他身上我看到一个踏踏实实的创业者的状态和精神, 也非常荣幸的和 Deepin 一路上曾经和正在并肩战斗的同事一起走过, 能够在 28 岁的时候依然战斗在国内 Linux 开源事业的最前线, 心中除了满满幸福, 别无他言…