第0周个人作业:博客阅读和思考
1、关于当初
专业的选择
博客B[1]的作者认为“除了清华北大之外,对任何学校都不怎么关心,再加上学校对于学生除了考出好成绩之外什么都不关心的教学方式,使得自己对于大学、专业、前途等一切的一切都处于超级茫然状态”。其实我和作者差不多,高中一直埋头学习,考完了成绩只能说马马虎虎,填报志愿也是一头雾水。
初中和高中的时候看过几部黑客相关的电影,比如《黑客帝国》和《我是谁:没有绝对安全的系统》,觉得里面的人敲敲键盘就可以改变世界,特别厉害,很崇拜他们,捎带着也就对编程有了一点兴趣。再加上父母和老师的期望,他们都觉得编程的前途比较好,华科也是985和211,所以第一志愿就选择了华科的软件工程。
过去的学习生涯中,我自认为是个不算太笨的人,但我的惰性很大,说白了就是特别懒,能躺着做作业绝对不坐着。所以我的学习大多就是跟着老师走,老师教什么,布置什么作业,留下了什么课设任务,我就努力的把它吃透,然后完成老师布置的任务,并力求把它做好,消灭一切Bug。
学习的过程
看过的书有《软件工程》《算法导论》《自己动手写操作系统》《深入浅出MFC》《面向对象程序设计教程》,跟着老师学过80X86汇编,C语言,Java,课外由于课设的需求自己零零散散地学了一点Html 5,Java Web,C++,学的不是太透,写出来的项目也一般,没什么亮点。做过贪吃蛇,日程管理系统(做过MFC和Java Web),团队合作的时候,主要是我和另外一两个同学负责代码部分,界面美化和文档编写就交给其他同学来完成。其实我一直觉得这样的流程不太好,毕竟正常流程是问题定义->需求分析->软件设计->程序编码->软件测试,而我们相当于先做了程序编码和测试,怎么想就怎么做,一切做好后再掉头来完成最开始的部分,这样的流程其实是存在很大的漏洞的,一个搞不好就会玩脱,全盘崩溃。
最复杂的项目
迄今为止写过的代码应该有五千行了吧?主要是代码没有优化,很多重复代码,执行效率也比较低,跑程序的时候都得提心吊胆,生怕什么时候就崩溃了。我觉得做的最复杂的一个项目应该就是记账软件,这个项目是由我和另外几个同学完成的。我和其中一位同学负责代码部分,用户注册登录、理财管理、日常记账、报表生成、预算管理等等。整个项目几乎可以说是从零开始,项目经理简单地教一点东西,剩下的都要靠自己完成,自己慢慢在经理的指导下,从网上、从书里寻找解决办法,最后不仅熟悉了MFC的编写流程,也对数据库多了一些了解,可以熟练使用,虽然项目的过程有些曲折,自己也走了一些弯路,但是好在最后还是成功了,验收的时候经理很满意。当然最重要的是,自己真的学到了很多东西,为以后打下了一点基础。
2、关于未来
未来的选择
读完文章后,我最大的感触就是要做自己的主人,多思考,多创新。博客B[1]的作者说:“本科时,自己的考试成绩一直排在前面,但几乎所有的时间和精力都花在了犯迷糊、做作业和游戏上。本科阶段是我们精力最最充沛、时间最最富裕、最最容易跟其他人拉开距离的阶段,如何处理这段生活,将会造成最后的千差万别,遗憾的是,当时却没有人告诉我这一点。”
我这坐着很像,大学没有了高中的紧张氛围,一下子就松懈下来了,对学习成绩的追求也没那么强烈,闲暇之余就窝在寝室打游戏看剧。也就是心里最后一点自律督促着我千万别挂科。再加上每次考前一个月左右开始突击,每一科也算是有惊无险的度过,成绩也还凑合。我自己写程序的时候也是喜欢直接参考网上的程序示例,然后自己照葫芦画瓢,不求有亮点,但求无Bug。
对于未来的选择,我还是希望多读几年研究生,跟着导师多做一些项目,增强核心竞争力,提高自己的专业水平。
优势与劣势
相比其他同学来说,我自身的优势很有限,成绩不算特别突出,自认为不错的智商,在华科这个人才遍地走的地方也算不得什么。唯一的优势就是,我们学院似乎有很多大佬并不愿意读研,更倾向于毕业就直接工作,这样竞争应该会小一点。劣势则是比较明显,我的排名虽说尚可,但是保研有点悬,而且之前也并没有认识到自身的问题,一直都是得过且过,加权也不是很高。而且我这个人惰性很大,经常喜欢偷懒,这个应该会成为我读研路上最大的阻碍。还有就是之前不重视读研这个事,一直选择逃避,没有特意的去了解,所以现在也是一知半解,比较迷茫。
最后的准备
针对我的选择,我觉得首先还是寻求本专业学长学姐的帮助,先把读研相关的事宜搞明白。然后就是尽早开始准备,不打无把握之仗。如果读研可以成功的话,还是应该多做一些项目,更加勤奋一点,不能像大一大二一样得过且过。早起的鸟儿有虫吃,唯有勤奋且善于思考,才能为自己搏得一个不错的未来。
3、关于当下
现在的专业
我是很喜欢软件工程这个专业的,代码在自己手中成功跑起来很开心。后来学的越来越多,接触的东西也越来越难,有时候也会烦躁,烦躁代码写不出来,bug总是调试不完。但是当自己熬夜加班把代码搞好的时候,心里还是很有成就感的。
自身定位
就专业和技术而言,我觉得自己属于吃瓜群众。我现在的水平,可以说,做一个平凡的码农只能算是勉强合格。除了课程的需要,平时自己几乎不怎么写代码,C、C++、Java,我现在也就还记得基本的语句,再具体一点可能就想不起来了,这就是平时不练习也不做项目带来的后果。
已具备的技能
关于专业知识与技能,我现在用的最顺手的语言就是C语言,其他的语言只是停留在了解的层次,撑死再写个简单的程序也就顶天了。至于能力,我可以独立编写MFC程序,前端简单的做一下美化(其实和没有美化差不了多少),再使用ODBC链接一下SQL数据库,可以包装成一个还凑合的程序,能用但是不完美,没有亮点。也可以使用Java Web+MySQL做一个本地的网页出来,只不过就是因为没有美工和设计师的配合,网页会做的很简陋。说来惭愧,数据结构学了很多算法和理论,但是自己在实际生活中几乎没有应用过,也就谈不上能力一说
与专业人员的距离
离一个合格的本科毕业生,我觉得差距还是比较大的。虽说不奢求像姚欣写出PPTV,雷军独立写算法那么厉害,但是对编程的思考,编程思想的培养方面,我做的还远远不够,自身的编程能力也还是需要再次提高。
博客C[2]的作者认为“成长路径中有很多的偶然,没人知道在一些关键时候需要什么样的知识储备,所以踏实地多储备一些是好事。我在大四的经历和其他的一些经历都告诉我,以前通过看书、自学,彻底地弄懂的一样知识,会在某个不经意的时候,突然被用到。这时候对当年积累的庆幸和再发现的快乐,就像蓦然回首见到灯火阑珊处的秋水伊人一样,是没法用文字描绘的。”
我觉得他说的非常对,知识是需要积累的,当初离散数学学图论觉得没什么用就没有仔细听,结果后来数据结构学算法就用到了,而且是非常重要的东西。如果离散数学认真学了,算法这一块就可以学的很轻松,也可以深刻的掌握这些知识。
4、关于课程
印象最深的课程
大学中,我印象最深的课程是大一开设的微积分,授课教师是数学学院的李开丁副教授。我觉得李老师非常厉害,他讲的课通俗易懂,自己课余时间琢磨半天都不懂的题目,李老师可以一点就透,而且李老师为人风趣幽默,活泼有趣,可以和学生打成一片。李老师讲课,主要是激发学生的兴趣,把很枯燥的微积分讲得生动有趣,我特别佩服李老师。至今我还记得李老师说过的一句话:“学习很容易,但生活是很难的,希望同学们以后都能过上幸福的生活。”可以说大一一整个学年,我唯一一门一直认真听讲的课就是微积分,最后微积分的成绩也还算理想。
科班与速成培训班
关于科班出身和速成培训班,博客E[3]的作者认为“大学学的是
一、心态的转变,学会适应社会。父母不会成为你的依靠(富,官情况除外),你需要靠自己的自觉与自我驱动来完成成长
二、学习方式的转变,老师只会负责告诉你哪些是你为了毕业,必须要学的重点,并不会负责把你教会。更不会负责教你社会需要什么样的技能。”,而速成培训班“会教学生简历造假。 会教学生投机取巧。 会教学生“如何开发项目”。 然而,那些项目经验,几乎一文不值”。
这位作者说的有一定的道理,大学四年不只学如何编程,更多的是基础课程,例如离散数学、数据结构、算法导论等等,这些课程对于编程思维的养成有着非常重要的作用。而市面上许多速成培训班只会教你如何开发项目,如何编程,但是他不会告诉你为什么这么编,深层次的理论是什么他也不会告诉你。
但是这位作者的观点有些偏激,凡事不可一概而论,科班出身却什么都不会,毕业找不到工作大有人在,而培训班出身最后成功入职的也有,但很少就是了。无论选择哪条路,最重要的还是要看自己的态度,如果有一颗向上的心,再加上有正确的引导,那么最后实现理想并不是不可能。
5、关于师生
我觉得博客N[4]作者的话很有道理,理想的师生关系应该是健身教练和健身学员的关系。老师就好像教练,有项目开发经验,并且了解开发流程,知道应该怎么做才能一步一步地成长为一个合格且优秀的程序员。而学生就好像是健身学员,交了健身的钱,但是教练没有必要一直盯着你,你可以选择三天打渔两天晒网,最后浑浑噩噩一事无成;当然,你也可以跟着教练一步一步走,努力学习经验,最后成为一名优秀的程序员,找到理想的工作。所谓“师父领进门,修行靠个人”,说的就是这个道理。
[1]https://book.douban.com/subject/4006425/discussion/22803961/
[2]https://book.douban.com/subject/4006425/discussion/22802960/
[3]https://www.cnblogs.com/geniusalex/p/4928713.html
[4]http://www.cnblogs.com/xinz/archive/2011/05/16/2048044.html