第一部分:结缘计算机
1. 你为什么选择计算机专业?你认为你的条件如何?和这些博主比呢?(必答)
当年高考前在专业这件事上纠结了好久,因为我对于大学各个专业具体学什么都不甚了解,于是就迟迟没有明确的目标,可以说整个高三自己一直都是迷茫的状态,就这样一直保持到了高考。我当年高考是先出成绩,后填报志愿,等到成绩出来之后发现意外地比期望要高,而北航应该是最适合我的学校了。身为一个比较“宅”的理科男,我当时打算将专业锁定在“数学”、“计算机”、“电子”之中,而北航的计算机专业又是比较出色的,于是很爽快地将计算机专业定为第二志愿了(第一志愿报高工碰运气,自己也明白基本没什么希望)。虽然看起来我做了个很随便的选择,但其实现在回想起来,我很庆幸当初做了这个决定。
我的条件和这些博主比并不算好,甚至在大学都不算很有底子的那类人,光是在我们宿舍就有两个高中有过竞赛基础的大佬,让我很是担忧。我从来没有系统学习过编程,唯一的编程经验是高中用易语言糊弄地写的几个low到爆的qq聊天插件。但即便如此,我却认为这是段很宝贵的经验——这是我第一次编写程序,第一次自学一门语言(虽然只是很局限的一部分),第一次品尝到编程带来的巨大成就感,这段经验也让我对大学学习充满期待。
只是遗憾的是,和那些博主一比,我深深感受到了差距。博客A[1]的作者在初中毕业后就开始阅读报刊,尝试写程序,学习Windows系统;博客C[2]的作者在11岁的时候就明白了独立思考的重要性,并养成了自学的能力;博客D[3]的作者利用大一一年的时间,明白了实践的重要性……尽管他们成长的道路有所不同,但他们都有对自己有着明确的期待和目标,不断地找到合适的方法提升自己的能力,逼自己成长。而我没有这样做,我深深地觉得自己的行动受到了很多事物的制约,在大学期间,我曾无数次地因为自身的懒惰浪费掉了宝贵的时间,试图为自己寻求一条捷径。
博客P[4]中最后提到:“但是,真的需要他付出努力的时候,他会说:你能推荐几本书么?有好的教材么?有易学易懂的视频么?”我感觉自己像是被扇了一耳光,因为这正是我一直秉持的思考方式。当寻找捷径成为了懒惰的接口,捷径就不再是捷径了。我需要的是提升自己的一种韧性,一种“不管它是啥,总之我先读读看”的态度。很多大牛都会在博客末尾推荐几本精品书籍,但我想,这绝不会是他们的全部。
2. 计算机是你喜欢的领域吗?是你擅长的领域吗?
计算机是我喜欢的领域吗?从目前来看,我认为是的。是我擅长的领域吗?从目前来看,我认为不好说。
我现在对于计算机的认识比较浅薄,至少我现在看来,计算机是一门比较注重“结果”的领域(可能很多领域都是如此)。我在今后计算机领域的发展中,会面临许多噩梦般的debug经历和令人绝望的需求变更,也会收获很多难以言表的成就感和团队协作的快乐。在现阶段,前者至少是我不太喜欢的……但是从总体看来,我认为后者的快乐可以掩盖住前者带来的痛苦,帮助我在这条道路上越走越远。
至于是否擅长,我认为需要有一个参照标准,但实际上我永远可以找到那些比我更擅长,和比我更不擅长的人,所以我认为重要的是和过去的自己相比,我是不是更擅长了一些,如果不是,我就要当心了。
3. 你热爱这一专业吗?你对计算机的热爱是怎样的?仅仅是口头的吗?
如果我大一的时候看到这个问题,我估计会回答“是的”,但是看完博客P[4]之后,我对计算机也只能算是“喜欢”。我希望在大学毕业后,能够成为一个热爱计算机的人。
第二部分:在计算机系里学习
1. 你对你的大学生活有什么想要吐槽的地方吗?你理想的大学教育应该是什么样子的?跟学校给你的有什么区别?比较你在中国大学的经历,你的老师和学校能做到和国外那样吗?如果不能,请分析一下为什么。(必答) (8.26修改)
这个暑假我去了澳大利亚的昆士兰大学,留给我最深印象的是一块被教学楼包围的大草坪,热爱音乐的人在那里忘我演唱,讨论问题的人在那里畅所欲言,甚至于看书看累的人也可以直接躺下睡个午觉,我当时就在想,要是北航能有一块这样的草坪,我想在那里写一天的代码。总的来说我觉得国内大学给我的感觉还是太压抑了一些,在沙河每天的课余活动无非是去图书馆看看书,去自习室上上自习,去操场跑跑步……久而久之就会感觉有些单调。
除此之外,我觉得大学中有些对于课程的硬性要求意义不大,最主要是三年要拿到12学分的核心通识,给我的感觉实在是弊大于利。我不否认从那些选修课当中确实能学到一些专业外的知识,但由于学分的要求,很多学生*选修自己根本不感兴趣的通识课,导致那些真正想选的人无法选中。既然有学分要求,那就应该扩充核心通识课的数量,可结论是我认识很多同学他们都没能选上,只得选修外专业课来代替,这就有点得不偿失了。而真正选上的同学呢?我相信很大一部分是打算水过去,拿个学分就算了的。这就很尴尬,如果提高这些选修课的难度,那么就表明学生们需要从专业课中匀出一部分放在这些通识课上;而如果就这样不管,那么学分要求也就失去了它的意义。而且有时候为了照顾这些通识课,我要权衡要不要放弃本专业的选修课(通常是很果断就放弃了,因为通识课实在太难选了)。我认为,学校对于这些和专业课无关的选修课完全可以不做太多干涉,依照同学们的兴趣来选,这样既减少了竞争压力,同学们也真正学到自己感兴趣的知识,有效利用了资源(一般通识因为不计算学分,所以选得就比较少了,与计算学分的核心通识形成鲜明对比)。
以上吐槽的方面都是和专业本身没有太大直接关系的……事实上,我觉得计算机专业的课程安排很吸引我,每门课都有每门课的亮点:数据结构期末的运行时间比拼,计算机组成每周激(sang)动(xin)人(bing)心(kuang)的课上测试,算法期末最大团问题的答辩,OO课的互评机制……我不否认其中某些环节还有提升的余地,但这些痛苦的实践过程真的让我收获了很多。给我的总体感觉是,计算机学院的教学思想很明显是课下>课上,相比于外校的听课+期末刷题+考试的套路,我感觉北航的课程走心多了……在我看来,计算机学院的这种教学思路正是我理想中大学教育的教育思路,上课固然重要,但值得重视的还是应该是课下实践。我对于国外大学教育其实不是很了解,但是我经常从一些影视资料中看到教授会布置课题让学生们组队去完成,培养同学们的实践+团队协作能力,加深对于课程的理解,我认为这正是经受了12年填鸭式教育的学生们所应该尝试的。我们在大学中不仅要学习知识,还要锻炼能力,锻炼自学的能力、交往的能力、协作的能力、抗压的能力……我想,这都是即将走向社会的我们所需要的。
总的来说,我认为国内教育应该少一些硬性规定,给学生多一些*发展的空间。但我觉得国内要做到这一点还需要时间,因为这需要学生们的自觉。我现在隐隐约约能感觉到教授对于学生有种“不信任度”,担心学生会投机取巧,或是照顾那些成绩较差的同学,让他们勉强通过考试。我觉得这种“师生情”给予了很多学生一种安逸感,让他们缺少一种完善自我的动力,国外大学入学容易毕业难,正是这种危机意识促使学生拼搏。但其实我觉得我们学院这方面做得还是相对比较好的,毕竟计组挂了三分之一的学生……咳咳,总而言之,我觉得老师和学校完全能做到国外那样,也很期待中国的大学教育能够有所发展。
2. 迄今为止,你写了多少代码,描述你做的最复杂的软件项目/作业。(必答)(8.24修改)
代码量应该有1w行了。最复杂的应该是面向对象程序设计中的“出租车模拟”了吧,它要求我们通过接收用户给定的一张二维地图,模拟出租车的“抢单”、“接客”、“送客”等一系列操作,后期还添加了“关闭道路”、“红绿灯”、“可追踪出租车”等等新的功能,不仅需求逐渐增加,还是最要命的多线程操作,同时还要不断优化,代码量确实不少。最后一次作业同时跑的线程数并不少,但是卡顿现象却基本没有发生,总体来讲还是比较满意的。
第三部分:未来规划
1. 对于你未来在IT行业的发展,你有什么样的梦想或者未来想从事什么样的工作?你准备怎样来规划你技术道路,职业道路和社会道路?(必答)
对于未来从事的工作还没有明确的想法,在大二的时候曾经因为喜欢打游戏而萌生去游戏公司就职的想法,后来了解了一些之后才明白其实“玩游戏”和“做游戏”是完全不同的。总之现在也很苦恼,因为我对这个领域内的工作还没有充分的了解,所以我认为应当通过实习去扩展视野,找到适合自己的岗位。我认为现阶段,我需要先扩展知识的广度,等过几年,明白了IT行业的现状后,再扩展某些知识的深度。毕竟我对于这个行业了解的还是太少了。
2. 你们马上就要面临实习了,你打算在企业内实习还是在实验室实习?
博客K[5]的作者建议“在大学的时候尽量多地进入公司参与实际工作”,这一点和我近年来的想法基本一致。为什么要选择进公司实习而并非在实验室实习呢?
首先我要明确,我要走的是就业道路而不是科研道路,企业内实习能为我带来“工作经历”,实验室实习能为我带来“科研经历”,如此看来,同样都是经验,企业看重的自然是前者。而且,我自认为企业内实习能学到很多“专业外的知识”,例如人际交往等等,我认为这些是我所欠缺的,我要学习的不仅仅是技术,而是如何更好地在职场中生存和学习。最重要的是,正如博客K[5]的作者所言,“提前认识工作和自己,以便毕业时更准确地把握自己的方向”。我对于自己今后想要从事的工作十分模糊,需要多加体验才能明确自己的发展路线,因此我很坚定地认为,企业内实习比实验室实习对我更重要。
但是同时我也有个疑问,学历对于计算机专业的学生究竟有多重要呢?事实上在很多企业看重工作经验的同时,社会对于学历的要求也在逐渐增高。我原本的打算是放弃读研积累工作经验,但周围经常有人劝我利用两年时间拿个硕士文凭,对此我很苦恼。
3. 实习经验究竟有多重要?是否需要马上开始积累实习经验?
实习经验在我看来是和社会接轨的必要步骤,实习前,我们所学习的都是理论知识,而在实习中,我们会面临很多更实际的问题。但是我认为实习的前提是具备一定的理论基础,不然不仅实习的效率会减半,也会占用学习理论知识的时间,有些好高骛远。
[1] https://book.douban.com/subject/4006425/discussion/22803733/
[2] https://book.douban.com/subject/4006425/discussion/22802960/
[3] https://www.cnblogs.com/xiaozhi_5638/p/4485805.html
[5] http://blog.****.net/haoel/article/details/1688104
补充内容(9.17)
感谢老师和助教的回复!下面我针对评论区的提问,谈一谈自己的看法。
1. 你认为这些课程的训练量是否合理呢?
首先,我认为这些课程的训练量绝不算少。计算机组成第一节课上老师曾幽默地表示:“如果你们觉得能力比我强,那么你们可以有一些课余时间,否则就不要有课余时间了。”虽然这番话有几分调侃的意味,意在警示我们这门课的重要性,但其实经历了几周的学习之后,我们对训练量大这一点已经是深有感触了。老师曾经把计组这门课的训练量同其它学校做对比,北航确实算是比较紧张的,但细细想来,似乎每一周的Project都有它独特的意义:P0~P2夯实基础,P3、P4单周期简单入门,P5、P6深入学习多周期,P7、P8升华到应用的层面上。可以看到,整个课程的训练是一个循序渐进的过程,如果贸然减轻工作量,去掉部分Project,就会出现“断层”,导致后面的任务可能一时难以完成,不仅学习的兴趣大打折扣,对于知识的理解也会受到影响(就连游戏也是需要一关一关打的)。这一点在OO这门课上也是如此,从简单任务到复杂任务循序渐进,感觉每一次Project都是一次提升的过程,但一旦懈怠,后果也是十分惨重的……
与此同时,这些课程的训练量也不算太多,如果从作业一发布就开始编写代码,那么完成应该还算轻松。实际上,大二的学习生活完全不像副院长所描述得没有一点空闲时间,有时候之所以觉得工程量大,多半是由于拖延症导致的……(曾经因为这个通过几次宵,已经自我反省OTZ)空余出来的时间,可以看看书,或者让自己休息一下,不至于让自己整个学期都处于高度精神紧张状态。
综上所述,我认为至少对于以上两门课,训练量是合适的,同时也是紧致和高效的。我能够感受到学院试图在用最少的训练量,让同学们尽可能对知识加深理解。
2. 能否谈谈你怎么看待这篇博客中讨论的“师生关系”呢?
我觉得邹老师“健身教练/健身学员”的比喻十分贴切。实际上,健身教练的职责是强健学员们的身体,而老师的职责是“强健”学生们对某一块知识的理解,本质都是一样的。师生关系不该像“哥们/哥们”那样不分你我,也不该像“狱警/犯人”那样地位悬殊,而“健身教练/健身学员”算是以上关系的一种调和。
同时,我觉得“餐馆/食客”的比喻换一种描述方法也有些恰当,食客们大多偏爱的是“菜好不好吃”,却很少有人关注“是否有营养”。实际上,好吃的菜只能享受一时,而菜的营养价值才是保证身体健康的关键因素。类比到课堂上来,学生们大多关心的是“作业多不多,考试难不难”,而真正应该关注的是“是否能学到真本领”。“好吃”和“营养”有时不可得兼,而“轻松”的课也大多难以获得“成效”。