考研论坛

 
查看: 8116|回复: 22
打印 上一主题 下一主题

推荐一本介绍IT小牛考研读研的书《我是一只IT小小鸟》

[复制链接]

0

主题

5

帖子

100

积分

一般战友

Rank: 2

精华
1
威望
75
K币
25 元
注册时间
2009-9-8
跳转到指定楼层
楼主
发表于 2009-9-9 09:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

(本帖子包含部分站外链接资料,如果违反版规,请斑竹删除站外链接,但最好保留内容,因为这些对大家有帮助,谢谢)


给大家推荐一本书,《我是一只IT小小鸟》

本书集结了21位准IT人或IT人的故事。他们都很普通,但是因为努力,而变得不平凡。

本书为您讲述他们的成长故事。包括本科、考研、读研、实习、找工作等等

他们的弯路,是您的桥梁。


书的详细介绍:
                http://www.china-pub.com/196000
                http://www.cnblogs.com/bvbook/archive/2009/08/14/1546095.html               

以下是部分电子版内容
               
刘未鹏《我在南大的七年》http://mindhacks.cn/2009/05/17/seven-years-in-nju/

徐宥《我的大学》http://blog.youxu.info/2009/08/06/my-undergraduate-year/#comments

庄表伟《我的野蛮成长》http://zbw25.spaces.live.com/blog/cns!BD4EFBFAF436336C!2913.entry               

蒋宇东《梦断计院》 https://groups.google.com/group/pongba/browse_thread/thread/be579770e74d2c7e/d8c1208524951ecc?#d8c1208524951ecc

[ 本帖最后由 sz1506 于 2009-9-9 09:17 编辑 ]

    评分

    参与人数 2威望 +60 收起 理由
    lonelyskytaut + 30
    wangzq_870305 + 30 精品文章

    查看全部评分

    回复

    使用道具 举报

    0

    主题

    5

    帖子

    100

    积分

    一般战友

    Rank: 2

    精华
    1
    威望
    75
    K币
    25 元
    注册时间
    2009-9-8
    沙发
     楼主| 发表于 2009-9-9 09:12 | 只看该作者
    我在南大的七年

    http://mindhacks.cn/2009/05/17/seven-years-in-nju/

    —— 跨进南大校门的第一天,我知道,我自由了。

    父亲是个对新事物有强烈兴趣的人,村里第一台电视机是他自己组装的,当时全村人都跑过去看,电视机只能收到一个台,CCTV。座机电话是第一个装的。大哥大刚出现的时候,他也是第一个买来用的,那个时候的移动电话真是贵得离谱。

    父亲告诉我的第二件最重要的事情是:遇到任何问题,找书去就行。他在自己的专业中完全是自学的。在不属于自己的专业中(后来买了电脑之后需要学习如何架设公司网站,如何网上营销,如何进行电子财务管理,如何使用各种作图软件制图等等)也全都是靠买书自学。

    为什么说到这两件事情,因为这是对我一生影响最重大的两个习惯。第一个习惯给了我学习新东西的强烈动机,有了热忱和兴趣,做事情就不觉得累,就自得其乐。第二个习惯则给了我学习任何新东西的方法——不会么?查书去。(当然,学习一门专业并不完全通过看书就行,但这毫无疑问是至关重要的一个途径。)

    高三的时候,父亲买了电脑,我立时对这个神奇的事物产生了强烈的兴趣,每期的《电脑爱好者》和《电脑报》都会买来细细看,有时看到各种小工具、技巧还会摘抄下来,回去在自己家里的机器上捣鼓。那个时候我并不知道这样单纯的兴趣会把我引向一条专业的程序员道路。

    高三时间变得越来越紧,分配给兴趣的时间越来越少,但兴趣的火花一直都没有熄灭。

    跨进南大校门的第一天,我知道,我自由了。

    这个自由并不是说我可以做任何事情了,而是我得到了一个重要的决策的自由权,即关于如何利用我的时间。

    高考的时候我报了计算机系,但分数差了几分,失之交臂,被调到第二志愿专业——信息与计算科学。当时以为这个专业跟计算机相关的,结果发现是数学系,后来听不少同学提到都上了同样的当。

    这里出现了一个歪打正着的事情:我本意并不是上数学系,如果当时知道这个专业是数学系,我可能就不会填报了。但正是因为这个错误,我在数学系好歹也受了一些数学基本功的训练(尽管这个训练的基础是大一上的不多的几节数学分析课,以及每次临考前宿舍哥们例行的“包夜”看书),回过头来看这个基本功在后来还是帮了不少的忙,甚至有一阵子我对数学本身到了很感兴趣的程度。不得不说,这段学习的经历是很锻炼抽象和逻辑思维的。另一方面,困难如数学都学了,对其他学科就不觉得难,不会望而却步。

    这是我成长过程中的幸运之一。后面还会提到,还有好几次更大的幸运。

    大一上学期很快过去,应该是在大一下学期的时候,学校要开一门C++课程。我利用假期先把课本基本啃掉了,当时动机也很简单,先啃掉,就不用上课了嘛。

    另一件事情是我经常喜欢去逛书店,看到侯捷的《深入浅出MFC》上面很多人说这本书好,我当时也对C++有一些基础认识和好感,所以就买下来啃了。一方面侯捷先生写的书的确图文并茂,深入浅出,有意思,另一方面理解一样复杂的东西是个智力挑战。所以看着看着倒是觉得兴致盎然。却不知就这么和C++结下了不解之缘。

    这是另一个歪打正着:为什么说是“歪打”呢?因为MFC的设计也并不能说就是C++的Best Practice,另一方面若是以用为本的话也未必就要把MFC的原理摸个透。所以搞不好现在看来我就不会细看这本书。为什么说是“正着”呢?因为理解一个费解的东西本身需要长时间投入注意力,无形中练了理解能力和思维体力(专注),另一方面虽然MFC不是最佳设计,但理解里面的代码却加强了对C++本身的认识,这是基本功;也加强了对C++的兴趣,这是动力,后来这个动力驱使了我去看了大量的系统底层知识,从操作系统代码一直看到硬件体系结构。

    大二发生了几件重要的事情:一是我在程序员上发表了第一篇技术文章,是剖析Boost源码的。我已经不记得什么时候、通过什么途径知道Boost这个库的了,总之是知道了,然后也是由于受到侯捷先生源码剖析的影响,也去看源代码,发现很难,越是难就越是觉得有趣,跟踪代码到临晨四点居然越看越精神了,后来火速写了一篇源码剖析。发给《程序员》杂志的技术主编孟岩先生,孟岩先生给了很大的鼓励,于是我很来劲。后来一鼓作气分析了N个库,写了一系列的 Boost源码剖析的文章,在网上随处可以搜到这个系列。

    这是第二个歪打正着,按理来说,研究语言技巧并不是程序员最佳的时间投入方法。所以现在我可能不会去做这件事情,会认为有更好的时间投入途径。但当时就一头扎了进去。为什么说也是正着呢?因为虽然这也许不是最佳的投入时间的办法,但总归比什么都不专注要强得多,至少这么一深入,对语言的缺陷和陷阱有了更深刻的认识、也锻炼了对代码的亲切感、跟踪调试的耐心(是的,耐心,而不是技巧)。

    所以后来我在博客上总结自己学习编程中走过的弯路,孟岩先生说到,是不是弯路,不是那么容易界定的。

    的确,也许真的有更好的路,但事前真的很难判断哪条路是最优的,我们能做到的,是把一条路走透了、走深了,只要不是一条太不靠谱的路,深入的过程中总会有很多的收获。只要不是太顽固,善于反省,总有一天也会逐渐意识到越来越靠谱的路。

    除了发表第一篇技术文章之外,大二我还用业余时间做了一些技术翻译,寒假里我坐在家里每天晚上翻译半章《Effective C++》,当然,后来我把译稿提交给出版社的编辑时被告知文笔还显生硬。

    同一时间,我继续啃N多C++以及底层知识的书,一段时间我的书架上全是这类书,根本不像数学系的学生。非典那阵子,把饭钱都拿来买了书,为什么买得这么疯,也是因为受父亲的一个影响,他告诉我买书不用心疼,因为是长远投资,收益远远大于这点金钱投入。那段时间我边看边写一些代码玩,有模仿 Windows核心编程的小程序,也有尝试并失败的小游戏,也有拿来对宿舍玩的游戏文件分析的工具,还有为上机考试写的库,总之玩得不亦乐乎;不像很多知名的程序员在学校里面就写了被广为使用的工具,那个时候我完全没有这个意识,也不知道什么是开源,自己自娱自乐而已,所以没有系统训练编码量和编码素养,比较盲目。

    大二下半年还发生了一件重要的事情,我在CSDN上开了一个博客,开始写学习C++和编程的过程中的一些总结。这个博客我一直写到今天,伴随了我整个7年的学习和成长,回过头去看就像时光机一样,能够看到一路过来我都关注了些什么东西,是怎么想的,以及对一些事情的看法是怎么改变的。这些东西如果不记录下来,就会逐渐忘掉,也就无法参照过去的自己,对未来提供更好的借鉴了。所以我一直把记录当做一个很重要的工具。另外我也通过这个博客认识了很多朋友,得到了很多的帮助。

    后来,学校提供了转系到软件学院的机会,我立即报名了。后来的两年在软件学院度过。但其实反正我也是自己安排时间,所以无甚区别。

    大三大四发生了几件重要的事情:一是荣耀先生邀我合译《Imperfect C++》,我很乐意的接了下来,可没想到这本书比我想象得要密度大得多,六百页,而且排版也很密,我给自己安排了每天6、7页纸的量,大概花了半年多译完。中间有一段时间停滞,荣耀先生给我鼓劲,告诉我一个重要的方法:如果觉得做不下去了,就硬着头皮坚持做,然后就类似于麻木了,适应了,那种望而却步的感觉会逐渐自动退去。惊人的简单,但事实就是如此,硬着头皮,过了那个情绪上最艰难的时候,也就适应了。这本书译完之后,还是有不少的收获,但我总觉得对性格上的磨练才是最有价值的收获。

    二是我开始看英文版的书。之前,由于高中不靠谱的英语教育的原因,我恨死了英语,大二的校内四级课程还挂了科,直到大四才补考。但对技术本身的热爱压过了对英语的反感,我还是硬把一整本影印版啃下来了,而且津津有味,这本书就是Jeffrey Richter的《Applied .NET Framework Programming》。这个事情的重要性在于,后来我就不再反感和恐惧英语了,这是其一,其二是我开始意识到英文世界的技术资料有多么丰富,所以虽然本身看上去不是一个太起眼的事件,但却是我获取信息方式的一个Tipping Point,一旦熟练掌握了语言这个平台,背后就是一扇大门,通向一个海量的信息源,后来我的信息获取绝大多数便来自于英文,其中尤数wikipedia 和英文版的书为多。另外还有一个收益后面会提到。

    大四快毕业的时候又发生了一件事情,微软的Eric Jiang通过我的博客找到我,推荐我去微软面试,我随随便便就把粗糙的简历给发过去了,差点因为简历太粗糙被HR直接过滤掉。远程电话面了两轮,远程 Coding一轮,然后记得就是飞到北京面试,住在北航招待所。北京的面试又面了好几轮,有考察底层知识的、有考察C/C++的、.Net的,还有考察算法的,编码素养的。总之就是公认的基本功考察。最终我还是没能通过面试。个人自己后来总结的结论是算法基本功太差,连什么是动态规划都不知道,编码素养也不够。这部分也是因为本科的学习方法太业余,什么好玩干什么,倒不是说兴趣驱动不好,只是缺乏系统的规划,不清楚也不关心这个领域的蓝图,也弄不清什么是重点。后来在读研的时候恶补了一把算法,好歹弄清了一些基本的概念和思考方法。编码素养的问题也是到了读研的时候才开始思考和学习,现在仍在学习。

    另外,在本科阶段,其实我也浪费了很多时间,事实上,是只花了很小一部分时间来学习。之所以还多少学了点东西,完全是仰赖了专注的习惯。而这个专注的习惯其实又是从小受父亲耳濡目染的,父亲会花一整天揣摩一个问题,父亲跟我说过他以前组装电视机时的故事——一切都似乎组装正确,但电视机就是不工作。他苦思冥想,不得其解,当晚,半夜从睡梦中醒来,想到了问题的症结所在。所以,我在啃一些底层知识时如果弄不懂,也会一遍遍读,然后用走路吃饭坐车的时间在脑子里一遍遍去琢磨。我有很多重要的习惯受到父亲的影响,这些习惯自己一般觉察不到,但却默默影响了平时的一点一滴的时间分配和学习轨迹,这些习惯从纸上很难学到,但耳濡目染却会自然而然地学会。

    每当有人觉得我本科就做了不少事情的时候,我就会说其实我本科真的浪费了很多时间,而另一方面,这也说明,要掌握一门专业知识,其实每天一点时间,专注、积累和持之以恒也就够了。后来研究生阶段才算真正开始惜时了,于是经历了两年密度很高的学习和思考,心智才成熟了不少。

    大四的时候,和很多人一样,我也考研,因为一来也很茫然,二来也希望能够继续有一个宽松的环境继续沉浸在自己的兴趣中。但四年来我都是自己安排时间,逃掉了无数的课,已经对模式化的做题考试产生了抵触,所以考研的复习也没怎么认真准备,那年考研的数学题又偏难,一下慌了神,结果居然把一整页题压在稿纸下忘了做了,心理准备有多不充分可见一斑。考完数学我很沮丧,那么大分值的题目没做,数学肯定过不了了,接下来的专业课就没去考了。后来想想其实还是应该去考一考,多少能为下一年积攒经验。

    后来就工作了,没去成微软,经同学张振推荐,就去了南京西门子。心里的打算还是边工作边考研,为什么考研,动机也简单,我心理还没准备好,本科只顾着埋头学好玩的,也不看路,不知道自己想要什么样的工作,想做什么样的事情。去西门子之后更加觉得如此,觉得效率很低,做的事情也并不是我乐意的,每天还要在班车上浪费两个小时,于是没过多久就辞掉了工作。打算复习考研。那个时候大概还有半年多的时间才到考研,所以我中途不紧不慢地又翻译了《Exceptional C++ Style》,占用了不少时间,到最后时间很紧了,就剩两三个月,我才开始认起真来,回想起来这是糟糕的时间管理。结果我不得不作了最坏的打算:顶多调剂去软件学院读研(我报的是计算机系),考虑到我反正是自己安排时间,差别应该不大。幸运的是,最终一分不差地过了线,算是蹭到了计算机系里。虽然如此,还是觉得这种惊险不要发生的好,以后或者其他事情上就不会有这么幸运了,及早准备总是很重要的。

    读研期间的两年半,是我自己觉得心智年龄成长最迅速的一段时间。这里也有几个很幸运的事情。一个事情是我的导师陈家骏先生给了我很大的自主,于是我得以有时间安排一些重要的学习,这段时间对我来说很重要,我学习和思考了很多东西,为个人以后的发展作了很多准备,倒是没帮导师做什么事情。所以,硕士毕业离开的时候是既感激也愧疚。

    另一个事情是认识同实验室的师兄陈怀兴,严格来说是他先来找我聊天,可见那个时候我仍然还是没有意识到与人交流的重要性的,后来,建立了 TopLanguage讨论组之后越发意识到与他人交流的重要性,也开始主动寻找和参与交流,希望以后自己也能组织交流。陈怀兴对算法很有造诣,也是 TopCoder上的常客和牛人,那个时候我也正在为以后的工作面试准备一些算法基础,所以经常找他讨论,获益很多。有一句话说:看一个人,只要看他读的书和见的人。还是很有道理的,这两者是一个人成长中最有价值的信息来源。

    研一下半年,女朋友找工作的时候需要用到营销方面的知识,于是我去替她找书,偶遇《影响力》这本书,这本书打开了我的视野,让我开始关注一个很有价值的领域:我们如何思考,如何正确地思考。这个领域有很多有意思和有价值的书,我利用近一年的时间,陆陆续续看了近40本相关的书(我把这些书整理了之后以豆列的形式放在豆瓣上),对思维的特点和缺陷,以及如何思考有了很多的了解,这些知识后来很大程度上使我更清晰地认识自己,和自己在学习和生活中面临的各种问题。

    也是研一下半年,我建立了一个Google Groups,起名TopLanguage,一开始的时候是因为平常没人讨论问题,憋得难受,希望有人能够说两句,无心插柳柳成荫,后来这个讨论组的交流越来越多,如今已经近两年,组内成员超过了4,000人,两年里我也从中收益颇多,其中最大的收益有两个:一是和人讨论能够激发自己进一步的思考,也促使自己更清晰地表述自己的观点或问题。倒不是说别人就一定告诉你什么新东西,而是讨论对你自己的思维的刺激。二是交流中认识了不少朋友,后来快毕业的时候也受帮助颇多。我一直把TopLanguage的创建看作研究生阶段做得最有意义的事情之一。

    此外,我有意识地提前准备了英语,因为我相信如果想要去好的外企,口语不过关很可能成为一块短板(当然,英语作为承载最多技术知识的平台语言还有更大的价值),包括阅读、书写和口语。我想了一个方案,可以不用额外花时间来学习英语:阅读的训练蕴含在平时的英文技术资料的阅读中,尽量读英文的,一来英文资料更一手和全面,二来也顺便练阅读。书写的训练蕴含在去国外邮件列表发技术贴和自己写的英文博客文章中。口语的训练则蕴含在平时的娱乐中——美剧,有一个暑假我几乎天天开着Friends睡觉,另外学校有国外过来的团队演讲我不再错过,而是主动参加,有一次还带他们出去逛南京,说了一天英语,回头在路上听中**像英文。虽然和外国友人交流的次数不多,但似乎对口语感觉的提高还挺大。后来在微软亚洲研究院的面试最后一轮就是英语的,而且是偏技术的,好在提前准备了,所以毕竟还是顺利地表达出了想表达的意思。

    去微软亚洲研究院面试,是因为幸运地认识了微软亚洲研究院技术创新组项目主管邹欣先生。邹欣先生和他组织的团队在那段时间写了《编程之美》,书中有很多很有意思的题目,而我那段时间恰和陈怀兴讨论算法,在讨论组上也组织了专题的讨论,有了一点粗浅的思考,于是和邹欣先生邮件交流,由于对邹欣先生的技术创新组做的事情很有兴趣,所以找工作的时候便向他毛遂自荐。

    承蒙邹欣先生推荐,时隔三年,我再次获得了去微软面试的机会。这一次,由于研究生期间作了一些长远准备,所以心里有底了很多,也就比较冷静了,由于当年知识体系的漏洞被我花功夫补了补,所以面试比较顺利。面试的时候邹欣先生更为详细地介绍了技术创新组的工作,我更加感兴趣了,所以尽管已经有另外几个也不错的选择,但心里还是迅速地做了决定。大约一周后,HR通知Offer,我毫不犹豫就接受了。

    我想,虽然有很多人本科就明白自己想做什么,我多花了两年多,总还不算太晚。
    回复

    使用道具 举报

    0

    主题

    5

    帖子

    100

    积分

    一般战友

    Rank: 2

    精华
    1
    威望
    75
    K币
    25 元
    注册时间
    2009-9-8
    板凳
     楼主| 发表于 2009-9-9 09:14 | 只看该作者
    我的野蛮成长

    http://zbw25.spaces.live.com/blog/cns!BD4EFBFAF436336C!2913.entry

      小学五年级的时候,我第一次接触到了计算机,到现在,已经23年了!  
      和许多许多人一样,从10岁那年起,我就确信,计算机,是我的最爱!(当然,老婆、孩子、家里人除外!)  

      因为我的个性以及各种偶然的因素,我的成长那是相当的野蛮,不合常规、不守规矩、不走寻常路,  
      现在回头看来,那些令人难忘的熬夜加班、纠缠于技术难点导致的彻夜难眠、在公司里与人争到面红耳赤、在BBS上与人唇枪舌剑,就是我成长的方式。  

      很难说能够给读者什么启示,只能说作为一些小故事和一些零散的思考,也许还是挺有意思的。  

    一、1986~1993:大学之前  
      1、吸引力  
      1986年,小学五年级的时候,我第一次看到了计算机。Apple II是一台相当漂亮的机器,在少年宫的一个很大的房间里,放了10多台。少年宫的老师,用苹果机,教我们学习Logo语言和BASIC语言。用小海龟画一些小房子之类,或者在报纸上找到当时很流行的“BASIC一行程序”,在计算机上执行,看看各种有趣的效果,比如输出一个乘法口诀表。  
      这样的机器,带给我极大的乐趣,那是一个全新的世界,拥有无限的可能,只要我肯花功夫下去,我就能够成为那个世界里的上帝。  
      有一段时间,我很沉迷于对那种单音喇叭的发声模拟研究,因为只要掌握好单音喇叭的触发间隔,他就能够演奏出不同的音调,能够演奏乐曲,甚至模拟人声。。。  
      当然,最重要的是,计算机可以用来玩游戏!当时我找到过一本书,里面是用汇编语言印出来的游戏程序,初三以后,父母给我买了一台中华学习机,我就会花大量的时间在计算机前,把那些汇编代码一句一句的输入到机器里,大半天甚至一天的时间,才能玩上一个小游戏。而且无法保存(当时的机器没有硬盘,只能外界磁带机,而且我当时还没有。)玩上最多一个小时,就只能关机了。  
      如此低的投入产出比,依然让我乐此不疲。更不要说,随着计算机的能力越来越强,更由于互联网的出现和日益丰富,计算机,对我的吸引力,始终是有增无减啊。  

      2、1991年的红警  
      当然,红警不是那时候出现的,根据网络上的资料,《命令与征服》的最初版本发布于1995年,而我在大学时期最热爱的游戏《红色警戒》,则发布于1996年。但是,早在1991年的时候,我和几个朋友在空想的一个游戏,就非常类似于后来的“红警”。我们当时设想了一个小岛,上面有两个国家,他们有各自的资源,可以建造自己的各种工厂、矿山、船坞、兵工厂,然后再进一步制造出各种兵种的战斗单位和武器。可以打地面战争,也可以打海战。  
      当时,我们的讨论相当的深入,甚至还去查找了很多相关武器的技术资料,做了笔记,画了地图等等工作,做了很多。代码,的确是一行都没有写过。现在回想起来,以我们当时的能力,见识,机器条件,要想开发红警那样的即时战略游戏,是完全不可能的。  
      当然,这并不能算是一个失败,与朋友热火朝天的讨论这样一个游戏的过程,已经带给了我极大的快乐。

      3、两大弱点  
      我从小学5年级开始,就参加各种计算机竞赛了。比赛的成绩,始终处在中上的水平。一般来说,我的书面试题的成绩都不是太高,但是我的上机试题却能够做得飞快。总结下来,我通常都能够得一个2~3名的名次。编程快枪手的毛病,就是那时候养成的。这个弱点,直到我参加工作以后很多年,才逐渐的被我克服。  
      另外一个弱点,也可以说是一个不幸。在我小学考初中的时候,因为一时粗心,数学被扣了20分,原本想进“一中”的,结果只能通过关系进了“九中”。更糟糕的是,那时候,正好是中苏关系回暖的时期,教育局居然在全市找了两个学校,各开了两个俄语班。而我就是那个不幸被抽中的,学习俄语的小朋友之一。英语,始终是我最大的弱项。直到现在,我在工作当中遇到问题,首选的办法,是去阅读源代码,而不是去阅读文档。塞翁失马焉知非福,阅读源代码得来的知识,确实牢靠得多,毕竟文档会骗人,代码可不会骗人。  

      4、神气的计算机课代表  
      在中学的六年中,有两年我特别神气。初一和高一,我们开设计算机课,而其他的四年,是没有计算机课的。给我们上课的老师,同学们都称其为“庄表伟的干爹”。一方面当然是因为我的计算机竞赛能够出成绩,老师一直会让我在课余时间自由进出机房。另一方面,则是因为我在班上几乎就成了半个计算机老师。每次上机课的时候,我从来都不坐在自己的座位上,而是在教室里晃来晃去,帮助同学们解答各种问题,最夸张的是,最后的期末考试,老师也随便我在教室里走来走去,帮同学们做考卷。那是何等的神气,何等的威风啊!  
      现在想起来,那样的成就感,被人崇拜的感觉,是我热爱计算机的重要动力之一。  

    二、1993~1997:大学四年  
      1、不走寻常路  
      这个故事发生在大二的时候,我读的专业是电子信息技术,所以软件开发相关的课程开得很少,C语言还是必修的。在最后一个大作业的时候,老师的题目相当简单:用绘图函数,实现8个标准的三角函数,将函数曲线绘制出来。这个题目实在太容易了,很多同学,都尝试锦上添花。  
      老黄的做法非常的赞,他用纯C,在DOS下做了一个图形界面,支持鼠标指针。在给定的函数曲线画出来之后,可以操作鼠标,在界面上任意点击,查看(x,y)的坐标值。后来,老黄很早就在某软件公司做到了CTO的职位。  
      老刘的做法也很出彩,他找到了一个漂亮的JPEG风景图片,作为软件的启动界面,给老师留下了深刻的印象。后来,老刘工作不久就自己创业,而且是同学中最早开跑车的一位。  
      至于我呢,却不甘心只实现那8个函数,而是下大力气做了一个任意表达式解析的模块,支持键盘输入任何公式,就能够绘制出曲线来。这个作业,老师只给了我“60”分,原因是:没有按照题目的要求去做。  
      虽然,我的那个做法,是技术难度最大的。。。  

      2、第一桶金  
      说是第一桶金,其实相当少,也就是2000块钱,当然,这在当时的确算是一笔巨款了。我们的系主任对我那是相当不错,当时他教我们数字逻辑电路,我学得挺好,给他也留下了不错的印象。因此,有一次他就把我找去,问我是不是能开发一个软件,是饭店的点单系统(其实类似于现在的POS机,客人点菜后,打一个条子出来,可以凭票付钱。后来还加了一个统计报表的功能。)饭店老板是系主任的一个亲戚,饭店开在外滩附近,他们店里有台挺破的486,连着一台针式打印机。我  当时除了C语言,和小学时候学的Logo、BASIC,其他啥也不懂。但是也硬着头皮,壮着胆子跟系主任说:“没问题,我两个礼拜就能作出来。”  
      回到学校以后,就赶紧去图书馆找FoxPro的书,连夜开始学,然后一边学,一边在机房里试着编程序。(那时候的条件远不比现在,寝室里没有一个同学有电脑的,更不要说联网了。)  
      两周之后,顺利交付,那钱来得可真是爽啊,能够做自己最喜欢的事情,还能赚到钱,这样的事情,我愿意干一辈子!  

      3、一夜狂啃toolbook  
      大二开始,我就在外面找一些活来做,一开始是做图书推销员。就是包里背着那种大部头的企业用的图书,比如《公司法实务全书》、《合同法全书》,售价200~300多的那种。然后骑车到浦东去,一家一家的敲人家公司的门,进去就推销。那时候大多数公司还不设防,看到大学生上门推销,还有新鲜感,就算不买书,也会跟我们聊聊天。我只要“很憨厚的跟他们谈谈学习和生活”,就行了。卖一本书,我能赚到50块~100块,每次骑车出去,大概能卖掉2~3本的样子,最多一次,我卖掉了7本,后来还做了销售代表,在学校里发展下线,让他们出去推销。  
      到大三的时候,我就不再做推销员了,一方面是赚钱不容易,另一方面也觉得有点不走正道的感觉。后来还是出去找编程的工作来做。有一次一家做教育课件的公司,来我们学校招人。他们那个是计件制的,做一个课件拿一笔钱,还是挺不错的。跑去应聘,那个公司的人,也没问我多少东西,就发了一本toolbook语言手册,让我回来先自学。  
      还得再说说那时候的计算机条件,同学自己是没有电脑的,机房要排队,去晚了就没法上机了,而且就算能上机,机器也很差,还不能乱装软件。寝室里11点就熄灯了,没法看书。那天晚上,我就找了一间实验室在里面熬夜看书。 toolbook是一个专业做教育课件的编程语言,跟VB非常像,但是不可能让我带回来装在自己的机器上。  
      于是,我就只能看书,看Sample Code,然后尝试在脑子里跑代码。然后,逐步的展开思维,推演用这个语言,能够做哪些事情,该怎么去做。  
      一夜没睡,到第二天,我已经成为一个挺熟练的toolbook程序员了。  

      4、月薪800的项目经理  
      当时国内的软件开发企业,还是很不正规的,我能够以在校生的身份,当上所谓的项目经理,就是因为进了一家特别能唬人的公司。我那时候读大四,在外面找了一家“软件公司”,公司实际的老板是一个姓蔡的四川人,我们都叫他“老蔡”。后台据说是“上海市计算机技术研究所”,我们计划开发的,是一个叫做“新奥2000”的行政办公管理软件。老板把我招进去以后,就扔了一本大书给我,叫做《行政办公管理表格大全》,然后我们就从这本大全里,挑出一些常用的,看上去有用的表格,做数据库设计,然后再做功能设计,界面设计。后来为了有销路,还在软件里打包了3个小游戏,和一个生活常识大全之类的数据库。  
      就是这么一个四不像的软件,由我带着5个同样是在校的学生,在那里没日没夜的开发。没有什么测试人员,那些功能,也就是老板大概点一点,不报错就OK了。最难的一个模块,是一个“工资管理模块”,当时我设计了一个可以任意分级分层的工资项结构,从数据库来说,处理起来还容易,但是要显示一个树状结构,就太难了。ForPro 2.5当时没有没有现成的树状控件,我只能自己用字符来拼出一颗树的样子来。要考虑各种各样的分支情况,那个功能,我是在有一天的凌晨4点多的时候做完的。。。  
      诚实一点说,那样的项目,简直就是垃圾,虽然老蔡非常牛的把这个软件卖出去了,但是据说后来接到了很多投诉和退货:p  
      对于我来说,这是一次非常难得经验,我参与了一个完整的商业项目的所有流程,从前期设计到开发、测试(虽然极其敷衍)、代码打包、软盘加密,到最后对销售人员的培训。还有在项目开发过程中的分工与合作,出bug、查bug、帮人改bug,接客户投诉等等。  
      最后,我离开了这家公司,但是他们还欠了我3个月一共2400块的薪水,因此,我还积累了非常宝贵的“欠薪”、“讨薪”,最后“讨薪成功”的经验。  

      5、我的毕业论文课题  
      我就读的是华东师范大学电子科学技术系信息处理专业。毕业的时候,系主任刘必虎老师是我的论文指导老师。我当时给老师申报的课题是《尝试破解FPGA/PLD开发软件的试用版限制》。当时系里搞可编程逻辑器件(PLD),从厂商那里拿到了一套开发工具的试用版,功能受限。我就向刘老师提出试着破解一下这个软件,同时作为我的毕业论文。  
      现在看来,这是多么不靠谱的一个毕业课题啊!与电子系专业毫无关系,还有犯法的嫌疑。老师居然也就同意了!  
      当时,我其实完全不知道破解软件该怎么弄,找了一些资料,找到了一些软件,其中有一个非常强悍的软件,叫做SoftICE。然后就开始了兴致勃勃的跟踪之旅。当时的资料也非常少,很多地方只能靠猜,从一头雾水,到逐渐摸到一些门道,到逐渐理解了那个程序的执行过程、系统结构。然后再进一步理解汇编语言、内存管理、WIN32API等等等等。  
      时间就那么匆匆的过去了,好多事情都来不及做,还要分出很多时间去打红警,还要和同学出去喝各种规模、各种级别、各种名目的告别酒。。。到最后,我的破解任务,并未完成。。。  
      。。。N天以后。。。  
      论文我敷衍了30多页,然后进去答辩,系里的老师,其实没有一个懂软件破解是怎么回事。。。在我口若悬河,滔滔不绝,信心十足,意犹未尽的讲完之后,只有一个老师,提出了一个问题:“那么,按照你的思路,这个软件能够破解掉吗?”我回答到:“那当然,肯定就是这样去破解的”。答辩结束。  
      。。。N天以后。。。  
      同学们告诉我,我的论文,获得了优秀论文奖。  
      真的,我特别感谢我的母校,我们的电子系的老师。在这样一个特别宽松的环境里,我获得了自由的,甚至是肆无忌惮的成长。现在想来,真是觉得难以置信!  

    三、工作以后的成长  
      1、软件开发的目标变化  
      最早我开发软件,很少会考虑bug的问题。不是说不出bug,而是只要手脚够快,代码写得够快,bug出得快,改得也快。因此,软件开发的目标,首先是速度。就像我以前写过的一篇《关注软件开发中项目的人》中所描述的那样:  
      我最初就是个快枪手,能够快速的完成主线功能,但是却从来不考虑例外情况。完成了给定的功能需求,但是代码却只有我自己才能看懂(1天之内)。新的技术,我也是很快就能上手,“Hello World”转眼就能跑出来。但是要再进一步深入专研,我的兴致就不高了。一个团队有一个这样快枪手,真是要非常的小心,才能用好。你可以分派给他各种类型的任务,但最好不要给他太关键的功能点。因为究竟会不会出bug,他是无法保证的。要花更多的时间,并且更加频繁的检查他的工作,以确保他不仅仅是完成了表面工作。更为重要的是,要不断的敲打他,督促他,逼他更加用心,努力提高。一个快枪手,也是有可能成长为独当一面的将才的。  
      在 2000年的时候,我进了一家互联网门户网站。刚开始的时候,老板还雄心勃勃的想要做一个虚拟城市的项目。正好我之前有Flash开发Web Multi Game经验。但是3个月不到,冬天就来了。公司开始艰难转型,我们开始去接很多企业上网的项目来做。几千块的单子的,都先接下来再说。老板在销售方面是一把好手,项目源源不断的进来。开发的目标,自然就发生了变化。开始追求效率,当时应该有很多中小型的软件企业,开始搞自己的山寨快速开发框架,我们自然也是其中的一家。只是,我的思路比较邪门,在我看来,不同的项目开发,最影响工作量的,其实是底层的数据结构,每一个项目,一套数据库表设计,然后再一层一层的写上去,还要为不同的项目写各自不同的后台管理界面,实在是太麻烦了。如果每一个项目的数据库结构都一模一样,数据库访问层都不必重写,那么,开发工作,几乎就只剩下在“静态页面”上修改一下,插入一些数据库访问的代码就OK了。在这样的指导思想下,我做了一个PHP框架,设计了一张超多字段的表。大多数项目,都可以用这个表结构,而且,相应的后台管理界面,完全可以一模一样,前台开发,几乎可以立等可取。总的效果,还是很令人满意的。  
      到了2002年左右的时候,公司开始主攻电子政务市场,再用PHP去谈项目,就相当困难了,因为PHP给人一种相当随意简陋的感觉,在政府那边,拿不出手。再加上EJB当时已经如日中天,各大厂商都在不遗余力的鼓吹。重新做一套java版的框架,成了我的首要任务。而在此之前,我从来没有接触过 java。  
      在此之前,我几乎从来不买任何软件开发相关的书籍,但是Java似乎不是一个可以随便翻翻手册就能学好的语言,于是,我买了两本对我产生重大影响的书《Thinking in Java》和《Java与模式》。在看了这两本书,尤其是在对面向对象和设计模式有了较为深入的了解以后,我才意识到,追求可重用性,其实一直是软件开发的重要目标,而我原来的那些PHP语言作出来的山寨框架,实在是太不入流了。再后来,我又看了《重构》,于是:追求可重用性,追求代码的简洁美观,追求漂亮灵活的设计模式与架构,成为一段时间内我的目标。  
      在现在的我看来,这段追求代码质量的日子,可以说是一段弯路,当然,也非常有价值,回头在讨论面向对象的时候,再深入分析一下。再后来,我有加盟了另外一个做P2P视频软件的公司,后来又在一家做手机网络游戏的公司里干了三个月。在网络编程的领域内,系统性能,负载能力,健壮性,容错能力等等要求,变得非常的重要,而代码美观程度,只能是作为次要考虑了。  
      在我的开发经验中,一直存在着一个重大的缺憾,那就是没有机会去接触算法密集型的项目。在我从事的这么多工作和项目中,几乎没有需要我去研究算法的问题。要么是业务上的,要么是功能上的,要么是架构上的,总之不是算法上的。也不知道什么时候,才有机会补上这一课。  

      2、对于开发语言的一些认识  
      对我语言的认识,分为三个阶段,在初学编程的时候,“看山是山,看水是水”。BASIC是BASIC语言,Logo是Logo语言,C是C语言,各不相同,需要分别学习、记忆和掌握各自的知识点。  
      等到渐渐地运用纯熟了,可以触类旁通,才发现以前学过的那些语言和将要新学的,总有这样那样的相通、相近、相似之处。任何一门语言,我都能快速上手。在意识里语言已没有差别,无非是语法与关键字的区别而已。然而,过了很长时间我才发现,那时的自己远没有到达最高境界,最多也不过是“禅有悟时,看山不是山,看水不是水”了。  
      大约在2002年的时候。我看了《Thinking in Java》这本书,进一步深入了解到Java语言的许许多多的细节和深刻的内涵。才醒悟到我以前所谓的掌握多种语言,其实还是只掌握了一门语言,就像《天龙八部》里的鸠摩智,以小无相神功,耍那少林七十二绝技,其实却都不过是一套本事罢了。而且更为重要的是他更加意识到要真正用好一门语言,发挥一门语言的长处,理解这门语言的思想内涵,实现细节是非常关键的。而实现细节是各个语言自身的特色,到头来还是要把不同的语言,当成不同的语言来使用。看山仍然山,看水仍然是水。  
      在此之后,我又接触了Ruby语言、Delphi语言、C++语言还有Pyhton和ActionScript,在不同项目里穿插使用,用不同的语言。目前我的观点是:日常工作可以用ruby,特殊的日常工作可以考虑JRuby,Web应用当然是Ruby,桌面应用首选依然是Delphi。实在不行了,万不得已也只能用C++。  
      另外,目前有一个相当明显的趋势,就是多语言混合编程的项目,越来越多,这方面我也没有太多好的实践经验,但是从直觉上来看,我认为还需要等待总结出新的开发范式,从理论的高度,来指导今后更加复杂的开发。  

      3、有关面向对象的话题  
      关于面向对象,我有很多可以说的内容。从2005年5月到8月,我写了一个相当长篇的连载论文,叫做《敲响OO时代的丧钟》,在JavaEye论坛引来了众多的围观者和探讨者。原文实在太长,总结一下的话,就3句话:  
      1、以静态类型为定义基点,将数据与操作封装在一起,称其为类型。是一种错误的做法。  
      2、OO在封装类型的基础上,逐渐发展起来的继承、多态、重用、泛型、原则、设计模式、重构乃至AOP等等小手段和大名词,都是在错误的道路上,越走越远。  
      3、我设计了一种基于消息通知的新的语言DJ,将数据与操作,动态的绑定在一起,既满足了灵活性,又考虑了概念的自洽性。  
      在此之后,北京的徐昊发了一篇长文:《丧钟为谁鸣?》深入的分析了我的谬误,基本上,当初我的批判对象,实在是过广了。OO的领域其实非常的大,而我对于OO的了解,却始终不出Java、C++的范围。后来我才逐渐理解到,我所向OO开的炮,90%只应该打在Static Type OO的身上。当初夸下了海口,如今只能羞愧万分,还是学习得不够多啊!  
      在学习了很长一段时间的Ruby之后,我对面向对象的概念又有了更加深入的了解,但是,在目前多核与并行计算逐渐兴起的情况下,又逐渐发现,动态类型OO语言在追求高性能目标时,同样不是最好的方案。详细的讨论,可以在 JavaEye搜索Trustno1的众多文章。  
      总之,学无止境,还需努力啊!  

      4、有关软件架构的一些经验  
      在工作的经历中,我主要做过5类软件:IDE、Web门户网站、企业与政府信息化应用、P2P网络应用和桌面软件。在做IDE和Web门户网站的时候,我从来没有思考过软件架构的问题。而在做P2P网络应用和桌面软件的时候,由于工作的关系,我也没有再深入的、集中的思考过软件架构的问题。因此,关于架构的很多看法,我的经验基础,是来源于WebMIS类应用的。  
      1、绝大多数信息化管理,面对是能够以树状形式组织起来的各种信息。对于一个企业或者政府的需求调用,应该先从对于“信息”、“数据”、“资料”、“文档”的整理、分类、分析开始。  
      2、能够明确决定归属的信息节点之间,存在着明确的“父子关系”。但是除了父子关系,节点之间还存在着其他可能的关系,比如“参照”、“引用”、“相关”等等关系,需要进一步分析和规范化。  
      3、对于每一个信息节点,不同的人、不同的角色、在节点所处的不同的状态下,能够对之进行不同的操作。这就是自然浮现出来的“权限管理”与“工作流”的概念。  
      4、基于这样的一种架构设计,前期的需求调研与后期开发维护,也会变得非常的自然,开发效率也会大大的提高。  
      基于这个架构,我用Java语言做了一个名叫iMIS的框架,也就是“集成管理信息系统”的意思。基于这个框架,我除了做了一些企业和电子政务的项目,还用它开发了一个房地产的门户网站,还有一个主题词管理的工具。在自己已经有了一套自己的思路之后,我才看到了《企业应用架构模式》一书。说实话,颇不以为然。  
      但是,在开发P2P软件的那段时间,我非常有幸,招到了开发Java  NIO框架“Cindy”的作者陈睿,来做我们那个软件的网络部分开发。在深入阅读NIO源代码和Cindy的源代码之后,我逐渐发现,这个一个完全不同的架构领域。其中的思维模式,关注焦点,常用技巧,与我以前的信息系统的开发经验,是完全不同的。而且,在我看来,网络应用编程这个领域,架构的模式,要比信息系统领域,成熟得多。也轮不到我来贡献些什么,深入理解、灵活运用就行了。  
      在转入桌面软件开发之后,我们当时选用的是Delphi语言。由于深受测试驱动开发思想的激励,我也一直希望能够在桌面软件开发中,引入测试驱动的做法。但是却很不成功。Delphi作为一个被Borland经营多年的语言与开发工具,已经形成了一套非常完整的开发模式与架构模式。而这些模式,是在设计模式、重构、测试驱动等等思想成为潮流之前,就已经成熟了。因此,要引入基于设计模式的测试驱动方案,就非常困难。我们在网上找到了一个叫做eMVC的Delphi  MVC框架,但是这个框架在2006年以后也就停止开发了,本身用起来也非常别扭,有很多画蛇添足的地方。所以,后来也就只能放弃了。  
      再后来,又接触了Ruby语言,在Ruby的环境下,考虑软件架构,又有很多不一样的问题,这里就不再展开了,说说我的一些观点总结吧:  
      1、软件架构与应用领域,严重相关,很难跨领域的沿用类似的软件架构。  
      2、软件架构的设计,与语言严重相关,好的软件架构,应该是充分利用了这一语言的特性,同时也充分尊重这一语言的特性,也有助于充分发挥这一语言的特长。  
      3、测试驱动开发的思想,发源于企业应用领域,但是在图形用户界面(GUI)类的项目方面,存在一些固有的困难,很难被优雅、完善的解决。这也同样影响了架构设计时的考虑。  
      4、从Java语言出发的,企业应用架构模式,过度主导了目前的软件架构观念,这不是什么好事情。  

      5、开发管理方面的一些经验  
      我在管理方面的经验历程,相当古怪。大四的时候,我就当上了项目经理,管理5个人。工作以后,6年半的时间里,我一直战斗在第一线,最多带两个弟兄,一起去拼项目,连项目经理都算不上,最多是开发小组长。接下来的两年半,我摇身一变,成了CTO,却始终只有两个手下。再后来,做了3个月的架构师,然后当上了印客网的技术总监,到现在已经快3年了。要说正儿八经的管理经验,我只有3年。之前的时间,可以说一直是以一个团队成员,最多是TeamLead的身份,来看待管理、思考管理的。  
      在真正担当IT管理者的角色之前,我的想法很多。我看了很多的管理学的书籍,心理学的书籍,经济学的书籍,企业战略学书籍,反正是作为知识储备和思考的参照物,我看了很多,也因此对于当时所在公司的各个阶层的管理,有很多很多的不满。总觉得他们应该如何、如何,就能够做得更好。也经常在设想,如果我是管理者,就会如何如何。  
      在当上CTO以后,我开始有权力招人了。按照自己的设想,订立自己的规则,也果然招到了非常非常优秀的伙伴。当时我的确是相当的得意,还特别写了一篇文章,叫做《招人不难》。当然,现在回过头来看我的那篇文章,也还是相当有价值的,没有什么太大的问题。  
      不过,在管理的问题中,招到人,只是一个开始。真正困难的是,把人招进来以后,该怎么管理。后面的一大堆问题,其实要困难得多。  
      首先面对的问题,就是在快速变动的需求与频繁发布的压力之下,在有限的时间和人力的限制之下,如何控制项目风险。后来经过思考与总结,形成了一篇文章,《知易行难的软件开发风险管理》。说的其实是最简单的道理:风险无处不在,时时小心才能减少风险带来的损害。一篇文章,说了四个部分,其实最重要的一点没有说清楚:“知易行难!”  
      后来,在我的Google  Docs,一直存着一篇未完成的稿子,标题是《Check-Driven   Management》,开篇的第一句话就是:“纸上得来终觉浅,绝知此事要躬行”。大概的思路是,在软件开发中的TDD(测试驱动开发),引申到管理上,就可以称之为“检查驱动管理”。之所以一直没有完成并发表,主要还是因为,这始终是一个程序员转型为管理者过程中的一些不成熟的东西。对于整理自己的思考有价值,但是对于他人,价值寥寥,不发也罢。  
      到现在,我对于开发管理的看法,可以说是相当看不上理论的东西。因为,那些高深繁复,精致优美的理论,并不是为我所准备的。我现在自己面前的那碗饭,都还没吃干净呢?要说现阶段最为重要的任务,那就是培养自己形成一些有效的管理习惯,如此而已。  

      6、杂感  
      杂七杂八的感想,还有很多。能够归入“成长”的却不多了。想到哪说到哪吧。  
      一直有这样一种感觉,技术方面的东西,往往是“知难行易”。理解起来很困难,一旦理解了,其实很容易做到。而管理方面的东西,却往往是“知易行难”,都是些常识性的东西,但是要坚持做到,却非常的困难。不过,后来读到了一些有关王阳明的“知行合一”的理论。似乎在他看来,如果是行得不够好,那就肯定是知得不够深。而且,要知得够深,也一定是不能脱离行的。想来也的确有道理,但是也还远没有参透。  
      程序员的成长,有很多偶然性的因素,其中可以明确的一点是:通常程序员都是伴随着企业一起成长的。我有一个朋友,7~8年前去了美国,进了当时的新蛋公司。那真是只有三五个人,七八条枪。但是到了现在,随着新蛋的发展,她也随之不断的成长,现在已经是美国新蛋总部,独当一面的技术主管之一了。这其中当然有很多运气的成份,假设她当时进了以后2~3 年后倒闭的公司,也未必能有现在这样的成就。但是,另一方面,她的成就从根本上还是源于她的努力。如果不是持续的努力,一个逐渐不能胜任的“元老”,早就被快速发展企业给淘汰了。还是那句老话:“机遇总是垂青有准备的人。”  
      “地图意识”非常重要。我一直以来的观点是,世界是一个整体,在这个巨大的世界之中,任何事物、任何知识,任何观点,都有其合理、自然的位置。理解这个世界的过程,就是逐步将需要了解的各种事物,在作为整体的一个世界中,找到其位置。了解这个位置的前后左右,相互关系,相互影响。这样的理解世界的学习方式,我认为是最为有效的。对于程序员而言,我推荐阅读《代码大全》,因为这是软件开发的世界地图。
      在网络上与人争论,在某一个阶段,能够让人飞速的成长。前提是:任何争论都不要抱着死不认输的心态。但是,在一定的程度以后,网络对人的帮助就不大了。无论是争论,还是网上的文章,大多都是给人一些“点”上的知识,很少能给人以“面”上的知识。零散与不成系统,是网络知识的特点。在工作中,可以拿来应急,但是不适合用于深入的学习。现在写blog的人越来越多,我也订阅了很多的blog,但是,现在我也越来越发觉,这样漫无目的的阅读,容易消耗大量的时间,而且容易令人迷失,往往得不偿失。
      总之,成长虽然野蛮,但是的确是一路成长过来了。
    回复

    使用道具 举报

    0

    主题

    5

    帖子

    100

    积分

    一般战友

    Rank: 2

    精华
    1
    威望
    75
    K币
    25 元
    注册时间
    2009-9-8
    地板
     楼主| 发表于 2009-9-9 09:16 | 只看该作者
    我的大学

    http://blog.youxu.info/2009/08/06/my-undergraduate-year/#comments

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

    数理化和好老爸

    我的小学是在农村里和爷爷奶奶度过的。我的父母住在小镇上,两人平时都要工作,没空照看我和我弟弟。所以,我只有周末和放假才到镇上,和父母弟弟在一起。四年级升五年级那个暑假,我到了镇上,和父母在一起。因为一起抓鱼钓虾的玩伴都在老家,百无聊赖的我开始乱翻父亲的书橱,找书看。某天,我翻出了一本叫做《平面几何一题多解》的书,那是本封面很好看的书。我把整本书翻下来,每个汉字我都认识,但每个符号我都不懂。好奇的我于是问父亲,这个书讲的是什么呀,怎么从来没见过这些奇怪的符号呢?他就告诉我说,书里讲解的这个东西,叫平面几何。他接着问我说,“平面几何是个很有趣的东西,你想不想学呢?” 我说,当然想啊。那时的我,其实只是一个好奇的小学生,迫切想知道这个书中的图画和符号的意思。我肯定不会想到,这个很随意的决定,改变了我其后的整个人生。

    听了我肯定的回答,我父亲立即从书橱里层(我家书太多了,书橱太小,书橱里书分里层外层,外层的书挡住了内层的书脊,我从来都不知道里面还有宝贝)变戏法一般的翻出了本《数理化自学丛书–平面几何》。对于我父亲这一代人来说,《数理化自学丛书》是代表着知识,荣耀和梦想的。我感觉他翻出这本书的时候的动作是虔诚的,但当时的我并不知道我父亲在这套书上寄托的希冀和梦想。我只记得他告诉我,当年这套书,用去了他大半个月工资。就这样,从五年级开始,我就在父亲的指点下,开始蹒跚前进学习《平面几何》。从一开始不知道什么叫 “证明”,需要他一字一句帮我厘清逻辑关系,到后来全是自学不需要他教,我很快就喜欢上了自学这种学习方式,每天自己看书并且做八道题。暑假过完后,我就回到了爷爷奶奶的老家。父亲让我继续自学,并且布置我一周做八道题。我在爷爷奶奶家,每天放学回来不做家庭作业也不看动画片,就赶紧做一道几何题。做几何题的妙趣,是不融入其中的人不能理解的。比起小学里的抄生字,抄课文这种作业,做几何题是脑力和体力的双重享受。当时,我周围没人可以讨论切磋,全靠自己。遇到不会的题目,我只能自己冥思苦想,或者熬到周末和父亲讨论,因此,常常被一道难题从周一折腾到周日。好在这套书是粉碎四人帮后出的第一版,当年学生的数学水平比不上现在的学生,而这本书又是以自学为主要切入点,所以题目相对也简单,我冥思苦想几天后大体上也能想到解题思路。因此,我能够常常体验百思得解的愉悦感。我觉得,这种时常拜访的愉悦感,让我很早就开始相信独立思考的力量。

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

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

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

    我的高考成绩还很不错,高中还拿了一个数学联赛一等奖,所以,我是带着对自己数学知识(为了准备数学竞赛,我看了很多闲书,有很多就是大学数学系的教材)和学习方法的自信满满,和对南大数学系这个相对不好的选择的遗憾和自卑(当时的高考分数可以填报更加好的学校或更加喜欢的专业)来到大学的。当时我的心理状态可以用八个字概括: 极端自负,极端自卑。这种心态,一直笼罩了我上大学的头两年,而且总是以一季度为周期,在两极之间交替变化。我在学期开始往往很自负,到期中考试左右很自卑,然后再自负,再自卑,不断反复。

    在我看来,极端自负这个心态,其实不是因为自信,而是因为极端自卑生出的应激反应–为了掩盖自卑,只好用自负来掩饰。为什么我极端自卑呢,大体来自两个方面,一个是我的成绩排名在高中都是很前的,但是到了大学就 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 书架。

    大二,而今迈步从头越

    大一大二基本上就是在不断的心态波动中前进。我学会了 Java, 也做了不少题,但是考试成绩一直不是很好,因此我比较苦闷,迫切的想要改变这种状态,我的想法是,要么转系,要么好好学习数学。但是转系阻力重重,我又不愿意耐心去学习数学,所以我一度非常纠结。但是大二下学期,我遇到了两个对我人生产生影响的两个人,这两个人让我从正弦曲线般的心态沉浮中跳了出来,让我一下子变得目标坚定了。

    第一个人是我的同学以及非常好的搭档,现在在 IBM 工作的李获鼎,另一个是我的叔叔。他们让我变得沉稳,消除了原有的浮躁,学业和心态都走向了正轨。

    大二上学期要结束的时候,我们数学系的学生会主席就说,在下次数学系搞的文化节上,要弄一个叫做 模拟股市的软件,让大家来炒股。我那时候觉得挺简单的,也特自信,就说,明年我来搞吧。后来我记不得是我找获鼎还是他找我了,反正两个人决定一起搞。寒假他在家自学 JSP, 我就在家看 JDBC 和 SQL。 开学没多久,我们就开工了,他负责写前端 JSP, 我写 Java Bean。两个人编程比一个人好多了,可以相互看代码,而且可以轮流工作,克服浮躁感。我写程序比较粗线条,基本上功能有了,细节就不管了。他比我认真细致多了,前端一个表格的宽度和颜色都要调好久。在他的影响和“胁迫”下,我做事情也变得细致起来,因为我不细致,他的前端就没法正常工作。那时候他也是一边写一边学,对着书一行一行的敲 JSP,态度比我敲 TIJ 时候还认真。和他在一起工作了 20 天,把玩具项目写完后,我也变得踏实起来。做完了模拟股市这个小程序,玩这个系统的同学都挺喜欢的,我的自信心也就有了,心态也平稳了,态度也踏实了,自然地,自卑心理就没了。随着自卑的消失,极端的自信也消失了,简单的说,我心态变得正常了。这时候,虽然还有点小迷茫,我开始思考以后干什么的问题了,听课,做作业也比以前认真不少,成绩也上去了不少。

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

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

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

    大三是我看书最多,思考最多,积累最多的时候。大三我并没有做任何其他事情,主要就是沉稳冷静的做事情,用不断的做事情看书和思考,压抑心底深处的对前途的迷茫。其实整个大三,我都不知道自己要干什么,在干什么,只知道就像一个运动员一直往前奔。大三我们班很多同学都开始准备 GRE 了,我也就跟风准备 GRE。说实话,当时我捧起红宝书的时候,出国的动机并不强烈。那时候我并没有对美国和中国在各方面的差距有清晰的认识,且过于小看环境对人的影响。潜意识中,我想读计算机,但是考研比出国转计算机要简单多了,学长也告诉我,申请计算机专业很难,我们数学系也鲜有先例。因为正方面没有很强的激励,反方面又觉得困难重重,我就不是太把出国当回事,除了背背单词,我把主要的精力放在了读计算机书上。我专门扫荡 TP.312 (计算机理论和编程)那个分类,同时看了很多英文原版书。TP312 中的大部分书,我都是囫囵吞枣的看,做一些总结性的笔记;只有少数几本,如《计算机程序设计艺术》,《编程珠玑》这几本书,是认认真真看的。这时候的我已经没有时间,或者说耐不下性子一条一条做题了,只能浏览一些题。即使这样浏览,也让我在后来大四的工作面试中占了很多优势。

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

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

    大四,书到用时

    大三的迷茫让我不确定以后的方向,未被现实验证的自信又让我蠢蠢欲动,所以,我就自然的产生了“赌一把”的心态。 如果以赌博为喻,我就是在所有的盘口上都了下注,要不全输光,要不总能赚,而我相信至少能赢一盘。

    所以,大四甫一开始,我就拟了一个时间表,自信满满地想要在考研,找工作和出国的三条战线上都有所突破。我设想 11 月之前弄完出国材料,并且把简历弄漂亮,顺带找工作。1 月前寄材料,套磁,准备考研,4月前搞定一切,等 offer。 5-6 月我就写写论文,然后周游中国了,等我周游回来,至少三个机会让我碰到一个吧,我就从了那个就行了。从这个狂妄的计划中可以看到当时的我的自信,不过我这个自信倒是有一定根据的,因为我研究了考研的模拟题和找工作的不少案例,我当时想,好好准备,应该可以上南大,工作应该可以进腾讯,出国我没底,所以我也想用前面两个来保底。

    大四只有一门课,所以我就四处乱跑,乱逛。学校有国际会议,我就跑去和老外搭讪;鼓楼有关于佛教的演讲,我也跑去听;IT 公司的宣讲会和笔试,遇到好的我就去参加参加。如果没事,我就上自习,继续读鼓楼图书馆的书。就这样,我遇到了一个又一个的机会,基本上不管成功失败,都算是有付出就有回报,当然运气成分也不少。

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

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

    找工作还没全展开的时候,我就要准备考研报名了。我选择了北大生物系的生物信息学专业。其实这是一个让我可以到北京的小聪明,而不是一个全面慎重思考的结果。当时我看到,这个专业只招两个人,而且试题是和计算机系一样,于是我想,除了我这样的一门心思想去北京的,哪个人会绕这么大一个弯子去学生物而不去学计算机呢?其实我自己也不敢挑战计算机系,因为我知道难度太大了,但是我又很想到北京去,就想了这个暗度陈仓的办法。我当时还想,考上了,要是不爽,读一年俺就退学找工作。2005 年末的大环境和现在是不一样的,那时候 Web 2.0 的呼声很高,让我觉得搞创业比读研有前途多了。 不管怎样,我自认为很小聪明,就报名了,当然考完才知道,就为了这两个名额,有40多个人来考。

    我要感谢当时同系的两个同学苗文建和王琨,他们都是准备考北大计算机,即和我考同样的试卷。他们资料很全,我就和他们一起上自习,蹭他们的看。大四我买书花钱很快,到了考研这时候是真的舍不得花七,八十块钱买自己看不上的辅导材料和教材,所以就借他的看。那时候考研的教材是北大的 《操作系统》和《离散数学》。其中操作系统的教材,行家都知道这本教材参考了不少 Tanenbaum 的,我也看过 Tanenbaum,就不大愿意再买一本。前面我提到过,我大一大二做过一本离散数学教材上所有的习题,所以离散数学我没化太多精力。至于政治,我是经历过3+X 高考的人,基本上考过政治的人都知道,考好考差和复习不复习无关,至于和什么有关我就不在这里多说了,总之就那么几句话翻来倒去的,命题套路很容易掌握,比揣摩圣意的命题者更加聪明,对于受过大学教育的考生,是个很简单的事情。我最后成绩还不错,考了个专业总分第一,其中数学完全是离散数学的功底,考了个 136, 英语也是靠准备 GRE 托福的底子,考了差不多80。政治也差不多 80,专业课运气很好,正好 90 分搭线,就这样糊里糊涂的考上了。

    考研这个事情,我至今觉得运气远大于真正的付出,结果也非常出乎我的预料。记得结果刚出来,同学帮我查分的时候,我根本不相信自己考这么好,还放话说如果考这么好,请全宿舍吃饭(我记得兜里面当时只有200块钱,根本没法请人吃饭,后来还是借钱请客的)。考研结果出来之后,迷茫的我得到了一个非常好的保底,我就比较得陇望蜀了。其实在当时我的心里,我并没有认真想过以后要具体干什么,只是隐隐约约觉得要不去北京,要不就去美国。有了北大这个机会,我就调高了自己的心理标杆,定下了两个大的,具体的目标,或者说是圣杯,一个是进 Google 中国, 一个是到美国名校读计算机,有了考研这个保底,在2月份过完年,我就不慌不忙的认真准备这两件事情了。

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

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

    出国的事情也没闲。我觉得直接靠寄材料申请计算机希望渺茫(我先前直接申请了几家数学和计算机,都是拒信飞飞),所以我就押宝在套磁上。另外,我觉得得弄篇论文才能让材料有分量,就回忆以前乱读的一些论文,再找看有没有最新的值得跟的工作。就这样不着边际的乱找,还真的就碰到了一个感兴趣的题目,一个不大成熟的想法,和一个正在征稿的会议。于是,迅速的写论文。凭着数学功底,编程功底,和 LaTeX 熟练程度,几天敲玩了文章主要部分,然后就是不断的改,不断的语法检查,写程序,做实验。总的来说我运气很好,7天之后,压着截至日期,把文章交出去了。 2006 年的 LNCS 还是被 SCI-E 索引的,那时候我觉得自己一个本科生独立弄篇论文还是挺不容易的,很得意,于是拿着新的简历,一边准备考研,一边套磁。

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

    其他闲话

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

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

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

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

    使用道具 举报

    0

    主题

    9

    帖子

    18

    积分

    新手上路

    Rank: 1

    精华
    0
    威望
    0
    K币
    18 元
    注册时间
    2009-9-23
    5
    发表于 2009-9-24 00:29 | 只看该作者
    有没有电子版的哦
    回复

    使用道具 举报

    69

    主题

    1463

    帖子

    0

    积分

    新手上路

    Rank: 1

    精华
    2
    威望
    14455
    K币
    11954 元
    注册时间
    2009-4-6
    6
    发表于 2009-9-24 07:33 | 只看该作者
    支持楼主。
    计算机     苏州大学
    上帝没有给我翅膀,科学让我飞翔。
    回复

    使用道具 举报

    258

    主题

    6010

    帖子

    6万

    积分

    荣誉版主

    Rank: 8Rank: 8

    精华
    6
    威望
    42896
    K币
    20507 元
    注册时间
    2008-7-25

    考研论坛2010年上半年优秀版主

    7
    发表于 2009-9-24 19:34 | 只看该作者
    号不是随便可以封的
    回复

    使用道具 举报

    0

    主题

    503

    帖子

    1124

    积分

    中级战友

    Rank: 3Rank: 3

    精华
    0
    威望
    90
    K币
    1034 元
    注册时间
    2009-4-8
    8
    发表于 2009-12-3 20:47 | 只看该作者
    回复

    使用道具 举报

    5

    主题

    191

    帖子

    498

    积分

    一般战友

    Rank: 2

    精华
    1
    威望
    95
    K币
    403 元
    注册时间
    2009-3-9
    9
    发表于 2009-12-3 22:23 | 只看该作者
    貌似好书,考完必看,顶LZ
    对了,《疯狂的程序员》也推荐各位看看
    回复

    使用道具 举报

    0

    主题

    303

    帖子

    2039

    积分

    中级战友

    Rank: 3Rank: 3

    精华
    0
    威望
    702
    K币
    1337 元
    注册时间
    2009-3-31
    10
    发表于 2010-4-8 16:56 | 只看该作者
    看过电子书了
    《疯狂的程序员》下了一直没时间看
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册 人人连接登陆

    本版积分规则   

    关闭

    您还剩5次免费下载资料的机会哦~

    扫描二维码下载资料

    使用手机端考研帮,进入扫一扫
    在“我”中打开扫一扫,
    扫描二维码下载资料

    关于我们|商务合作|小黑屋|手机版|联系我们|服务条款|隐私保护|帮学堂| 网站地图|院校地图|漏洞提交|考研帮

    GMT+8, 2026-4-4 18:01 , Processed in 0.099703 second(s), Total 10, Slave 10(Usage:7.5M, Links:[2]1,1_1) queries , Redis On.

    Powered by Discuz!

    © 2001-2017 考研 Inc.

    快速回复 返回顶部 返回列表
    × 关闭