关于五个问题的思考
关于当初:
博客A[1]的作者认为:“大学的确提供了非常丰富的能力培养机会和广阔的个人发展空间,但归根结底,学习和进步才是大学的主题,荒废其中任何一个都不能让大学生活过得充实而完整。”我对此有着很深的同感。大学是一个非常多元化的地方,你有很多的选择,不同的选择会让你的大学四年生活以及最后的结果截然不同。不得不说,我刚上大学时,也带着一身的稚气和懵懂,并没有真正弄明白上大学的意义是什么。一开始我也认为要积极参加大学里的各种活动,积累人脉或者锻炼自己综合能力,但没有非常重视学习与课外的提升。但随着大学生活的逐步推进,我发现最重要的还是学习与提升自己的硬本领。当然两者缺一不可了,学习是一个菜的主料,多样的活动也是不可或缺的调味品。
回顾当初,因为高考分数并不理想,我并没有选择专业的权利,被调剂到了经济学院。后来转来软件学院的想法也很简单,因为接下来就是一个互联网的世界,学习软件一定不会没饭吃,甚至还能吃很好的饭。不能说我对计算机有多大的兴趣,因为我在转来软件学院之前,基本对计算机一无所知,但我觉得兴趣能够培养,事实证明这个结论也是对的。
来到软件学院,我最先发现的就是与别人的差距。大一上大家都写过贪吃蛇了,我却只能写写简单的冒泡排序。大一上的技术团队各种招新,我也因为不在软件学院错过了这个机会。我也尝试自学去弥补,但也总是因为贪玩或少了一些压力而半途而废。但好在,学校的课程也多少给了我许多锻炼。一开始的实训做飞机大战游戏;用Java写三层结构的学生成绩管理系统网站;对opencv一无所知也在短短几天时间也写出了一个车牌识别的程序;用不熟悉的工具写出编译器。这些锻炼对我来说都弥足珍贵,每次完成一个项目的成就感也是无可比拟的。
我也在实验室参加过一个小项目,这个项目也让我对软件开发有了很深的理解。项目本身的大部分代码已经完成,但是有很多地方会让用户操作难以完成。我们的工作是修改这个软件的部分功能,增加其易用性甚至做到商业化。编码过程,用到我之前也没有接触过的C#,但是通过自己的研究和自学,实现了用MSword库帮助用户生成结果分析报告,也第一次学会了数据库的连接。不仅仅是编码,让我印象更深刻的是与用户的磨合,逐步弄清需求,和导师商讨项目的进行过程,这样的体验对我来说也很珍贵。
大大小小的项目加起来,代码也写了有一万行了,但这也远远不够,成为一个合格的程序员还有很长的路要走。
关于未来:
博客B[2]的作者认为:“不要欠生活,不要欠工作。出来混,总是要还的,你不会的知识,你懒于想通的东西,总是会在一个必要的时候提醒你、惩罚你。将没有搞懂的、希望做到的东西,写在纸上、贴在面前,认真实践,当你做到的越来越多的时候,你就会越来越自信,你的层次会提高的。”这句话给了我很多启示。许多事情就要精益求精,尽量弄清每一个问题。在严谨的对待了每一个问题后,在逐步积累的知识中,你的实力也在逐步增长,那些不懂得地方,可能恰恰也是一个项目或者一个技术的难点,在这样的锻炼中,你也会真正体现出你的实力。这也是我未来想要努力的方向。面对技术方面,有时不用想太多,你学到的知识点都将是你宝贵的财富。
关于未来,我的想法是出国留学。在暑假的斯坦福之旅后,我爱上了硅谷浓厚的创业氛围,顶尖科技带来的刺激感,以及所有人甚至加州本身体现的一种激情。我非常想要在那里学习和工作。
对于这个想法,我也在大一大二时就付出了实践,我了解了美国读研的讯息,合适的大学,也制定了自己的学习计划,按部就班的学习英语,参加语言考试与美国研究生入学考试。但就像我引用的作者的话,其实我真正需要的提高自己的编程技术,对每一个技术难点的精益求精。
对于剩下的一年半时间,我的规划是争取在大四开始之前,完成所有的语言考试,准备好申请所需的材料,在大四开始时就进行申请。在完成了这个的情况下,我希望能找到实习,提高自己的实践能力编码能力。因为即使我也在美国进行学习,美国的研究生教育,尤其是对CS专业的,其实相当于也是职前培训,相当看重学生的动手能力。
关于当下:
软件工程实属一个非常有趣的专业。我也从一开始对他的一无所知,到逐渐对他产生兴趣,不单单是因为这个行业赚钱,他本身也有不少魅力。从创新的角度来说,在生活中的细节发现可以方便人们生活的地方,并且想方设法包装成软件并在当今的互联网时代进行商业化,这是一个非常令人兴奋的一件事情。虽然目前来说创业的成功率不高,但无数成功创业的例子都是这样产生的,即使失败我也觉得是一种非常宝贵的经验与财富。从技术实现的角度来说,虽然将复杂的代码进行实现的过程是非常艰辛的,但是你通过自己思考逐步想到解决问题的方法,以及最终实现后得到的成就感也是无可比拟的,这本身也是一种乐趣所在。
就我目前的专业技术和能力来说,我觉得我的确技术方面还有所欠缺,主要原因还是代码写少了,大学期间大部分时间用来学习专业课的知识和准备英语考试,技术方面的确是忽视了一些。但好在我自我觉得学习能力比较强,对于一种新的语言都能很快的入手,这也是专业课帮助我打下基础的原因。
我目前主流的编程语言都会使用,像C++,java, javascript, python 等等,也都使用过他们写过一些大大小小的项目,但很难说哪一种很专精。我认为我离一名合格的本科毕业生还需要更多的实战练习,也需要逐步确定自己的方向,争取能将编程的兴趣变成一种热爱,如果能做到这一点,我相信前途应该会顺风顺水。
关于课程:
当阅读博客B[3]“我旁听了朱仲涛老师的“数据结构”课,当时的感觉只能用两个字来形容:震撼。在他的课上,我对数据结构有了全新的认识,对计算机也有了一点与以往不同的了解。
他的讲课风格非常独特,他只用1/5的时间简述一下要讲的内容,剩下的时间都是当场写程序。著名的约瑟夫环、Dijkstra算法、Prime算法、快速排序、堆排序、锦标赛排序、Tarjin强连通分量、Convex Hull等深的浅的,教材上有的没有的,全部在课堂上从0开始实现。”
这深深的勾起了我的回忆与共鸣,我印象最深的课也是数据结构,沈刚老师也看得出是一位非常有经验的教师,他也非常注重我们对代码的实现,会在课上将问题抛出,让我们自己思考代码的实现,并用伪码表示出来,在讲解自己的代码时,你会深深的叹服,代码原来可以写的如此的精巧,没有一行多余。在一些细节的地方,也体现出一位老程序员本身的专业素质。
科班出身和速成培训班,我想最大的区别就在于,科班出身接触了更多关于软件的理念,有着更加扎实的基础和理论知识作为根基,并且有着很强的自学能力,在面对一种新的语言或新的技术,能够凭借经验与知识很快上手。而速成的班,多半是对于某种语言的介绍,虽然动手能力较强,但是适应能力不够,缺乏对于软件整体的把握。
关于师生:
关于师生之间的关系,邹欣老师[4]给出了许多种有意思的比喻,例如餐馆和食客,老板和雇员,保姆和幼儿,哥们和哥们等等。但他心目中最理想的师生关系是健身学院和健身教练:
“如果大学里能确定下教练和学员的关系就好办了。 每一个来学习的学生, 都是想学好才来的。 各人条件不同, 学好的目标也未必相同。 有些同学想成为世界一流的软件工程师, 那老师就会以世界一流的标准来要求学生;有些同学只想拿一个及格的分数, 那老师也会告诉他如何才能及格,并严格执行评分标准;有些同学想在某个领域深造,老师也会提供相应的指点。 但是,学生别想只付出 "及格" 的努力,却期望收获“优秀” 的结果,或者没有付出足够的努力,却期望老师最后放水让自己及格。”
我非常认同这样的比喻。老师的作用,随着上学的过程,作用也一直在变。小学中学老师会手把手的教你,由于应试教育有时也会填鸭式的教学。就有点像邹欣开始比喻的保姆和幼儿的关系。上大学之后就完全不同了,老师专注的主要是讲课和解决同学的知识疑问,课下要怎么学完全是靠自己了,正所谓“师父领进门,修行靠个人”。可能到了研究生导师,老师的作用就真的只是为你引导一个方向,包括学习都是靠自己完成。这确实有点像健身教练和健身学院的关系。我认为这也是一种非常良好的师生关系。学习的确是自己的事,老师能把方向告诉你,剩下的功夫都是需要自己努完成的。
[1]https://book.douban.com/subject/4006425/discussion/22803733/
[2]https://book.douban.com/subject/4006425/discussion/22803961/
[3]https://book.douban.com/subject/4006425/discussion/22803961/
[4]http://www.cnblogs.com/xinz/archive/2011/05/16/2048044.html