我在南达的七年
文/刘伟鹏
我进入NTU大门的第一天,我就知道自己有空。
我父亲是一个对新事物有浓厚兴趣的人。村里的第一台电视机是他自己组装的。当时,整个村庄都跑过去观看。电视机只收到一台,闭路电视。座机电话是第一个安装的电话。当“老大哥”第一次出现时,他也是当时第一个购买和使用手机的人。当时,手机真的很贵。
父亲告诉我的第二件最重要的事情是:如果遇到任何问题,只需找一本书。他的专业完全是自学的。在非我本人的专业中(购买计算机后,我需要学习如何设置公司网站,如何在线营销,如何进行电子财务管理,如何使用各种绘图软件制作绘图等) 。)也都依靠购买书籍进行自学。
为什么要提到这两件事,因为这是对我的生活影响最大的两种习惯。第一个习惯给了我学习新事物的强烈动力。充满热情和兴趣,我不会感到疲倦并乐在其中。第二个习惯给了我一种学习新东西的方式-不?检查这本书。 (当然,学习专业并不是完全通过阅读来完成的,但这无疑是一种至关重要的方式。)
当我父亲在高中三年级买了台电脑时,我立即对这种神奇的事物变得非常感兴趣。每期《计算机爱好者》和《计算机新闻》都将被购买并仔细阅读。有时我会看到各种小玩意,这些技巧会被摘录,然后回到家里的机器上玩。那时我还不知道这种纯粹的兴趣会导致我走上专业的程序员之路。
高年级的时间越来越紧,分配给利息的时间越来越少,但是兴趣的火花并未消失。
我进入NTU大门的第一天,我就知道自己有空。
这种*并不意味着我可以做任何事情,而是我可以*决定如何利用我的时间。
当我参加高考时,我申请了计算机科学系,但分数稍差一些,我没有参加。我被转到我的第二选择专业信息与计算科学。当时,我以为这个专业与计算机有关,但事实证明它属于数学系。后来我听到许多学生提到他们都是以相同的方式被捕的。
这里有一件严肃的事情:我不打算去数学系。如果我知道专业是数学系的,那我可能没有报到。但是正是由于这个错误,我在数学系接受了一些基础数学培训(尽管该培训是基于新生一年级的几个数学分析课以及每次考试前的宿舍伙伴的例程。“ Baoye”阅读)书籍),回想起来,这项基本技能对后来的工作大有帮助,有一段时间,我对数学本身非常感兴趣。我必须说,这种学习经历锻炼了抽象和逻辑思维。另一方面,如果您已经学会了数学等困难,您将不会对其他学科感到困难,也不会灰心。
这是我成长中的幸运之一。正如后面将要提到的,运气好几次。
大一新生的第一学期很快过去了。学校应该在新生的学期开设一门C ++课程。在假期里,我基本上不喜欢课本。当时的动机很简单。我先了,所以我不必去上课。
另一件事是,我经常喜欢去书店。当我看到侯捷的“ MFC”时,很多人说这本书很好。那时,我还具有一些C ++的基础知识和良好的印象,因此我购买了它。一方面,侯捷先生写的书的确充满了图片和文字,易于理解和有趣,另一方面,理解同一件复杂的事情却是一种智力上的挑战。因此,看着它,我感到很兴奋。但是我不知道它在C ++中是如此不可解。
这是另一种歪曲的攻击:为什么将其称为“批评性跳动”?另一方面,因为不能说MFC的设计是C ++的最佳实践,所以如果它是基于用法的,则可能不需要了解MFC的原理。所以也许我现在不会仔细阅读这本书。为什么它是“正确的”?因为了解令人困惑的事物本身需要长时间的关注,并且需要实践中的理解力和精神力(注意力)。另一方面,尽管MFC并不是最好的设计,但了解内部代码会增强对C ++本身的了解。这是一项基本技能。它也增强了我对C ++的兴趣,这是一种动力。后来,这种动机促使我去研究许多系统底层知识,而且我总是从操作系统代码中看到硬件体系结构。
大二那年发生了几件重要的事情:首先,我发表了有关程序员的第一篇技术文章,该文章旨在分析Boost源代码。我不记得我何时,如何学习Boost库。简而言之,我知道这一点,然后它也受到侯捷先生的源代码分析的影响。我也查看了源代码,发现它很困难。它越困难,就越困难。我觉得很有趣。凌晨四点,跟踪代码变得越来越有活力。后来,我迅速编写了源代码分析。它被发送给《程序员》杂志的技术编辑孟岩先生。孟岩先生给了我很多鼓励,所以我很兴奋。后来,我一次性分析了N个库,并撰写了一系列有关Boost源代码分析的文章。您可以在Internet上找到此系列。
这是第二个恶作剧。理所当然的是,学习语言技能并不是程序员最佳的时间投入方法。因此,现在我可能不这样做,我认为有更好的时间投入方式。但是随后他陷入了困境。为什么会这样呢?因为虽然这可能不是最佳的时间投入方式,但总比不专注于任何事情要好。至少,您对语言的缺陷和陷阱有更深刻的了解,并对代码有亲切感。 ,要耐心进行跟踪和调试(是的,要有耐心,而不要有技巧)。
因此,之后,我在博客上总结了学习编程的弯路。孟岩先生说,要确定是否绕道不是那么容易。
确实,也许有更好的方法,但是事先很难判断哪种方法是最好的。我们可以做的就是渗透并加深道路,只要这不是太可靠。频谱之路,在深入的过程中总会有很多收获。 (鼓舞人心的)只要您不是太固执和善于自省,总有一天您会逐渐意识到这种越来越可靠的方法。
除了发表第一篇技术文章外,我在大二的业余时间也做了一些技术翻译。在寒假期间,我每天晚上坐在家里翻译半个章节的“有效C ++”。当然,我后来将翻译提交给了出版社。在编辑时,我被告知写作风格仍然很钝。
同时,我继续阅读许多有关C ++和底层知识的书籍。有一段时间,我的书架上装满了这些书,不像数学系的学生。在非典时期,我用所有的钱来买书。为什么我买那么疯狂?这也是因为我父亲的影响。他告诉我,我不必担心会买书,因为这是一项长期投资,而且收益远远超过这笔钱。那时,我观看并编写了一些代码来玩。有模仿Windows核心程序的小程序,尝试了失败的小游戏,以及用于分析宿舍中播放的游戏文件并编写计算机测试工具。简而言之,图书馆很有趣。与许多著名的程序员编写的在学校中广泛使用的工具不同,当时我根本没有这种意识,我也不知道什么是开源,所以我很开心。就是这样,因此没有系统可以训练相当数量的编码和编码素养。
重要的事情发生在大二的下半年。我在CSDN上开设了一个博客,并开始写一些学习C ++和编程过程的摘要。到目前为止,我一直在写此博客。整个7年的学习和成长经历一直伴随着我。回顾过去,它就像一台时光机。我可以看到我一直在关注的东西,我的想法以及一些对事物的看法是如何改变的?如果这些事情没有记录下来,它们将逐渐被遗忘,它们将无法参考过去的自我,并为未来提供更好的参考。因此,我一直认为录音是非常重要的工具。此外,我还通过此博客结识了很多朋友,并获得了很多帮助。
后来,学校提供了转学到软件学院的机会,我立即报名参加。接下来的两年是在软件学院度过的。但实际上,我也自己安排时间,所以没有区别。
在第三年和第四年发生了几件重要的事情:首先,Glory先生邀请我共同翻译“ Imperfect C ++”。我很高兴将它记下来,但是我没想到这本书比我想像的要稠密得多。一百页,而且版面非常密集,我每天为自己安排6或7页,花了半年多的时间才能完成翻译。有一段时间停滞不前,格洛里先生鼓励我并告诉我一种重要的方法:如果您觉得自己不能再做了,那就硬着头皮坚持下去。然后就像麻木一样,适应,犹豫的感觉会逐渐自动退缩。这非常简单,但这是事实。在最艰难的情感时刻之后,只是硬着头皮去适应它。翻译完本书后,仍然会有很多收获,但是我始终觉得,调整角色是最有价值的收获。
其次,我开始阅读本书的英文版。以前,由于高中英语教育不可靠,我讨厌英语到死。大二学生的第四级课程仍然缺席,直到第四年我才补考。但是对技术本身的热爱使我对英语的厌恶变得不堪重负,我仍然强迫复制全部副本,而且,这本书很有趣,是Jeffrey Richter的“应用的NET Framework编程”。这件事的重要性在于我不再讨厌或害怕英语。这就是其中之一。另一个是我开始意识到英语世界中技术信息的丰富程度,因此尽管它本身似乎并不是一个压倒一切的事件,但这却是我获取信息的转折点。一旦掌握了语言平台,它的后面便有一扇门,通往大量的信息源。后来,我获得的大部分信息都来自英语,尤其是*和英语版本的书籍很多。另一个好处将在后面提到。
当我高三毕业时,另一件事发生了。微软的埃里克·江(Eric Jiang)通过我的博客找到了我,并建议我去微软进行采访。我只是发送了一份粗糙的履历,差点被履历所骗。人力资源被直接过滤掉。有两轮的远程电话,一轮的远程编码,然后我想起了飞往北京的一次采访,并住在北航宾馆。在北京进行了几轮采访,包括那些调查底层知识的人,那些调查C / C ++,Net,算法和编码素养的人。简而言之,这是公认的基本技能调查。最后,我仍然没有通过面试。后来我得出结论,基本算法太差了,我什至不知道动态编程是什么,并且编码能力还不够。这也是部分因为本科学习方法过于业余。要做的有趣的事情不是说兴趣不好,而是缺乏系统的计划。我不知道或不在乎这个领域的蓝图,我不知道这是什么意思。后来,当我在研究生院时,我制定了一个算法,并以某种方式找出了一些基本概念和思考方法。编码素养的问题仅在我读研究生时就开始思考和学习,而我仍在学习。
另外,在大学阶段,我实际上浪费了很多时间。实际上,我只花一小部分时间学习。我学到一些东西的原因完全取决于专心的习惯。自从我父亲还是个孩子以来,这种集中注意力的习惯就受到了父亲的影响。我父亲会花一整天试图找出一个问题。父亲告诉我一个故事,说他什么时候组装电视都看似正确,但电视却没有。工作。他在努力思考,无法理解。那天晚上,深夜,他从睡眠中醒来,想到了问题的症结所在。因此,如果我不懂一些基本知识,我将一遍又一遍地阅读它,然后利用在汽车中的步行,进餐和乘车的时间来反复思考。我有很多重要的习惯,受到父亲的影响。这些习惯通常不会被我自己察觉,但是它们已经静默地影响了通常的时间分配和学习轨迹。这些习惯很难从纸上学习,但不受我的耳朵的影响。会自然学习。
每当有人认为我在本科课程中做了很多事情时,我都会说我的本科课程确实浪费很多时间。另一方面,这也表明,掌握专业知识,实际上每天都是一点时间。专注,积累和坚持就足够了。后来,研究生阶段才真正开始浪费时间,因此经过两年的高密度学习和思考,思想成熟了很多。
高年级时,我和很多人一样,也参加了研究生入学考试,因为一方面我茫然无措,另一方面,我也希望我可以继续拥有轻松的环境,继续沉浸在我的兴趣中但是在过去的四年中,我自己安排时间,逃脱了无数的课堂。我已经抵制了标准化考试,所以没有准备对研究生入学考试进行复习。那年的研究生入学考试的数学题很困难。我感到恐慌,但我忘记按照手稿进行操作,这表明我的心理准备不足。数学测试后,我感到非常沮丧。我没有提出高价值的问题。数学绝对不会通过。我没有上下一堂专业课。后来,我考虑了一下,实际上,我应该参加考试,我明年可以积累多少经验。
之后,我工作了,没有去微软。在同学张震的推荐下,我去了南京西门子。我内心的意图是在工作时参加研究生入学考试。为什么要参加研究生入学考试并且动机很简单。我还没准备好本科学位只专注于娱乐,而不关注方式。我不知道我想要什么样的工作或我想做什么。东西。去西门子之后,我感到更加。我觉得效率很低,做事也不高兴。我每天不得不在公共汽车上浪费两个小时,所以不久后我辞职了。计划审查研究生入学考试。那时,还需要超过半年的时间才能参加研究生入学考试,所以我又中途翻译了“ Exceptional C ++ Style”,这花了很多时间。最后,时间非常紧张,只剩下两三个月了。我刚刚开始认识到它,回想起来这是糟糕的时间管理。结果,我不得不制定最糟糕的计划:最多,我转到软件学校攻读研究生院(我向计算机系报告)。考虑到我还是自己安排时间,差异不应该太大。幸运的是,我终于通过了测试,没有任何区别,而且我在计算机部门工作。即使这样,我仍然觉得这种激动不应该发生。将来您或其他事物不会那么幸运。尽早做好准备总是很重要的。
在研究生两年半的时间里,我觉得我的心理年龄增长最快。这里还有一些幸运的事情。一件事是我的导师陈家俊先生给了我很多自主权,所以我有时间安排一些重要的研究。这一段时间对我来说很重要。我为未来的发展研究并考虑了很多事情。我做了很多准备,但没有做任何事情来帮助老师。因此,当我获得硕士学位后,我既感激又内。
另一件事是去见我实验室的资深研究员陈怀兴。严格来说,他是先和我说话。可以看出,那时我仍然没有意识到与人交流的重要性。后来,在建立TopLanguage讨论组之后,我变得更加了解。当谈到与他人交流的重要性时,我也开始积极寻求并参与交流,希望将来自己组织交流。陈怀兴在算法方面知识渊博,也是TopCoder的常客和好人。当时,我还在为将来的工作面试准备一些算法基础,因此我经常与他讨论并从中受益匪浅。有一种说法:见一个人,您只需要阅读他所读的书和他遇到的人。仍然有道理,这两个是对一个人的成长最有价值的信息来源。
经过半年的学习,我的女友在找工作时需要运用营销知识,于是我去找给她的书,偶然发现了《影响》一书。这本书开辟了我的视野,使我关注了一个非常宝贵的领域:我们如何思考,如何正确思考。在这个领域有很多有趣和有价值的书。我花了将近一年的时间陆续阅读了近40本相关书籍(我将这些书籍编成一本,并以bean列表的形式放在豆瓣上)。我对思维的特点和缺陷以及如何思考有很多了解。这些知识后来帮助我更清楚地了解自己以及我在学习和生活中遇到的各种问题。
经过半年的学习,我建立了一个Google网上论坛,并将其命名为TopLanguage。最初,是因为没有人讨论过这个问题,所以很不舒服。我希望有人能说几句话,不小心插入刘承银。后来,这个讨论组的交流越来越多。越来越多,现在已经快两年了,该小组有4000多名成员。在这两年中,我也从中受益匪浅。最大的两个好处是:首先,与他人讨论可以激发我的进一步思考,也可以提示我更清楚地表达您的意见或问题。并不是别人必须告诉您一些新东西,而是这种讨论激发了您自己的想法。第二个是我在交流期间遇到了很多朋友,并且在我即将毕业时得到了很多帮助。我一直认为TopLanguage的创建是研究生院要做的最有意义的事情之一。
此外,我有意识地提前准备英语,因为我相信如果我想去一家好的外国公司,我的英语口语可能会成为缺点(当然,英语作为承载最多的平台语言具有更大的价值)。技术知识)。包括阅读,写作和口语。我想到了一项不花额外时间来学习英语的计划:阅读培训包含在英语技术资料的常规阅读中。尝试尽可能多地阅读英语。首先,英语材料越来越全面,其次,您还可以练习阅读。写作培训包含在向外国邮件列表发送技术帖子以及我自己撰写的英文博客文章中。常规娱乐性美国电视连续剧中包含口语培训。一个暑假,我几乎每天都和朋友一起睡觉。此外,学校还举办了外国团队讲座,我不再错过了,但我主动参加了讲座,并把它们淘汰了。南京一天会说英语,然后在路上听中文就像英语。尽管我与外国朋友的交流不多,但是我的口语水平似乎有了很大提高。后来,在Microsoft Research Asia的最后一轮采访是用英语进行的,这是技术性的。幸运的是,我已经事先准备好了,所以毕竟我成功表达了我想要表达的东西。
我之所以去Microsoft Research Asia进行采访是因为我很幸运地遇到了Microsoft Research Asia技术创新小组的项目总监邹欣先生。邹新先生和他的团队在那段时期写了《编程之美》。书中有许多有趣的话题。在那段时间里,我与陈怀兴讨论了算法,并在讨论组中组织了专门的讨论。经过一点肤浅的思考,我通过电子邮件与邹欣先生进行了交流。由于我对邹欣先生的技术创新团队的工作非常感兴趣,因此我在找工作时向他提出了自我推荐。
在邹欣先生的推荐下,三年后,我再次有机会在微软进行了面试。这次,由于在研究生期间进行了一些长期的准备,我对自己的内心充满了信心,变得更加镇定。由于那年我填补了知识系统中的漏洞,因此面试很顺利。采访中,邹鑫先生更详细地介绍了技术创新团队的工作。我变得更加感兴趣。因此,尽管还有其他几个不错的选择,但我还是很快就下了决定。大约一周后,HR通知了要约,我毫不犹豫地接受了要约。
我认为,尽管有很多人了解他们想做什么,但我花了两年多的时间,还不算太晚。