万书网 > 文学作品 > 我是一只IT小小鸟 > 第8页

第8页


拿数据结构这门课程为例,严蔚敏老师的经典教材相信几乎学过计算机的人都是耳熟能详的,这本书上的算法和数据结构短小精悍。我们的授课老师,却只讲最简单的概念和不深的理论描述,给我的感觉就是,"数据结构"几乎是门和"离散数学"差不多的数学课--他用最肤浅的知识,"成功地"告诉了我们"数据结构"是门几乎不用动手写程序的课程,只用上课听听就好了。于是乎,一门需要动手实践、将会极大地提高我们编程素养和思维能力的课程,就被我们这样迷迷糊糊上完了。
震撼:在清华听朱仲涛老师的"数据结构"课
2005年准备研究生考试的时候,我旁听了朱仲涛老师的"数据结构"课,当时的感觉只能用两个字来形容:震撼。在他的课上,我对数据结构有了全新的认识,对计算机也有了一点与以往不同的了解。
他的讲课风格非常独特,他只用1/5的时间简述一下要讲的内容,剩下的时间都是当场写程序。著名的约瑟夫环、Dijkstra算法、Prime算法、快速排序、堆排序、锦标赛排序、Tarjin强连通分量、Convex  Hull等深的浅的,教材上有的没有的,全部在课堂上从0开始实现:每遇到一个算法,一边写程序,一边讲解,不懂就将程序的运行结构拿出来分析,并不时地穿插离散数学、概率论、内存管理、C语言、汇编语言等知识,几乎将我们学到的东西非常恰到好处地拿出来,让我们从心里面觉得原来所有的知识是连贯的,我们之前的积累都是有用的,并且富有成就感。
我清晰地记得他在工业工程系课堂上讲"栈"的时候,用计算几何中的Convex  Hull(计算几何中求凸包的算法,由美国ACM大牛Graham发明,该算法通过nlogn复杂度求出平面中一堆点的最外层包围矩形边界)来显示栈的使用。这个算法在A4纸上写说明最少也要两页,加上里面具体的技术,个人觉得可以给3个小时的时间来考查一个训练有素的程序员是否合格。而朱老师在1.5小时的时间里,一边讲,一边写,用最优雅的方式,完整地实现了这个算法,写完程序,一个编译错误也没有,成功运行,随机的点,优雅的边界,当时全班鼓掌两分钟。他说:"我很自信,即使是最顶级的程序员,也不能将我的代码优化多少了。"
他的课让我明白:"数据结构",以及一切计算的课程里面,凡是自己不理解的东西,自己说不清道不明的东西,其实有很多人是理解的。我的老师没有给我必要的关键性指导,但,不可否认有一些同学,他们总是先知先觉,他们总是会问"为什么这门课程要这么上",他们总是会思考自己是不是走在正确的路上,于是他们大量丰富自己的实践,从而也优雅地完成了本科学业。但遗憾的是,我和大部分我的同学们,就这样,因为缺乏必要的指导,迷迷糊糊、庸庸碌碌地过完了本科。
现在回想过去,才发现自己当时多么无知、多么机械。其实,不懂的时候,不管任何时候,你都可以去问老师、同学,从而节省大量的时间和精力。我们必须在年轻的时候有意地培养自己独立思考的能力,经常想一想,我要的是什么、为什么要做这件事、做这件事有什么好方法、这样做有什么好处和坏处、如何改进等,也要与人交流、沟通,讲出自己的想法,请别人指正。我们需要培养的是自己的思考方式,而不是简单地获取知识。
计算机专业需要大量时间,需要付出大量精力,也需要极大的耐心。但大部分像我一样的80后都做不到。而做到的,现在几乎没有例外地都找到了很好的工作。
公司不重视技术--与我的兴趣冲突
本科毕业后我就参加了工作,一干就是三年。
我工作的地方是个典型的国有企业转制后的股份制公司,计算机公司,以系统集成和网络为主,软件是副业。我的项目经理和部门经理对我很好,现在我依然感谢他们。只是,我实在无法接受这样的工作状况:待遇一般,沟通匮乏,无视积累,没有传承,频繁的软件部门高层更换预示着软件的步履维艰。也许,我们把软件业务全部外包会更好,但是那么多为公司辛勤工作的员工将何去何从呢?
工作阶段,我的角色还真不少,有点需求分析,有点系统设计,大量的软件开发,大量的系统实施,一点点知识探索,一点点售前支持。既是典型的多面手,又是行行肤浅的门外汉。很少有人能从技术上指导我,不是因为我很牛,只是因为我们实在不是个以技术见长的公司,而我自己,却十分喜欢技术,喜欢和计算机打交道,喜欢盯着计算机的输出而后体会其无穷的美感。这是我喜欢做的事,但工作却不允许我这么做。
考研?读研  定调:开始改变思维习惯,化机械记忆为主动思考
若只有机械思维--上了清华又如何
工作的第三年,我准备考研了。我的如意算盘是,当2006年8月我的工作合同到期的时候,能自然而顺利地过渡到研究生阶段。
当时我设想了4种结果:
上清华计算机系的研究生,将来去Microsoft或IBM工作;
调剂到清华软件学院,依然可以去好的外企工作;
调剂到其他院校;
考研失败,就当什么都没发生过,继续工作,或者从头再来。  
以上的每一个结局,我都能承受,不算破釜沉舟,但绝对全力以赴。在每一个下班的晚上,在每一个周末的分分秒秒,我蹬着自行车冲到清华,吃饭、看书,回来睡觉,利用工作的间隙继续看书。就这样,没有任何杂念,没有任何包袱,风风雨雨地跑着,简简单单地过着。带着对未来的期盼,和对现有生活的改变,坚持着。也曾经偶尔想过放弃,但更多的是受理想的驱使。
考研的结果,我进了清华大学软件学院。但仔细回想考研的过程,我却依然没有摆脱思维的局限--以机械记忆为主的学习方式。也许是我觉得时间太宝贵,也许是真的连思考的时间都没有了,我每看到一个题目,总是会先看答案,让答案来指引我的思路,而不是用自己的脑子想问题。
这种学习方式在短期内的确会取得很大的成果,但却贻害无穷。长此以往,会使人丧失判断力、理解力和交流能力,只留下可怜的记忆力--这样的人难有大成。这样的学习方式会使我们的思考方式沦为简单地重复和机械地回忆,胆子变小,创新力几乎丧失--对于计算机这种快速变化和要求很高的学科来说,显然没有什么价值。
读研之后我终于正视了自己思维的机械与缺乏活力的问题。我有意识地努力尝试去改变。看书的时候,我每看一会儿就想想作者在说什么,以训练自己的概括能力;看看作者表述得是否合理,以训练自己的怀疑能力;勤于反思,以训练自己提出问题的能力。但习惯是长久养成的,显然改变也是需要一段时间的。
实习之门  定调:快想,快说,快干
IBM实习:和以前的工作不一样呢
IBMCRL的环境不错,普通员工的办公场所也算宽敞:电脑两台,都是高配置。空调很凉快,体制宽松,但人们的工作非常紧凑、忙碌,压力大,追求高效。
作为一个曾有过工作经验的实习生,在这里体会到了完全不一样的感觉。
工作效率高、速度快。CRL的整体工作节奏不太像IBM这种巨人的风格。Mentor是个急性子的女博士,脑子非常聪明,解决问题的能力很强。同样的新问题,她能够很大胆地想出新办法。CRL要求员工讲话简短,注重效率,跟人沟通开门见山,且从来不喜欢重复。我在这里体会到,很多时候,如果不能在头三句话里就把一个问题说清楚,后面就可能永远没有开口的机会了。
对新问题的反应快。这里的正式员工论智商,确实赶上了清华排名10%~30%的人才了。没办法,只能以勤补拙了。
工作量大。这里一天的工作量,相当于在以前单位工作一个星期。像战争一样的生活,让我每次下班后见墙就想靠,见床就想睡。不过感觉也非常充实。
没有心计,人比较单纯。有什么说什么,不用耍心眼,不用藏着掖着。可以把辛苦的差事,努力做得简单而快乐。