软件工程第0次作业

本作业属于课程软件工程
本次作业要求是阅读所给博客,完成一篇读后感,具体作业要求
我在这个课程的目标是不断规范自己的代码规范,能够学会团队协作开发的方法,提高自己的代码能力和工程能力。
这个课程帮助我了解软件工程的基本概念并掌握软件工程中的核心技术,以及帮我们了解计算机行业的发展以及思考个人职业生涯规划。

第一部分 结缘计算机

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

  我选择计算机专业的原因有很大一部分是随机以及盲从的心理。计算机并不是我当时自己想读的专业,但是因为当时家长反对我去读医学我也没有做太多的抗争便顺从了。高考成绩顺位在附近的有南大、中科大和人大以及北航,但是家长考虑到前三所学校只能压上投档线无法选择专业,加上有很多亲戚推荐说现在计算机是很热门的专业,因此最终选择北航的计算机专业。

  我自我认为只能算资质平庸的学生,在每年接近百万考生的省份学习,我们的初中和高中是基本是上没有任何课余爱好的,参加竞赛也是以保送和自主招生为主要目的,所以参加也在高中参加了数学竞赛。在上大学之前我基本没有接触过电脑(甚至高考报志愿的时候也是去的亲戚家用的电脑报的),上了大学之后我发现身边真的有很多比自己厉害很多的同学,他们或者是高中信息学竞赛的国奖得主,或者是来自素质教育比较好的身份在初高中对计算机以及编程有了很多的经验。

  和博客里的博主相比,我觉得自己差的不是一星半点,博客1的博主初三开始便疯狂捣鼓电脑,高中就进行编程练习,甚至为了编程还学好了英语。博客2的博主在那个年代从初二开始就热爱编程。博客3的博主在读数学系的时候甚至基本上把所有的计算机专业相关知识学习了一遍。对计算机的专业的热情以及经验我是远远比不上这些博主的。觉得自己现在的状态像极了本科阶段的博客4中的博主,有些迷茫也有些害怕。

1.2 计算机是你喜欢的领域吗?是你擅长的领域吗?

  我认为计算机专业并不是我最擅长的专业,也并没有到热爱的地步,但是也是我并不反感的专业。如果时间可以重新倒流到高三的暑假,我一定会告诉那时只有16岁的我坚持自己的梦想,成为一名医生。但是既然选择过了就不要后悔,就要努力做好,对自己的人生负责。

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

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

  大学生活已经过半,我的确在学院的学习生活中发现了一些值得吐槽的点。第一是课程体系设计,两年半课程下来,我觉得我们学院本科阶段的教学重心主要放在了计组、操作系统、编译等比较偏向硬件以及系统层次的课程。但是相比这三门课的重压之下,算法等偏软的课程的授课难度就小了很多(面向对象除外)。我并不是觉得现在硬件和系统方向不是风口就认为不应该开设,而是觉得在软件层次应该也相应开展一些课程。第二我觉得学院应该开设新兴领域的一些课程,比如跟人工智能相关的,而且这些课程最好能像国外知名大学看齐,不仅仅是停留在课堂讲授+结课论文这种形式,更应该在过程中多布置小练习小工程及时巩固所学的理论。这样一方面可以使同学们了解相关领域,也有助于同学们在工作或者进一步深造的时候选择好自己未来的方向。第三我觉得学院应该做的是平衡各专业选修课的难度以及成绩尺度。学院的专业选修课的开设初衷是希望大家能了解各个小方向的基本情况之后集中某一方向进行研究,但是出于保研成绩的压力,大家在选课的时候总是会倾向于选择成绩给的较高而且比较轻松的课程,导致很多课程人数极少甚至不得不停开。

  我理想中的大学教育,应该是前期能够让学生接受专业基础的统一培养,在三四年级的时候能够根绝学生的个人未来选择(工作/继续深造)给予不同的指导,比如为想要工作的同学安排一些跟工业界所需技能相关的课程,给想要深造的同学安排一些具体方向上的深入课程。

  我觉得在我看来学校给予的东西基本上已经算是做到了学校的所有了,很多同学会吐槽说在学校学的东西都是过时的,都是在浪费时间,出去工作根本用不上。但是结合我们这个专业的特点,工业界的热点总是在不停地变化着(几年前的VR 两年前的前端安卓开发 现在如火如荼的AI),工业界的热点总是在不停地更迭着,没有人能准确预测出在我们毕业工作的时候的新热点又是什么。如果一味追求热点,最后的结局很可能就是正热之时你进入学习,等你学成之时热点已经过去,相关工作岗位已经饱和。比如博客2的博主就提到说十年之前他精通的框架结构在今天已经完全过时,计算机的未来是什么样的没有任何人知道。所以学院也没有办法去赌,去猜测热点,因此最好的方法就是打扎实学生的基本素养和系统能力。

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

  目前为止在学校的引导以及个人自学的情况下,我掌握了C、C++、Java、Python、js和verilog。具体行数没有做过统计,但是虽然做的作业也多,但是对自己代码的质量并没有很大的信心。

  我写过最复杂的作业大部分都是学校的几门课设上(计组 OO 操作系统和编译器),还有一个去年暑假在公司实习的时候写了一个神经网络量化压缩的系统,这几个应该算是写过的相对比较复杂的项目木。

2.3 论科班与培训班的区别

  博客5这篇文章看完之后我心理还是蛮失落的,诚然我们专业最大的特性就是大部分方向的专业壁垒太低,竞争很激烈。比如传统的开发方向,有很多人可以通过培训班速成找到一份工作,再如这两年大火的AI方向,AI对于编程能力的要求就没有软件开发那么高,但是对于数学以及算法要求会高一些,也看到网上热议各种自动化、数学、光学等相关专业的同学都在纷纷转CS从事AI。我觉得科班学生的优势在于全面,当然这也可能是一定的劣势(因为全面意味着在某个专向上可能接触的付出的经历不足)。我记得编译老师上课说过,当你学了编译之后了解了程序运行原理后更容易写出高效的代码。但是既然选择了科班选择了计算机专业,那就只能培养自己的竞争力,以求在激烈的竞争中能够找到份满意的工作。

2.4 数学课对计算机专业的作用

  在刚上大学的时候跟身边的其他同学聊起来这个问题其他啊同学都表示你们不是学编程的吗,学数学有什么用呢,当时大一的我也是一知半解,但是后来随着对学科的进一步了解,我看到了数学(微积分 线性代数和概率论)在算法领域(尤其是这两年新兴的AI算法)中起到了核心作用。此外,在信息安全领域,数论,离散数学抽象代数等数学知识也是相关方向的核心知识。

第三部分 未来规划

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

  读完老师推荐的十几篇博客之后,内心中对这个专业的不安感愈发变得强烈起来。博客6/7是陈皓先生结合自己的亲身经历给年轻一代程序员的指导,而博客8是一名产品经理的经历。本来以为自己是正经大学学习的科班生,在完整的知识架构等方面一定会比野生程序员更完善。但是结合自己所掌握的知识,跟博文中一位位博主相比还是相差甚远。对于自己在IT的未来,主要还是想找安稳的工作,而且要有自己的生活(并不想每天所有的时间都在加班中度过)。自己有打算并且家人也希望能继续读研,相对于学术界,我觉得自己未来去工业界的可能性更大。但是因为自己的性格比较多虑,因此不出意外是不会尝试创业这一条道路的。

3.2.你们马上就要面临实习了,你打算在企业内实习还是在实验室实习?

  因为家人非常希望我继续深造,本身自己也有深造的打算,所以我我希望暂时先在实验室实习,提前进入研究生生活,等研究生快要毕业的时候再去企业实习。

3.3.实习经验究竟有多重要?是否需要马上开始积累实习经验?

  跟学长学姐聊天来看,实习经验还是很重要的。从找工作角度来看,一般来说校招的时候企业更倾向于让已经在企业内实习一段时间的员工直接转正,从个人能力提升来说,企业可能拥有更多的硬件以及数据资源(这是特指AI方面,因为当前AI的核心是数据驱动以及高计算力,公司内的GPU资源以及数据资源一般是老师实验室所不能比的,其余方向如软工等并不是很了解)。

参考博客

博客1
博客2
博客3
博客4
博客5
博客6
博客7
博客8

[2019/02/28 进行第1次修正]