6
Aug

全文在,我就选上些有同感的片断放在这里。

我的大学

虽然标题是”我的大学”,但大学中的一切,其实都和大学前的经历和学习习惯有关。因此,我还是从我小学时的一件对我以后人生,包括大学影响巨大的事情说起吧。

数理化和好老爸

{……此处删去若干……} 在自行车上的时候,他常常信马由缰,随口说些说些初中物理和初中代数知识,比如看到船就说浮力,看到马就说做功,看到三角形就说余弦定理等等。我也就半懂不懂的听,有时候插几句话,有时候能睡着了,没有丝毫的压力和拘束。很早就被中学数学物理知识装备的一个小学生是可怕的,我那时候觉得知识就是力量,因此我一定要用自己的数学物理知识做一台柴油机,我很自信的认为我懂得做柴油机和机动车的一切知识,说不定还能做出第二类永动机。我爸爸屡次告诉我不可行,而我反过来一直屡次告诉他,你是个没有理想的人。我爸爸不愿意打消我的理想,只是扔给我更多的书,希望能够打击我制造柴油机和永动机的热情,而我的知识理想,在读了更加多的书以后,变得更加的坚固了,我相信,学习知识是我人生第一重要事,有了知识,虽然不一定能做柴油机,但一定能做更多强大的事情。同时,我通过学习几何和其他的一些父亲扔给我的书,开始对自己的学习能力有了自信,我相信,找书自学是学知识的好方法,同时,把题从头到尾做一遍是很好的自学方法。

所以,我带着三个理念进入了大学,第一是什么东西都可以自学,第二是慢即是快,笨笨的做一遍题是学习的捷径;第三是知识理想主义,知识就是力量。而读书学知识能够消除蒙昧,掌握改变世界的力量,所以是一件快乐的事情。

大一,极端自负和极端自卑

{……此处删去若干……}

在我看来,极端自负这个心态,其实不是因为自信,而是因为极端自卑生出的应激反应–为了掩盖自卑,只好用自负来掩饰。为什么我极端自卑呢,大体来自两个方面,一个是我的成绩排名在高中都是很前的,但是到了大学就 20 名开外了。尽管我觉得自己的数学水平很不错,考试却总是不怎么样,觉得考试考不出真水平。另一个是觉得自己没有在一个自己满意的系。我喜欢动手的工科,当时我觉得比起计算机系和电子系这样的“牛” 系,数学系并不“牛”。可即使在不牛的系,我都不能做到前10,更别说看上去更加牛的计算机系了。为了掩饰这种这种自卑,就自然生出了极端自负。那时候,我上课根本不听讲,理由是“书上的东西太简单了”。为了证明自己智商还可以,我总是坐在最后一排,显示自己并不热心于老师讲课。我这样持续了两年, 以至于到最后, 我连班上每次都坐在前面的几个同学的名字都不知道。这样的心态明明是错的,我却缺少一个很好的动因来改变它。

不过最原始的三个理念还是在的,我告诫自己即使不听讲,也不能浪费时间。所以,我把听课做作业上节省下来的时间,用在了看喜欢的计算机书和学习编程上了。于是,整个大一大二,我凭借着简单的自学的理念,开始了两件事情,敲 《Thinking in Java》(TIJ) 和 《The TeXbook》 上的样例。

敲 TIJ 的机缘其实很简单,我是在软件学院听课的时候看到他们教 Java, 但是他们用的 《Java 大学教程》太贵了,我舍不得买。 我在网上搜了一圈,发现 《Thinking in Java》是一个免费的英文电子书。 于是,我就在数学系的机房,每天下午和晚上,开着一台计算机,屏幕上放着这个电子书,再用我的很土的笔记本,运行着未注册的 JCreator, 一个字母一个字母的敲 TIJ 上面的程序。我很偏激的认为拷贝粘帖的程序记不住,所以每个字母都自己手敲。 就这样,花了一个学期,居然就把所有的程序敲完了,基本上 Java 的方方面面,我也了然于胸了。

敲完 Thinking in Java 之前没几天,我们就期末考试了。那一次考试的试题是 LaTeX 排版的,而不是手写的。 我考试的时候就问监考老师这玩意怎么排版出来的,因为我知道 Word 这个软件做不到这个效果。监考老师除了对我不认真考试表示不满外, 还算仁慈,告诉了我 LaTeX 这个名词。 寒假里,我就买了一本 LaTeX 教程。然后,突然认识到,原来 TeX 居然是我最热爱的 Knuth 的杰作,于是我就疯狂的开始学 TeX。 我的方法还是一样, 敲例子。 记得 TeXbook 上有一个程序, Knuth 让大家自己照着敲入计算机, 然后还很幽默的说,实验证明,只有很少的人会按照他说的敲入这个程序,而这部分人,却是学 TeX 最好的人。看到这里我会心一笑,觉得自己的方法原来也不算笨。从此,一字不漏敲入一本书的程序成了我推荐别人学习语言的最好办法。 我后来大四又敲了 A Byte of Python,前段时间又敲玩了 The Awk Book,都是不到一个月瞬间从初学者成为细节很熟悉顺手拈来使用者。顺着这个方法,大二我把 《组合数学引论》 和上海交通大学出版的一本 《离散数学》 上的题目都做一题不漏做完了。当时选这两本书也没有特别的目的,就觉得这东西应该是计算机的数学基础。这些积累,在大四全部都显现了出来。

我个人认为, 《Thinking in Java》 和 《The TeXbook》都算得上是理论和实践结合的精品书,是经典的英文原版书。我一上来就读了这两本书,阅读品味就上升了不少,而且变得“崇洋媚外”了,任何时候都以英文原版书为第一选项了。也因为此,虽然我自学的过程中没有高人指点,但自学最重要的一个环节—选书–的盲目性就大大减少了。我记得那时候我看得最多的书就是华章引进的书,黑封面的,我们图书馆里有将近半书架,如果一一细读,穷尽四年是看不完的。但华章的书也不是本本经典,我那时候开始注意选择,细读开头十几页后,基本能决定这个书该不该看。所以即使当时没人指点,全靠自学,读的书还算过得去。那时候南大计算机系的教材,有的我看,有的我觉得不适合自己,就找替代品了。我觉得选书这个事情上,因为有前两本书的标杆,我少走了不少弯路。从这两本书开始,我疯狂的读书就开始了。南大的浦口校区的硬件条件并不好,唯一有空调且可以上自习的地方恰好图书馆。因此我每个暑假,基本上都是很早就过去占位,晚上很晚回去睡觉。我对小说等其他书也不感兴趣,就整天看自己觉得好的计算机书和数学书,做笔记。某天,我开始了一个雄心勃勃的计划:读完 TP312 书架。

大二,而今迈步从头越

{……此处删去若干……}

和我叔叔不能算是遇到,算是再发现吧。我叔叔是个很有冒险精神的人,具有不折不扣的企业家精神。 我非常小的时候, 他帮人家修电视, 然后迅速就搞了计算机,买了我们全市第一台 486。搞了很多年计算机以后, 又自学了单片机,以写汇编为乐。我对叔叔一直的映像是“善于抓住机会”, 倒没有把他和 “耐得寂寞” 很紧密的联系在一起。所以大二升大三的暑假,当我在看 8051 单片机的指令的时候,我叔叔突然告诉我说,他现在就是做这个的,还立即送了我一个编程器,你可以想象我那时候因为惊讶眼睛瞪得比灯泡还大。我那会儿,已经被 Linux 内核折腾得不行了,觉得汇编更加难。若是要在资源受限的系统上做出工业级强度的东西,我觉得就更加远超过我能力范围了。而叔叔,完全半路出家,通过自学,一个人,几年时间,就把这条路走通了。他现在写的汇编程序,运行在千家万户的水表中,完全是积累出来的硬功夫。我叔叔给我的震撼是巨大的,因为我一度怀疑过自己的自学能力,觉得有些事情,我永远没法做,就像童年想做的柴油机一样,只是幻想。我叔叔给了我一剂强心针。

有获鼎和我叔叔这样两个踏实勤奋的人的影响,我也一改以前轻浮的习惯,给自己定了三个简单的要求: 1. 更加多看书,看好书,并且一定一定要做笔记 2. 多编程 3. 开始背 GRE 单词。 就这样, 我就开始了疯狂学习的大三。

大三,深度迷茫和深度积累

{……此处删去若干……}

我有一个从高中就开始的习惯,就是把每天胡思乱想的东西记在一个笔记本上,算是思维快照。我还常常翻回去自省,看看过去和现在的变化。大一大二的时候,这本笔记本上记载着的是和生活和感情有关的琐碎小事,或者宏大空泛的目标和叙事。而大三记录下的内容明显具体起来,比如这周看完了什么书,下周去图书馆借什么书等等。现在我回看这些记下的文字,明显就可以发现,我写下的这些计划之间是没有很具体的头绪的,这些要做的事情后面,并没有一个明确的线索串起来,而是向无头的苍蝇一样到处尝试,到处碰壁。举例来说,我的笔记本里清楚的记下某周要看操作系统,可是下周还没看完操作系统的时候,又记下这周不看操作系统了,看编译原理。就这样,好似饥饿的狗熊在掰玉米棒子,看上去很勤奋的在掰,掰下来,啃两口,扔掉。当时我也能感觉到,知识饥饿感永远在那里,永远填不满。不过,我又总觉得前方应该有那么一个玉米棒子,能够填满自己的饥饿感,所以就一直向前奔跑。其实这种奔跑,不管多勤奋多刻苦,因为不够深入踏实,永远都是事倍功半的。好在我在不求甚解的同时,很注意整理自己的既得知识,写在小本子上。后来我到大四的时候,写论文也好,考研和找工作也罢,很多知识我都是临时突击的,好在有这么一本小本子,我可以按图索骥的去深入强化当时无头苍蝇般乱看的一些书。如果用搜索引擎的工作原理打一个比方,我觉得我大三疯狂的读书和学习,就好比是在建索引,等大四要搜索结果的时候,就再也不需要每本书全文检索了,直接按照本子上的索引找到当时看的书。

踏实和勤奋这两个从我叔叔和获鼎身上借来的优秀品质,加上取之不尽的TP312书架和背不完的单词,使我并没有被深度迷茫拉入自信和自卑的反复中,相反,随着这些积累越来越多,我变得越来越自信了,虽然这种对积累的自信尚未被现实验证过。

大四,书到用时

{……此处删去若干……}

10月左右,微软(MSN)来我们学校面试。这是我第一次面试,很紧张,前一天看书看到1点多,第二天午觉就睡过了一点,加上箱子里唯一的一件衬衫皱巴巴的完全不能穿,所以干脆就穿着拖鞋和 T 恤冲去了。面试的人很友好,面试也很顺利,有的同学还在等第二轮的时候,我的四轮就结束了。我当时的感觉是,微软的面试题太简单了,除了问我南京市新街口周边有多少辆车外,其他题目都是中规中矩的计算机面试题。面试出来之后,我和一个软院的同学在食堂讨论题,他说,题怎么这么难啊?我就很奇怪,说,这些题《编程珠玑》上不都有的么? 后来我才知道,其实看过《编程珠玑》的人,不是我想像的那么多。我也是在书架上乱翻才偶然看到《编程珠玑》。在 2005 年的时候,没有Web 2.0 和社会化推荐,我的世界,就只有面前的书架那么大,我幸运的在那么大的书架上遇到了几本经典书,并且细读了,吸收了。

很快,微软给了我一个在上海做测试的职位。 当时我一心要去北京,就不大喜欢上海这个职位,就没要这个 offer。不过有了这一轮,我也知道面试怎么回事了,这次面试,更加强化了我的自信,于是,我又开始比较狂妄了,觉得自己能进当时互联网中最热的,宣称招 50 个李开复博士的关门弟子的公司, Google 中国。

{……此处删去若干……}

我10月份的时候给 Google 投了一份简历,很快在11月份就被拒了。 而我的搭档李获鼎在签了 IBM offer 的第二天,却收到了 Google 的面试邀请(我相信凭他的实力,如果晚一天签约, 现在就在 Google了)。我听了之后觉得很奇怪,按说我们两个,做的项目是一样的, 学得科目也一样的,写的简历互相也看过,都差不多的,我被拒了,他被邀请了,这个好像不大对。 我心里的不服气,反应在行动上,就是每天上网看 Google 中国最近又招了几个人,怎么招的。那时候互联网上盛传的故事是一个人给李开复用很多不同的邮箱发邮件,以保证简历能够万无一失到达,结果瞬间被录用了。这个故事的内容和合理性放在一边,我对故事主人公的精神很感兴趣。我觉得我也可以再试试,说不定坚持就是胜利。正好那个时候,Google 的一些副总裁到北大有个宣讲活动, 说好了现场接受简历的。 我从当时在北大的女友那里得到了这个消息,回来把简历梳理了一下,让她帮打出来,又交了一次。这一次,简历直接交给了某个副总裁,成功了!几周后,HR 就给我打电话,安排机票和宾馆,让我去 Google 面试。

面试的过程平淡无奇,题目不是《编程珠玑》上的,就是《计算机程序设计艺术》上的,再不然就是网上贴出来的。我个人感觉,面试题就那么多,多做做基本上就了然于胸了。我从找工作一开始,就做了个有心人,每天都上网看面试题。这次面试前,我又把《编程珠玑》这些书复习了一遍。同时我知道自己在面向对象编程方面很欠缺,又看到有面试过的人说面向对象也考,就顺带看了《设计模式》。我还比较有心,花了几个晚上,捣鼓了一个移植于 Mac 的,基于 MVC 的可以当场演示的 Java 小游戏,面试当天我还给面试官演示了这个小游戏的架构和用到的设计模式,这样,我感觉,自己面向对象开发方面的弱点就让这个小游戏的演示给弥补了,面试官也一致说好玩。 很快,四轮面试就结束后, HR 把我带着去见李开复。李开复博士是个风趣的,或者说很善于观察人的人。他见到我的第一句话竟然是半调侃的 “小伙子, 我们 Google 不能解决北京户口啊”,我承认当时的确穿得很民工,因为网上说Google 是个很随意的公司,我是继续以凉鞋装备和鸟巢一样的头发去面试的。我也做了一些功课,所以谈话总的来说还比较和谐。说了一会儿后,我就抛出了为什么 Google 拒我一次又让我再面试这个问题,他说这事情还很罕见,要是我再网申,基本上简历是不可能的浮出水面的, 因为数据库里面已经有标记了,不过我这样二进宫算是精神可嘉。这时候我才回忆起面试的一个MM手上拿的简历,的确是我第二次提交书面简历的复印件,而不是网申的打印版,可见还是坚持再投一次好。(这个坚持,我也是和搭档李获鼎学到的, IBM 二面就有拒他的意思, 他要求 HR 再给一次终面的机会,终面刚结束,HR 就和他握手恭喜他加入 IBM 了,所以面试这个事情,坚持到最后的才是胜利者)。 当天和李开复谈完出来,HR 冲我笑笑,握握手,说,就你和他谈得时间最长。我基本上知道, 这个事情成了。

{……此处删去若干……}

我现在的导师 Yixin Chen 是一个非常杰出的年轻教授(科大少年班出身),我和他套磁的时候,他是刚刚从事教职,因此很需要学生。我之前也发了几封信,到了 4.15 左右的时候,他的另一个原来录取的学生因为某些原因去不了了,所谓就和我说,我可以过来。 那时候我还在等 Google 的 offer, 我的导师说, “Google 的 offer 不难,你读了书以后可以拿美国 Google 的 offer ,我也拿过。而来美国读书的机会就这么一次”。 那时候我想问题并没有现在这么深刻,加上比较想去北京,因此一直犹豫不决,还在催 Google 的 HR 快发 offer, 心想你们哪个 offer 先到我就从了哪个算了。我爸爸,我叔叔都不含糊,一个一个的轮番教育我。然后加上我导师说了上面这番话,我就毫不犹豫的答应了,说我一定过去。于是,我告诉 Google 的 HR, 我不去了。 就这样,我所有的自己认真谋划认真准备的路都没有走, 反而最后通过误打误撞和套磁的路,选择了美国。

其他闲话

总的来说,面试也好,考研也好,写论文写好,之所以能够比较顺利,我觉得都是大一大二一个键一个键敲出来的,也是大三一本书一本书读出来的。我写这篇文章的时候, 把相关的前因后果放到了一起,是为了解释有些事情的前因后果。 不过我不想给读者一个误解,即我恰好运气特别好,一路直行没有任何弯路。相反,我觉得我走了不少弯路,但是我很高兴走这些弯路。比如说,我上大学的时候,很多精力花在了做数论题上,《现代数论经典引论》这本书的习题我差不多一题一题都做完了,但是我出国申请学习数论没拿到中意的 offer, 现在也不从事相关的研究,所以这些积累至今没看到有什么直接的作用;我一度认为自己要做一个电子工程师,我大一大二还旁听了电子系的模拟电路,数字电路,还混到电子系实验室学 ARM 开发板,但是现在这些除了吹牛外也没什么作用,学到的一点皮毛也还给老师了。我是个兴趣很广泛的人,看过的杂书,做过的笔记,最后有用的,我觉得有十分之一就已经很好了。大学的时候,为了让自己精力不耗散,我限定自己每次借书,一定要保证四本计算机/数学,外带一本社科人文书,还有一本任意的书,而且那四本一定要做笔记精读。因为这样,我才能够最终没把有限的人生耗费在无限的浅尝辄止上。

即便这样,如果纯按照现在需要的知识看,我在“没用” 的东西上浪费的时间还是很多。不过我倒不愿意称这些为浪费, 在我看来,成长路径中有很多的偶然,没人知道在一些关键时候需要什么样的知识储备,所以踏实地多储备一些是好事。我在大四的经历和其他的一些经历都告诉我,以前通过看书,自学,彻底的弄懂的一件知识,会在某个不经意的时候,突然被用到。这时候对当年积累的庆幸和再发现的快乐,就像蓦然回首见到灯火阑珊处的秋水美人一样,是没法用文字描绘的。另外,我有个切身的教训,就是要踏实的积累。我读书涉猎很广,很多东西我都能大概知道怎么回事,但是就是学得不深刻,所以即使当时花了很多力气,需要的时候还要花大功夫重头捡起。 所以我的教训就是,与其两个半瓶水,不如一个满瓶水。 这个道理用在读书上就是说,一本好书读两次要胜过两本好书各读一次。要是大学能重新来过一次,我会少读一些书,多读透一些书,这可能是我觉得当年猛读书的唯一遗憾。

小时候我嗜书如命,我爸爸老是担心我会成为一个不懂人事的书呆子。大学中的我,几乎天天泡在图书馆,可以说是个不折不扣的书呆子。其实除了读书外,我的大学生活的其他方面也是很快乐的。我有非常玩得好的同学们;靠着帅哥室友们的魅力,我还常常和他们一起,和联谊寝室那些青春活泼的姑娘们打球,打牌。我还谈了一次恋爱,让我对感情的事情有了深刻的认识,这些事情,交替的穿插在我这个书呆子平淡无华的大学四年,让我的大学生活如此美好,但这些细碎的星星点点的人生经历,都不足为外人道了。

我就在自学和读书,乱读和乱逛中,过完了我的四年。博文视点的编辑和我约稿的时候,我就已经读了这个系列其他作者的一些文章, 很多作者都写了我没有的很多经历,很让我羡慕。自学和积累始终是我大学的一条主线,我也写不好那些支线的事情,因此文章平淡少趣味,只希望读者海涵了。我是个不合格的学生,我差不多忘了不少任课老师,忘了我的学号,忘了班上不少美丽的女同学的样子,却没有忘记某个夏天的中午,汗流浃背的我冲进图书馆,跳入一阵凉爽的书香;以及某个春天,我在草坪上读书入了迷,喷水龙头把我后背全打湿了还浑然不觉。这就是我的大学。

200612081106141505069637_www_zg911_cn

我的大学也有类似的TP312书架;他说的手敲键盘学习编程的方法我是很推崇的!

然而,当真正地走完了全职读书的阶段,一切的一切变得那么飘忽……社会、人生,所欲、所求

Leave a Reply