• 软件工程第0次作业


    软件工程第0次作业


    项目 内容
    这个作业属于哪个课程 2019春季计算机学院软件工程(罗杰)(北京航空航天大学)
    这个作业的要求在哪里 [2019BUAA软工助教]第0次个人作业
    我在这个课程的目标是 学习软件工程方法与相关工具,提升自己的工程能力,锻炼自己与他人协同开发以及开发较大项目的能力
    这个作业在哪个具体方面帮助我实现目标 在目标方面,本次作业让我明确了自身的现状和局限,明确了我努力的方向

    第一部分:结缘计算机

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

    我最终跟随计算机系学习经历了一段非常曲折的过程。不同于博客中的各位博主,我虽然在高中时非常向往计算机专业,但并没有付出什么具体的行动,也没有系统地在这个方向上努力学习,仅仅是喜欢“瞎捣鼓”自己的电脑(例如装个Linux看看这类相对肤浅的捣鼓)。实际上我直到大一才正式系统地学习编程。而在高考时由于发挥不太好,无法直接选择北航的计算机专业,一开始选择了软院,但最后阴差阳错地落到了数学系。在数学系学习了半年后我又幸运地获得了进入高工的资格,但大一的我比较浮躁没有好好珍惜当时的机会,从而到了大二选专业时成绩又不够直接选择计算机方向。我真正清楚地感觉到自己独自站在了人生的岔路口上,因为选择不同的专业会让自己的未来完全不同。彼时的我已经接触了一些编程的知识,凭借着自己心底仍然存留的对计算机的向往,凭借着一种“认为自己可以赶上甚至超越其他荣誉学生”的自信,最终我还是退荣选择了计算机专业。

    对于个人条件,相比那些大佬博主,如博客1中的轮子哥,在中学时期就能自学编程并完成上万行的程序,我个人之前的积累可以说几乎为零,而且我个人起初的自学积极性也不足。但在以一种争强好胜以及证明自己的心态中学习了一年后,我发现自己虽然天赋不如一些大佬们,但凭借自己的努力也可以做的不错,并且自己自学的能力也有所提升。

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

    以前的我在几乎不了解计算机的专业知识时,也还是挺喜欢计算机这个领域的。一方面从小我对各种电子产品都有一种天然的好感,另一方面高中便在知乎上了解到了计算机专业前景相对较好。虽然起初喜爱的原因非常功利,但在我真正接触了计算机专业相关知识后,我对其的喜爱可以说是加深了。大一上学期参与的“大学计算机基础”课程让我完成了第一个可以说是有各种功能的小程序,虽然现在看来非常简单,但当时看着程序跑起来时还是非常欣慰的。大二开始参与诸如计算机组成、操作系统还有OO这样的硬核课程时,各种复杂的知识我也并未感觉很枯燥。大二时我也真正开始接触到了一些前沿的东西,如目前热门的深度学习。我对这个领域的喜爱随着知识面广度和深度逐步增大而增加,并且喜爱的内容也更加细致了。

    说到擅长,现在想想起初我毅然决然要学计算机的时候还是很莽的,因为仅凭大一写的几百行小程序就觉得自己能够承受住之后各种硬核的课程设计显然不够理性。大二时的计组实验介绍课上,老师说每年做到最后一关的人很少,我心底便暗暗想着自己一定要成为这一小撮人里的一个。不管通了多少宵,最终我还是成功了,这件事也给了我极大的鼓舞。现在看来我虽然不能说天赋异禀,但凭借自己的努力,我认为自己还是取得了一些进步的,也有了面对将来各种挑战的底气。

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

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

    其实大学生活过了一多半了,大部分问题上我都没有太多要吐槽的,一开始想说相比于很多高中同学的大学生活来看,北航的课业压力的确较大,但在阅读了博客2中关于美国大学的课堂经历后,我认为北航的课业压力还位于可以接受的范围内。唯一我想吐槽的事情可能是所谓“选课决定论”,这是我和同学一起发明的一个词,特指由于选了一些给分普遍较高/普遍较低的课程而导致GPA增减的现象。在这一现象中,自身努力带来的影响小于选课本身。例如某些课程老师给分普遍较高,大家为了自己的成绩而争相选择;某些课程我很感兴趣,但由于从同学那里听说这个老师给分较低而最终没有选择。我理解一些老师希望大家都能取得好成绩的好心,但这也对那些没有选到课的同学造成了一种不公平,而一些老师给分平均较低也对选课的同学来说不够公平。

    我理想中的大学教育已经和我目前接受的大学教育较为接近了,当然理想当中我希望学校能够给予更多选课上的自由权(适当宽松对外名额),以及能够少一些“水课”,多一些与时俱进的课程内容。在博客3当中我看到了国外的移动App开发课程,相比于我上学期学习的安卓开发课程而言,这个课程在平时所教授的内容更加充实,并且附带了各种小练习。与此相比上学期的安卓开发课程仅仅是课堂上讲了很多理论后就直接跨越到最后一步“自行选题开发一个App”,而且平时讲述的很多内容有些过时,导致最后写程序仍然仅能靠自学。我不否认自学的重要性,但开设课程的目的不就是带领大家学习新的知识吗?

    我看到了很多老师目前为了提升教学效果而做出的诸多努力,他们其中一些也在努力地向国外那些先进的教学方式靠拢。我从心底里敬佩这些为学生着想的老师。但是我仍然觉得中国的大学全然做到像博客2中提到的美国课堂一样仍有着很大的距离。这种距离是无法仅靠课程本身改革就能弥补的。换句话说,我认为中国教育与美国教育模式的不同更多地关系到两国国情以及整体教育体系的差异。
    博客2当中,我看到了这样一句话

    国内高等教育的问题,其实不止是模式、大学扩招的问题,更多还是理念上的差距(父母、教育工作者、教辅人员、官员),并不会像经济发展那样容易赶上发达国家。

    我很赞同这句话的观点,老师、家长甚至是学生自身的观念不同就会导致差异。从小学到高中我们每个人几乎都拥有共同的目标,即考上好大学。老师家长通过各种方式督促着我们像目标前进,从而学生自身的创造性和自觉性有所削弱。上了大学之后突然没有人“管”了,很多学生失去的督促的动力便会泄下力来,殊不知大学学习的专业知识才是将来最为重要的(惭愧地说我自己也曾经懈怠了一段时间)。而为了让学生学习,学校很多情况下不得不采用一些类似于高中的做法来督促大家,并且由于学生习惯了被动接受知识,很多老师为了省事也没有考虑很多发挥学生主动性的地方。因此我认为大学教育赶上国外的模式仍有很大的路要走,亦或者我们可以根据当前的国情再去探索新的模式,当然这些就是另一个话题了。

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

    粗略的算我写的代码应该有万行以上了,虽然相比之下仍不算太多。我做过的最复杂的项目应当是今年寒假期间参与了清华大学一个学长带领的知识图谱项目,这也是我真正意义上第一次接触多人协同开发。从前端到后端整个系统代码量超过万行,我也仅仅负责了其中部分功能的实现,大部分是前端功能。多人开发项目与独立开发不同,很多时候要做一些必要的约定来约束大家开发,我也从中真正体会到了大二OO课上学习的诸多知识的用途。第一次参与大项目遇到了很多头疼的情况,例如由于有人改变了接口而导致很多函数需要重构,以及功能之间出现冲突的情况。不过总体来说这个项目给我的提升相比于普通的课程设计来说要大得多。

    速成的培训班和打基础的大学教育还有mooc之间有区别吗?

    速成班和正经大学课程的区别我想是很明显的,不论是从知乎上还是各种博客经历中,都能看出基础课程无论是对写代码本身还是对开发大的项目而言都有非常重要的意义。从博客5中作者对培训班学生的评价就可以看出,培训班往往为了速成,即使连一些很基本的代码规范和编程思想都不会赘述,也就不能让学员养成良好的习惯。

    我更想讨论一下大学教育和MOOC之间的区别,因为这两者我均有所接触。我想先叙述一下我和MOOC的几次接触。在我正式开始大二计算机的专业课学习前,不好意思地讲我只会Python一门语言,而且由于一个学期没写代码而几乎忘的差不多了,而其他最基础的计算机专业知识如数据结构则几乎没有概念。为了能够跟上课程,我在大二前的暑假中学习了浙大开设的C语言和数据结构两门MOOC,并且跟着课程要求完成了很多练习。在学习之后我认为MOOC对于速成一门课来说的确很有用,起码开学之后我的C语言水平足够应付课程了,大二高工虽然也开设了数据结构课程但我由于之前学过,再学起来也更加轻松。随后我为了拓宽知识面也尝试了一些国外的MOOC,如Coursera上吴恩达讲授的机器学习课。

    虽说看MOOC视频速度很快,有时嫌老师语速慢我甚至会开1.5倍速看课程,也会做课后习题,但MOOC课程的效果仍然比不上真正的大学课程,或者说MOOC仅仅适用于速成/启蒙,但不够深入。我在上学期学习了学校开设的机器学习导论后感受到了MOOC和实际课程的差距。一般的MOOC为了扩大学习群体,往往会降低课程本身的难度,例如吴恩达的机器学习课程中省略了很多数学推导。而实际应用中往往这些被省略的东西才是最重要的。所以我认为MOOC的作用仅限于速成一门课中的知识,但知识的深度往往不如学校里的课程。

    第三部分:未来规划

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

    我很同意博客6中作者的一句话,即“做规划时最重要的是两个方面:一是清楚地认识自己的能力、优势和性格;二是确定自己的专业和想从事的行业”。一方面,在计算机专业学习了一段时间后,我对各方向的兴趣有了区别。以往我对深度学习方面非常向往,但在学习了一些机器学习还有CV方面的课程后我觉得这方面和我想象当中有些差距。反倒是在接触了系统方面的一些知识后我感觉比较符合个人的胃口。另一方面,在上过一些课程、做过一些小项目后,我发现自己在工程方面的能力强于做纯算法或者模型方面的能力,这也是为什么我对目前的机器学习失去了部分兴趣,因为认识到自身可能真的不适合。但是本科阶段我积累的相关知识和经验还不够找到一份我心仪的工作,因此我仍然打算进入实验室准备读研。在研究生毕业后我希望能够从事基础架构或者中间件方面的开发工作,并且希望能够在技术岗位上多坚持一段时间。当然在不断学习技术的同时我也计划学习一些管理和金融方面的技能,为将来向管理层转型做准备,毕竟现实地讲互联网公司里老程序员的生存境况不容乐观。

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

    其实我本身很向往企业实习,但已经计划读研的我目前还是打算在实验室中实习,并且等自己有了一些深度的积累后再去企业实习。一方面实验室实习对于保研很重要,另一方面我认为自己目前的知识与技术水平不够进入大企业的核心团队实习。去小团队搬砖的确也可以增加不少经验,但对于目前的我来说性价比不如在实验室中实习。
    说到这里,我对博客6中的部分观点不太认同,我认为这个观点由于时代的变化需要被修订了。博客中的主人公认为

    在大学的时候尽量多地进入公司参与实际工作,一方面积累工作经验,另一方面,提前认识工作和自己,以便毕业时更准确地把握自己的方向。

    这篇博客的发布时间是2007年,按文中时间推算主人公在1997年已经进入计算机行业工作了。一方面,国内当时的计算机行业正处于快速变革与发展中,编程还是一门属于少数人的手艺;另一方面,当时研究生在国内还很稀少,本科生学历还是竞争力很强的时代。但对于现在来说,我身边甚至小学生都开始学习编程了,而周边的同学甚至非计算机系的同学都可以熟练地写代码。此时除非是大佬,一般人找实习往往找不到那些真正能够带给自己提升的岗位或公司。除此之外很多需要较深知识背景的岗位如目前各种“算法岗”都需要以研究生学历为基础。从而我觉得这句话在当前环境下不能说完全适用了。我认为如果想在目前的大环境下向各领域高层次进发,还是需要在一些实力较强的学校或研究所中深造的;如果想从事开发方面的工作,那么在大公司中参与的项目的确要优于很多实验室中的小项目。

  • 相关阅读:
    ASP.NET 2.0 正式版中无刷新页面的开发
    Flex在线录制视频并回放(源码)
    url重写
    在Web应用程序中执行计划任务
    添加类别和修改类别(无限级别分类)
    用C#制作新闻阅读器
    字符串处理
    编程珠玑随笔
    实现元素的全排列
    提高代码质量的三要素
  • 原文地址:https://www.cnblogs.com/c4tbro/p/10448202.html
Copyright © 2020-2023  润新知