2020BUAA软件工程 第一次个人作业 回顾与展望

2020BUAA软件工程\(\cdot\)第一次个人作业 回顾与展望

一、作业要求简介

本文是北京航空航天大学计算机学院软件工程课程的第一次作业。作为一名计算机专业的大三学生,这次作业的目的正是让我们更好地总结过去的学习生涯,做好未来的职业规划。通过阅读前人的职业经历,借鉴他们的成功经验,同时反思自己是否在正确的道路上朝着自己想要的目标前进。

项目 内容
本作业属于北航软件工程课程 博客园班级链接
作业要求请点击链接查看 作业要求
我在这门课程的目标是 获得成为一名软件工程师的能力
这个作业在哪个具体方面帮助我实现目标 总结过去、规划未来

二、正文

第一部分:结缘计算机

问:你为什么选择计算机专业?你认为你的条件如何?和这些博主比呢?

博客I中的作者是一位狂热的计算机爱好者,他/她选择从业于计算机完全是出于对行业的爱好。而博客G中的主角选择投身写程序并非出于对计算机和写代码的热爱,而是为了生活——"于是,虽然她从来没有碰过电脑,虽然她不知道什么是编程,但是她已经有了一个理想,那就是做程序员,一个月挣 8000 块钱。"

我认为,一个人与计算机行业的结缘的原因并不在于其对行业的热爱或信仰,也不在于科班或非科班。而在于其所处的时代背景与个人机缘巧合的选择。

博客I中的作者处于个人计算机刚刚家庭的时代,他当时家里拥有386,和同学一起偷着去老师家里玩电脑。正是在这个时代背景下加之他优质的家庭条件赋予了作者对计算机的热爱。而博客G的主角处在互联网公司刚刚兴起,行业急需大量程序员的时代。她看到了计算机行业上升期的红利,因而决定投身到计算机工作中。

对于我自己而言,我所处的时代是计算机技术逐渐普及千家万户,互联网产业飞速发展的时代。同时也是一个高考毕业生疯狂选报计算机专业、其他行业的人员疯狂转入计算机行业的时代。计算机行业实际上已经成为当前社会发展进程中的主流行业,代表着当今时代。我并没有经历过像博客I的作者一样从幼时起对计算机技术如醉如痴的过程,也并没有博客G女主角一样因生活所迫从事计算机产业的压力。我之所以选择计算机专业,大概便是被互联网产业的时代洪流裹挟而冲进了这计算机领域吧。我相信有很多人会和我一样,在选择自己未来的行业时,并没有一个所谓的最喜欢的方向,因而便选择了成为大多数,向着大多数人所追求的计算机行业前进着。。。

谈完了我为什么选择计算机专业,再谈谈后面的问题。我在中学是一个地地道道的应试教育考生,每日沉迷高考,无时培养兴趣,报志愿时确实不知道自己未来喜欢从事什么职业。但是,应试教育也培养了我扎实的数理基础,语言表达,英语能力,学习能力等。相比于博客I作者的理科偏科,以及博客G主角的低文化水平,我的基础可以说比他们都好。有了这些文化基础,其实不论从事什么专业领域的学习,都能够很好的投入进去。所以当我选择计算机专业后,我便踏踏实实的学习计算机专业的每一门专业课,力争得到好的课程成绩。"只有无限投入,才知何为热爱。"逐渐地,两年半的时间过去了,我已经了解了计算机这门学科,真正感受到了博客I作者的那种痴迷与热爱。

第二部分:在计算机系里学习

问:你对你的大学生活有什么想要吐槽的地方吗?你理想的大学教育应该是什么样子的?跟学校给你的有什么区别?比较你在中国大学的经历,你的老师和学校能做到和国外那样吗?如果不能,请分析一下为什么。

下文中,我只讨论我所经历的北航计算机学院的教育,其他大学或其他专业的教育模式可能不同,我也没经历过,所以不做讨论。

首先,B文和H文中都提到了大学教育的问题。B文指出,很多学生遵循高考模式来学习大学知识,只了解上课讲的和考试考的,使得科班出身的计算机毕业生并没有真正学懂计算机。而H文更强烈地指出,"中国大学教育就一个字,渣"。并以自己一个文科生靠自学编程从而超越众多科班生实现自我价值来印证中国大学教育的失败。

在我看来,H文的观点过于偏激了,他并没证明,如果自己接受过计算机科班教育并依然如他所述的努力会比他自学的结果差,所以并不能以他的个人努力否认计算机科班教育。而B文所言的道理是值得思考的,即如何让大学生掌握大学的学习方式确实是当前中国高等教育面临的挑战。下面谈谈我对这个问题的理解。

  1. 为什么中国学生愿意只掌握老师上课讲的,考试考的知识。想得到一个高的分数却不愿意深究此科目更深层次的问题?

    有些人可能会怪罪到应试教育头上,这固然是一个原因。但我认为更重要的原因是中国学生没有做好职业规划。我们作为正在接受高等教育的成年人,实际上有能力判断出上课老师讲授的知识远远只是冰山一角(也许有些同学真的不知道,good for them),而不愿意深入研究的原因正是因为我们没有明确的职业规划。可以深入研究的知识浩如烟海,每一个方向都足够耗尽你短短的本科四年,所以要深入研究哪一个方向呢?

    依我看来,本科教育更像一个行业的科普教育,它能决定毕业者的行业知识下限。作为本科生,我们并不知道下限是什么,这个下限正是由大学的培养方案制定者给出的,也是由各个科目的老师在课堂上的教授,期末的考试所体现的。所以,当一个本科生没有足够充分的职业规划目标时,他只能选择相信学校,学会老师所讲授的知识点,考个好成绩。这样他才能保证至少满足行业要求,今后有资本选择自己要走的职业方向。

  2. 既然学生渴望输入式教育,为什么我们的高校不做到100%输入呢?

    100%的输入换句话说可以理解为,让学生在有限时间内获得更多的知识和能力提升。B文作者谈到了自己听清华教授讲数据结构课受益匪浅,N、O、Q三篇博文也介绍了世界一流大学的课程情况和作业情况。以上都可以理解为老师让学生在有限时间内获得更多的知识和能力提升。中国很多高校无法做到这点的原因是教育资源的不足

    随着中国的发展,中国大学的本科教育实际上已经是普及教育了,一个月3000块钱雇不了一个农民工,只能雇个大学生。普及教育导致教育资源的不足,如师资力量匮乏,教学经费不足,教辅团队水平低人员不足,课程设计差等等。举个最简单的例子,在美国上大学,一年要花30-50w,中国学费只有8000,宿舍费1000以内。你指望这些钱能买到多少教育资源呢?

    但是,可以看出,中国顶尖学府的教育质量和教育资源正在快速提升,以北航计算机为例,可以看到某些学科的教育资源和教育质量已经有很大提升。如计算机组成原理课,我有幸经历课程学习,并作为教辅团队的一员帮助下一届的同学学习了此课程。通过从14年到19年这6年的不断改革与设计,以分Project的实验为载体,让学生亲自上机实践,大部分学生都能通过一行行代码实现一个五级流水全速转发支持中断异常与外设的高质量MIPS处理器。这种优质的课程设计使得学生在短时间内学到了大量知识,提升了很多能力。其他课程也都在逐渐提升教学质量,以良好的课程设计,提升学生的知识输入。

  3. 既然教育资源有限,学校应该如何引导学生转变学习方式呢?

    如上文分析,如果能让学生有明确的职业规划,就可以解决这个问题了,学生知道自己将来要做什么方向,就可以根据方向选择需要深入学习的知识。例如有一些学长在经验分享时指出,自己在大一入学就决定本科毕业就做开发工作,他就自然放弃了刷高学分,而把时间放在实习和做项目上,深入研究开发所需的技术栈,最后找到了很好的工作。学校应当引导学生做好职业规划,这样才能充分发挥学生的主观学习动力,朝着他的目标努力。

问:迄今为止,你写了多少代码,描述你做的最复杂的软件项目/作业。

目前,我的代码量大部分来源于各门课程大作业。数据结构大作业在500行,组成原理大概2000-3000行,面向对象一学期的作业大概累计5000行,编译原理写的编译器大概5000-6000行,一些零散的小项目的代码加起来大概2000-3000行。所以总共的代码量加起来差不多有15000行(指代码总量,有效代码量可能很少很少)。

我目前做过的最复杂的项目应该是编译原理课写的类C文法编译器,在这个项目中学到了很多东西。采用了C++语言,是我在看了C++ Primer书之后真正用C++写的第一个稍大型项目。采用了面向对象思想设计架构,学着用git管理版本,熟悉使用VS集成开发环境。代码的内容逻辑也比较复杂,尤其是后期做编译优化的阶段,为了实现inline和DAG图优化,也经历过很痛苦的熬夜debug过程。最终用5000-6000行代码独立实现了一个类C文法编译器,包括词法分析、语法分析、错误处理、符号表管理、中间代码生成、代码优化、目标代码导出等功能步骤,并达到了较好的测试性能。

第三部分:未来规划

问:对于你未来在IT行业的发展,你有什么样的梦想或者未来想从事什么样的工作?你准备怎样来规划你技术道路,职业道路和社会道路?

我的梦想是通过技术达到自我实现,在IT的一个领域做一好项稳扎稳打的技术。2019年阿里巴巴首席架构师、阿里云之父王坚当选中国工程院院士,在我读了王坚带领团队开发阿里云的事迹之后,我深深被他那种对技术执着的追求所打动。我从内心深处发觉,原来我也想成为这样一位不懈追求技术的人。

想要追求技术一定要终身学习,本科毕业之后我要读研究生,掌握科学的研究方法。毕业之后争取去到大企业的核心业务技术部门,先积累行业最顶尖的技术。再针对待改进的问题,勇于攻克最困难的部分,这样才能真正通过技术达到自我实现。

当然,谈这些都只是目前所想,未来实际的道路充满了无限可能。当下还是要做好眼前的工作的,在接下来一个学期的软件工程课中,我期待着能学到更多的知识,提升更多的能力,我依然会全力以赴的。Rush!!!

三、参考文献

刘帅:在失望中寻找希望

我前妻的故事:一个北大青鸟出来的,如何从月薪800元到年薪40万?

【野生程序员】:优先招聘

我的软件开发生涯 (10年开发经验总结和爆栈人生)

美国视界(1):第一流的本科教学课堂该是什么样?

分享下在美国读研期间的一些计算机课程作业

软件工程资料 - 优秀的大学怎么教程序开发和软件工程课

你可能感兴趣的:(2020BUAA软件工程 第一次个人作业 回顾与展望)