2020软工第一次作业-热身

2020软工第一次作业-热身

项目 内容
课程链接 2020春季计算机学院软件工程(罗杰 任健)
作业要求 第一次作业-热身!
课程目标 系统学习软件开发理论和流程,通过实践积累软件开发经验
本博客的收获 重新认真审视自己与计算机专业的关系,对自己的计算机学习小结和规划

写在前面

这是第一次软工作业,我想借此机会重新认真审视自己对待计算机专业的感情和经历,在逻辑思路清晰的情况下表达自己的感受,所以语言可能口语化,请谅解。

第一部分:结缘计算机

你为什么选择计算机专业?

选择计算机专业,可能是因为觉得编程既能让我享受逻辑上的思考,也能得到实践反馈获得成就感,以及当初对计算机领域的神化认知吧。

最初对电脑的喜爱,主要是出于对游戏的喜欢。由于地处西北比较落后,高中之前我对电脑的使用仅限于查资料,玩游戏。我第一次接触编程是在高一的某节微机课上,老师把一段Pascal语言写的用“*”输出三角形的代码写在黑板上,简单讲解各部分作用后让我们抄下来运行,然后修改成输出正三角形,印象中那是唯一一节有关编程的课。当时不知道为什么周围同学很少写成功,而文化课成绩在班上属于吊车尾的我居然比他们更快的成功完成了,这让我的成就感和信心急速上升。随后从老师口中得知了影响了我高中三年直到现在的一个名词:信竞,这就是另一段故事了。故事的结局虽然不好,但是信竞对我的最大影响,就是让还在高中的我提前学习到了一门完全不同于以往知识形式的新学科,让我养成了遇到不会的问题先问google和百度的基本的自学和搜索能力,让我觉得计算机行业是一门结合了理论和实践的高大上的领域,并因此产生了浓厚的兴趣。当时的我甚至以为在计算机行业,只要技术好,甚至可以在家工作和学习,不用上班。虽然现在看来有点天真可笑,但也能从这一想法看出,信竞给了我学习知识非常不一样的体验。国赛翻车之后,信竞帮我培养的逻辑思维和自学能力也在追补文化课上给予了很大的帮助,让我更加觉得计算机专业很高大上,影响我在高考后选择学校和专业时非计算机不入,最终也是如愿来到了计算机系,从此开始我的新阶段。

你认为你的条件如何?和这些博主比呢?

我所处学习环境和自身条件并不差。首先,我从小学三四年级开始接触电脑、玩游戏,物质条件和大多数博主相比并不差。其次,高中开始参加信竞,接触编程的时间与一些成功博主相比可能较晚,但与大多数同学相比还算早的。最后,大学平台方面,北航的计算机系相比于大部分学校也是领先水平。

然而,我对知识的主动追求和自学能力与这些博主相差很远。在我阅读完所有博文后,我发现博主们都有一个共性特点:爱读书,喜欢钻研知识。每个优秀博主都不约而同地提到自己完整详细的读完了一些计算机经典书籍,并一句一句的敲下了书中的所有代码。回想起来,我似乎还没有完整的读过哪本计算机方面的书籍。除此之外,对知识的渴求也让博主们结识了不少良师益友,互相激励共同前进,这也是他们成功的原因。

这些博文对我有了很大的启发,也同时让我对自己有了更进一步的审视,喜欢计算机就应该拿出真正的求知的态度,而现在的我对计算机早已没了当初刚接触编程时的纯粹享受,而是被外压内压push着学习着自己感兴趣的知识。

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

计算机的确是我喜欢的领域,相比于其他领域,计算机领域技术的发展我也是最期待的。先说最基础的编程,虽然编程的过程可能是有点令人头秃的,但能做出一个像样的小程序现在依然能给我带来成就感,让我感到愉悦。其次,计算机领域的各种技术,比如VR、AR、AI、量子计算、物联网等等,也都是在未来我最希望看到的能够有历史性突破的技术,如果能够看到强人工智能出现的那一天(也许不可能),我将心满意足。

曾经高中的我相比于周围没接触过编程知识的人,可能会说我擅长计算机,但是如今身边大佬云集,看到各个厉害的博主学习的经历,擅长计算机实在愧于说出口,希望未来有一天我也可以通过自己的努力说出擅长这个词吧。

你热爱这一专业吗?你对计算机的热爱是怎样的?仅仅是口头的吗?

阅读完各个博客之后,我对各位博主肃然起敬,博文C大佬一行行敲经典书上的程序样例代码,博文I大佬为了学习到老师家“破门而入”,例子还有很多很多。

再重新理性客观的审视我自己从接触计算机到现在的学习:高中时期,只有信竞前期时感到编程是一种纯粹的享受,后来知识繁杂化,最能驱动我学习编程的还是保送的诱惑,国赛的翻车也给我狠狠的学业和心态上的打击,原本规划在高三学习的计算机领域的其他知识也都因为课业压力不了了之;到了大学,我一直是以外在压力为驱动push我不断前进的,而不是主动的去想要把学习计算机知识填满自己的空闲时间。

虽然在学习过程中还是能感受到获得新知识、得到新成果的成就感和快乐,但与博客中大佬相比,特别是按照
公众号R
的标准,没完整的读过、”敲过“任意一本书的我,的确无法称之为”热爱“计算机、”热爱“编程,一些娱乐活动带给我的快乐也比学习计算机知识得到的快乐更多。也许我对计算机专业只是普通的喜欢和感兴趣,计算机专业只是在众多学科中更加对我的胃口的专业罢了。但是无论如何,既然选择了计算机,不管是内心的热爱导致我追求知识,还是压力驱动我学习知识,都要继续努力下去。

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

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

经历了大类招生的我们,最想吐槽的应该就是严重的内卷吧,特别是对想要追求保研的学生们(比如我)带来了微妙的影响,比如当我得知一门课的成绩时,我迫切的想知道平均分,而不是通过成绩来判断自己的水平到底如何、反思自己哪里出了问题。甚至有部分打算考研的人,也被这股风气裹挟着一边吐槽不喜欢的某门课一边废寝忘食的追求这门课的成绩几分的提升(也许不喜欢只是说说而已)。这其实反映出一个问题,那就是我们绝大多数人在这几年的学习中都没有弄明白自己到底想要做什么,对人生的规划也就是随波逐流的上课、考研、工作,带着“反正把各门课成绩提高肯定没问题”的思路学到底。虽说学校大一就开设了小组导师制,互联网上也有许多大佬写的博客分享自己的辉煌经历,但对我来说,学校安排的小组导师也就是形式化的过程而已,开个会,灌灌心灵鸡汤,听导师对自己领域的夸耀,完全没有实感,互联网上各个大佬的博客也是一边激励我继续努力,一边有让我觉得可望不可及。我觉得我们缺少的是对各个工作领域普通人实际的工作体验和交流

我理想中的大学教育,是能让每个人或者说至少大多数人找到自己真正喜爱的行业,自由且开放。能做到这点的大学不多,也真的很难。我有一个不成熟的提议,那就是希望学校能调动自己的资源,在大学前三年,特别是大二大三的时候提供大量的企业、实验室参观或实习机会,让我们有机会能够亲身体验各个领域实际的工作状态,从而早早做好自己的职业规划。在参观的过程中,体会到实际中各个岗位的工作状态,也许会对我们的职业规划带来更实际的影响。

至于国外大学的教育方式,我并没有出国交流过,所以了解甚少。通过博客O博客Q中描述的情况可以看出,北航为本科生开设的大多数专业课如计组课设、面向对象、操作系统课设、编译课设,还有接下来的软件工程,其教学方式与国外一流大学教学方式是类似的,都有详细规划的实验进度安排、严谨的实验指导书、定期的进度检查等等。虽说这些实验课在学期内都让我们欲生欲死,但实践给我们带来的收获很多。

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

粗略估计了一下,先不考虑复制粘贴的情况,代码量应该有2w左右(比较大的作业有计组课设可能有1k~2k,编译课设5.1k,OO可能有个3k,高中时信竞刷题最少也有150*60,还有一些其他课程的作业和其他写的杂七杂八的东西),主要是使用C++,C语言所写,还涵盖了Java、python、Html、JS、verilog、matlab等等。如果考虑的复制粘贴的话,肯定会有缩水了。从接触编程到现在去除高三专心冲刺文化课,算了一下平均每天也就10行左右代码,还可能是复制粘贴的或是其他什么简单代码,着实令人唏嘘,看来以后的确需要加倍努力。

我做过最复杂的(代码量最大的)作业应该就是大三上学期用C++写的类C编译器了。整个编译器作业包括词法分析、语法分析、错误处理、符号表管理、中间代码生成、代码优化、目标代码导出等编译器基本功能,需要我们从零开始一步步设计合理的模块和架构。在开发编译器的过程中,没有使用OOP方法的我着实感受到了面向对象编程方法的重要性,比如已经写好的某个模块不好修改,导致前期不合理的底层设计影响后期进一步对功能的开发,举步维艰。深夜debug,做测试也是常有的事,不过最终凭借意志力还是完成了整个作业以及较高程度的优化,取得了令人满意的成绩。

其次,还有一个令人印象深刻的软件项目,是大二下学期暑假期间在实验室参与的一个办公OA系统的开发。指导老师人非常nice,并不是简简单单的安排任务,而是以用户的身份与我们沟通,让我们每个人从与他交流的过程中提取用户的需求,参照已有模板完成详细设计、前后端交界口、数据字典等设计书的撰写,并帮助我们修改完善设计书,最终在git上共同协作完成项目。整个过程,让我感受到实际工作中软件开发的严谨性,先想好代码要怎么写,再写好文档描述自己准备怎写,互相检查后再开始写代码,与平常自己随便写小程序的过程形成了鲜明对比。参与这个软件项目的开发令我受益匪浅。

学线性代数和概率论的时候,你是否有过这样的疑问“我们为什么要学这么多数学,这和我们的计算机有关系吗”,你现在是否还有这样的疑问?对这个问题,你有自己的解答了吗?那么其他学科呢?

很早就在编程中体会到了数学的重要性,比如竞赛中的数论题目。而线性代数与概率论与现在正火的机器学习、深度学习、数据挖掘等更是密不可分,无论是传统算法还是新的方法,无论是搞科研还是工作中,数学都是避不开的难题,我现在就很后悔当时采用应试的态度学习的线性代数和概率论,迟早要重新补学一遍。

其他学科也一样,计算机这种应用性强的学科作为人类的辅助工具,很容易涉及到学科交叉问题,多种学课思维的碰撞才会迸发出新的灵感。

第三部分:未来规划

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

最近的目标,应该是获得保研资格,继续读研深造,了解更多前沿的计算机知识,拓宽自己的视野,方向的话还没有确定,对NLP很感兴趣,但被学长和舆论各种劝退。再长远的目标应该是一份工作与休息分明的生活,也就是没有加班或者真自愿加班,然而国内大多数互联网公司996的风气让我望而却步,因此外企如微软谷歌,成为了我的最佳目标和选择。

从各个博主的经历来看,读书永远是进步的阶梯,我将在未来的几年里专心沉淀自己的知识,阅读书籍,希望即使工作之后,也能有足够的时间让我阅读书籍,提升自己,或者是动手做一些有趣的小项目,而不是忙于加班与机械化劳动。除了计算机方面的技术,根据身处微软的轮子哥经历,英语也是必不可少的能力,因此还要多熟悉英语口语、阅读、写作。总之,学习永远不能停。

我对实习的理解

原本我觉得实习不仅丰富知识,还能丰富简历,在找工作时非常重要,但看完博客之后,我才突然觉得这样的想法并不是绝对正确的。我觉得实习应该是按照个人意愿来进行的,不应该被明码标注成衡量简历的标准,会造成人心焦虑和内卷,大家都抢着找实习丰富自己的简历,也许不如一些博主那样,在该读书的时间认真敲完几本书,做到肚子里有货,再去工作。当然实习的时候也是学习的过程,有的人实习期间提升快于读书,看每个人个人情况吧。

最后

看完这十几篇博客,我更加坚信了努力才会有收获的信念。诚如博客L中所说

兴趣能让你开始让你执着,但只有喜爱才会投入热情,只有投入热情才可能会出成绩。

我不知道像我这样的自我驱动学习能坚持多久,是否会在未来对计算机产生厌倦,但现在仍然还“喜欢”计算机的我能做的只有继续努力吧。

参考博客

辜新星:时刻调整方向 找到人生的蓝海

刘帅:在失望中寻找希望

徐宥:掉进读书的兔子洞

一直在路上——记我从初中到本科近十年的学习成长历程

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

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

对程序员职业的一些建议

进入2012 -- 回顾我走过的编程之路

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

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

不要轻易在简历上写我热爱编程,我热爱学习

posted @ 2020-02-29 13:14  eitbar  阅读(380)  评论(4编辑  收藏  举报