软件工程博客作业0
本文为“软件工程”课程第0次作业,主要回答了一些有关结缘计算机、在计算机系里学习、未来规划的问题。
这个作业属于北航计算机学院核心专业课“软件工程”,课程主页
这个作业的要求位于作业0
我在这个课程的目标是:积累软件项目开发经验,取得大于85分的成绩
这个作业在如下方面帮助我实现目标:选做作业,引导我思考自己来到这个专业的初衷,思考未来自己的人生目标
第一部分:结缘计算机
- 你为什么选择计算机专业?你认为你的条件如何?和这些博主比呢?(必答)
- 计算机是你喜欢的领域吗?是你擅长的领域吗?
- 你热爱这一专业吗?你对计算机的热爱是怎样的?仅仅是口头的吗?
自己当初选择计算机专业,压根不是出于什么个人兴趣的考虑,而是有非常现实的原因:就业前景好。
计算机课程由于不是高考科目(当时对这类学科的称呼是“会考科目”),没有引起我特别的重视。再加上我脑子不大灵光,手速又不行,在电脑游戏中获得的挫败感比乐趣还要多。可以说,计算机在上大学之前,跟我这个人的交集仅限于写写Word, Excel & PPT。(当然,为了通过会考,我在大二下学期跟着老师恶补了一个学期的Photoshop,但这不算日常使用)相反,当时我最擅长的(高考)科目是化学,觉得各种物质的变化有说不尽的奥妙,而且没有物理那么多令人生畏的计算公式,没有生物诡异的题目问法,学起来特别起劲。然而,那年天津发生一起著名的由化工产品引发的爆炸,加之我的化学实验会考由于一个误操作导致重考了一次,导致我意识到自己可能未必适合把化学当成我本科四年的专业。我一是哀叹自己动手能力的欠缺,二是质疑自己是否要一辈子生活在爆炸的阴影之下。
然而,意识到这些已经是高三的下半学期了。剩下的时间我自然是全心投入了高考的准备,根本没思考过自己未来要学什么专业的问题。直到出分之后,我和家人才认真审视了这个问题。选择计算机专业,80%是家长替我决定的,以下列举了部分理由:
男生在大学里就应该打好理工科基础;
计算机是一个朝阳产业,有着广阔的发展前景;
IT行业就业形势良好,不像有的学科学出来压根找不到工作;
被这些理由说服,加之自己的分数高出北航分数线不少,我最终填报了北航计算机科学与技术专业的志愿。
我从来就不认为自己的条件多好,无论是跟自己的同龄人相比还是阅读材料里面的博客作者相比。例如,《我的软件开发生涯》(博文I)中记载了作者几个志同道合的朋友在高中时的壮举,从实现图形化界面到写游戏。相比之下,我在计算机上面显然没有什么天赋,而高中计算机课的体验又极差:C语言编程课的老师有浓重的口音,课程听得一知半解,若不是考试前临时抱佛脚我就挂科了。多媒体课的老师虽然不那么坑爹,但是由于有会考的压力在,每次课内容都满满当当。现在回想起来,自己高中学的那四门计算机课(信息技术基础、多媒体技术初级、程序设计初级、多媒体技术高级)算是我上大学前仅有的计算机能力,而我现在回首,却感觉这些东西已经还给了老师。我也没有什么对计算机技术的浓厚兴趣:我干不出闯入电脑老师房间的壮举,也做不到把所有的课余时间都拿来学习编程。
我感觉自己唯一值得称道的品质也就是一种宏观上的不言失败、不言放弃。尽管我偶尔会放弃几个高难度的数据结构作业(特别是图那部分的),尽管我在三大课程设计中都没有做到最后关卡(主要是因为个人能力有限),但是我从来不主动翘课,每门考试之前也一定会把教材和往届题翻个三五遍。这对于考到一个足以合格的分数来说够用了,而且如果准备得充分完全能够达到80+,90+。能够超越那部分因为菜而放弃了努力学习、上课听讲的同学,也算是自己的一点优势吧。
第二部分:在计算机系里学习
- 你对你的大学生活有什么想要吐槽的地方吗?你理想的大学教育应该是什么样子的?跟学校给你的有什么区别?比较你在中国大学的经历,你的老师和学校能做到和国外那样吗?如果不能,请分析一下为什么。(必答)
我从来不相信什么“过了高考,一切就都解脱了,大学将是你自由发展的天堂”(摘自博文A),因为无论是父母还是高中老师都从来没跟我讲过这种谎言。然而,我来到北航之后,却仍然感觉大学的压力,大得有些超过我的承受能力。
我们这届大一时开设了一门“程序设计第二课堂”(后来由于培养方案调整,这个课现在应该取消了),形式大致是每星期日的晚上抽出两个小时,由大二的学长学姐教我们C语言编程和数据结构的一些基础知识。作为一个在北京上学的学生,我们根本不像其它省市存在普遍的补课现象。当我得知这一消息时,感到莫名的惊诧。后来航概机考、数据结构机考什么的也都安排在周末,让我更加意识到:北航在某些地方像一所高中,把学生的生活安排得满满当当,周末也不例外。
另外一个槽点,是我跟一个已经工作的学长交流中形成的:北航没用的课太多。
这里我并不是指那些经常被吐槽没用的课程(思政、军理之类的),毕竟认真听了这些课的学生都感觉有所收获(特别是高宁老师的马原,被评为网红思政课,名额十分抢手)。毕竟,这些课在教务系统里属于“通识课程”,而通识课程应该是有“无用之用”的课程。我指的,是那些不属于通识课程,而且学下来没什么收获的课程,例如基础物理实验、“实践与展示”系列课程。几乎所有的学生,甚至大部分老师,都认为计算机专业学习物理没什么必要。物理实验在大二上学期开设,正是学生忙于计组的时候,每次在网上预约实验,抄预习报告,处理数据时都感觉自己在虚度光阴。实践与展示更是没必要连着开设3年。尽管大一时练习着写一篇论文还是有些用处的,但是每年花3-4个月的时间鼓捣一些学术垃圾或是绞尽脑汁编写创业策划书真的是毫无必要。“冯如杯”获奖项目中不乏一些深入的见解或是有趣的项目,但更多学生的状态是随便攒一些文字交上去,成为学术垃圾。
我理想中的大学教育不应该像大多数高中一样,像指挥棒一样驱赶着学生。大学教育更多时候应该给学生一些个性拓展的空间,而这显然是北航计算机学院的培养模式比较欠缺的。尽管我承认布置一大堆作业、开设若干门大课重课对于打牢学生的工程和开发基础有所帮助,但大学教育不应该仅限于这些。
北航这些年来强调与国际接轨,目标也直指世界一流大学。在几门核心专业课上,老师也喜欢把自己的课程同国外大学课程进行对比。如果这些都是真的,那么北航这些核心专业课的难度应该已经赶上了国外大学。然而,北航在某些方面与国外大学还有距离,特别是学生的发展空间上。有人总结过,国内大学的培养目标就是把你培养成该大学的研究生,这在北航也印证了一部分。在刚刚过去的寒假,我因为要上GRE的班课,而耽误了一部分冯如杯创业项目的进度。显然,北航的某些设置就没有考虑到以出国深造、工作为目标的本科生。究其原因,还是一种思想观念的落后吧。在国内高校读研一般被视为正统道路,而“野路子”很少有话语权。
- 迄今为止,你写了多少代码,描述你做的最复杂的软件项目/作业。(必答)
迄今为止,我写了大概5000行左右的代码。我做过的最复杂的软件作业大概是“面向对象设计与构造”课程的作业之一——出租车调度系统。程序需要读入并解析一个代表城市二维地图(标明了哪里有道路)的文件,随机生成若干出租车,然后从控制台接受用户输入的打车需求,调度一辆出租车响应用户的请求。在调度出租车时,除了需要考虑出租车距离上车点的距离,还需要考虑该出租车的信用记录。每成功完成一单会使出租车的信用上升。城市有红绿灯系统,交通规则仿照了现实生活中的规则。程序使用java语言实现。
第三部分:未来规划
- 对于你未来在IT行业的发展,你有什么样的梦想或者未来想从事什么样的工作?你准备怎样来规划你技术道路,职业道路和社会道路?(必答)
我倒也没有什么宏伟的梦想,只不过想做个程序员:在养家糊口的同时,为社会做一点贡献。
对于道路的规划,我自身并没有太多的想法,不过我认为博客K中的一些建议很有用。“从毕业开始到毕业后至少5年内,踏踏实实地专研技术。”技术背景对我来说是非常欠缺的,所以这一条非常适用,只不过实际过程可能比5年还要长。“从毕业后3年到7年的时间,注意学习工作当中的方法以及相关的管理和流程,不但要知其然,还要知其所以然。”这是因为程序员不是干一辈子的。多数程序员之后都会走上管理岗位,而这类岗位需要管理学知识和管理经验。后者正是引文中提到的学习内容。
所以我的职业道路大概就是毕业之后进入中小公司,从最底层的程序员干起。如果工作干出了成效,那么就逐渐总结和提炼工作中的管理经验,走上管理岗位。如果干不出什么成效,那就考虑转岗吧,毕竟人上了年纪后,写代码的能力已大大不如年轻人,被淘汰也是必然趋势。
至于社会道路,自己并不是个外向的人,在各个学校里都没什么朋友。将来估计只能跟亲戚走动走动,或者回母校看看。
参考博文
博文I 《我的软件开发生涯》
博文A 《辜新星:时刻调整方向 找到人生的蓝海》
博客K 《谈谈职业规划——CSDN对我的采访》