2021S软件工程——个人阅读作业1
2021S软件工程——个人阅读作业1
项目 | 内容 |
---|---|
这个作业属于哪个课程 | 2021春季软件工程(罗杰 任建) |
这个作业的要求在哪里 | 2021年软工-热身阅读作业 |
我在这个课程的目标是 | 了解并熟悉软件开发的具体流程,与团队共同开发一款实用的软件。在实践中增强自己的工程能力。 |
这个作业在哪个具体方面帮助我实现目标 | 帮助我回顾与计算机的“缘分”与选择计算机的初心。通过看别人的经历,了解自己的差距在哪里。提醒我已经大三了,该考虑未来的道路了。 |
1. 结缘计算机
1.1 你为什么选择计算机专业?你认为你的条件如何?和这些博主比呢?
-
我为什么选择计算机?
在小学时,学校有学海龟画图,当时还参加了一个比赛。我就觉得用代码去做一些事情很酷。后来,我妈给我报上了一个学习编程的班。最开始学习的是Pascal语言,学习了一些基础的语法和简单的算法。印象深刻的是要做一个验证哥德巴赫猜想的程序(好像要求一定程度上考虑复杂度),在参考了百度以后做出来了,被老师表扬了,当时就觉得自信心满满。再后来又学习了VB,做了简单的可视化的东西出来,愈加喜欢编程。
初中高中也有简单的编程课。因为有一定基础,在课上就觉得比较轻松。在高一暑假去英国的夏令营,调用几个写好的库来实现一个PVP的坦克大战中,我侥幸拿到了最高分,赢得了一个U盘。高中时又迷上了漫威,被钢铁侠的贾维斯吸引了。再加上各种《黑客帝国》之类的电影,对程序员这个职业充满了各种幻想。总之,曾经对编程的接触使我或获得了表扬,或拿到了奖品,这让我有点自信满满的感觉,于是高考结束报志愿时毅然决然地决定要选择计算机。
-
我的条件?
我自己觉得条件一般,虽然有一定的兴趣,比一些同学接触也早,但是还是比不上高中就打竞赛的大佬们。包括自己学习一些复杂算法时,还是会感觉比较吃力。
-
和这些博主相比呢?
和这些博主相比,我出生得比较晚。我出生在一个信息获取更加便捷的年代,客观条件上来说,我应该是更好的。不过从真正接触计算机前的经历来说(我将真正接触计算机定义为开始学习计算机的基础理论知识),我好像相差得比较大。就与博主I相比,他的经历真是太丰富了。他在很早就开始系统地去开发一些东西。而我虽然对编程了解得较早,但对整个计算机领域并不熟悉。就算是进入了计算机系,我也只是随波逐流,接近于最低限度地完成了课内要求。
1.2 计算机是你喜欢的领域吗?你热爱这一专业吗?
我认为计算机是我喜欢的领域。我喜欢用代码去做出一些事情。虽然总是会弄出一些bug,但是不断地写新代码、Debug,反而让我很有成就感。还记得学习计组时,上完前几节课,就兴冲冲地动手搭了一个简单的CPU,运行了一条指令,当时还发了一个说说庆祝。我认为学习计算机的知识让我很快乐,用这些知识去做一些东西,让我很快乐。
但是我觉得可能谈不上热爱。我个人认为原因是我自己有些浮躁,在面对一些繁琐的工作时很难静下心去完成。比如OO课程时自己写评测机,建一个简单、基础的评测机难度可能并不大,但我选择了直接向同学借用,我觉得这是一个不好的行为。我喜欢计算机,但是有时候显得还不够热爱,有很多事情可能会让我从计算机的学习、工作中抽离开。我希望自己在软件工程课中,能够全身心地投入。
2. 在计算机系里学习
2.1 你对你的大学生活有什么想要吐槽的地方吗?你理想的大学教育应该是什么样子的?跟学校给你的有什么区别?比较你在中国大学的经历,你的老师和学校能做到和国外那样吗?如果不能,请分析一下为什么。
-
吐槽
作为理工科院校,不得不说人文关怀确实有些欠缺。还有在高工的大一大二,有一些课程安排不太合理,有一些像高中的模式了。
-
现实与理想的异同
我个人认为大学教育很重要的一点是开拓自己的视野,感兴趣或不感兴趣都好,应该多接触一些领域,甚至多出去走走,认识一下自己要待起码四年的这座城市。这件事我觉得大一大二时应该给我们充足时间去做,但是学校有一些不那么必要的课程以及繁琐的事项,让我们无暇顾及这件事。我觉得这应该会是我大学比较遗憾的事。
虽然与理想有所差距,但我完全不认同博客H中“中国目前的大学教育就一个字:渣。”的这个说法。我觉得起码在北航计算机系学习,我收获很大。CO、OO、OS都有一定的代码量,首先让我对语言层面更加了解。这些课程也让我对计算机的底层原理了解更加深入,我自认为从计算机的使用者成为了一个有一定基础的开发者。更重要的是,一些计算机学习的方法是潜移默化的。比如OO中迭代开发、增量开发,OS中理论与实践结合。
-
国内与国外教育
关于国外教育,我只能自己去英国夏令营两周的经历、从知乎上看到的文章、与国外同学的交流、还有博客N和博客O的内容中做一些猜想。
首先是一个老生常谈的问题:国外的同学上课互动更多?我觉得这点是确实存在的。同时我也认为国内很难做到这一点。我认为这与文化的差异有关,首先是国人内敛的性格以及“尊师重教”的思想。我们很难在课堂上像朋友一样与老师进行交流,与老师交流时,我个人是多多少少带着一些紧张的。并且,国外的人口基数也比较小,动不动就是小班教学。老师对每个学生的情况很了解,更好地能够做到因材施教,激发学生的积极性。
再一点是我认为国外的教育更加重视与实践相结合。就拿线性代数来说,国外的课程有matlab的lab,其中甚至涉及到图论、PageRank的内容,同学问我会不会做这个的时候我都惊呆了。反观我们的线性代数,老师上课讲一些及其理论的内容,甚至考试也不涉及,大家就像听了个乐。不是说理论讲深入不好,而是咱们讲完不用呀。讲完等到大三准备考研了,再把它捡起来,那和没学有什么区别呢?博客O中OO课程做一个简单的股票交易系统,我感觉跟我们的OO课程有几分相似之处:给一个实际应用场景来进行任务。这让我觉得,理论跟实践有所脱离的这一缺陷,国内的教育是可以改进的,希望我们的课改能够重视这个问题。
2.2 迄今为止,你写了多少代码,描述你做的最复杂的软件项目/作业。
我并没有具体地统计过我目前的代码量(毕竟大一时C语言的代码早丢了...)。粗略地估计,计组时应该有3000行左右,OO每次作业能有约3000行,OS的代码量不好计算,编译3000行左右,再加上平时各种课程设计,还有平时自己写的小脚本。应当有了上万行的代码了,但是其中OO,编译课程作业代码中,有许多都是Ctrl+c
、Ctrl+v
,存在许多无效代码。
最复杂的作业应该还是编译课设,语法分析中需要自顶向下地考虑每一种情况,后期代码生成、错误处理时又在其中插入一些代码,当时真是看得头大。并且,虽然我每次都遵循了先设计再写代码的原则,但是最后的代码成品与设计相差甚远。
2.3 学线性代数和概率论的时候,你是否有过这样的疑问“我们为什么要学这么多数学,这和我们的计算机有关系吗”,你现在是否还有这样的疑问?对这个问题,你有自己的解答了吗?那么其他学科呢?
-
数学是计算机科学与技术的基础
随着学习的深入,我早就没有了这个疑问。当我在机器学习课上面对一整个PPT的公式茫然不知所措时,我不由得感叹:“当时要是数分线代好好学就好了!”如果认为计算机就是敲代码,那就大错特错了。里面的很多原理离不开数学。更别说近些年大热的AI领域,我认为它与数学的联系甚至更加紧密,计算机只是一个实现的工具而已!
-
大一时生物和化学还是课程设计不合理
我认为这确实是高工的不合理之处。但是我记得大一时候发展导师说:“学这些不是让你会,而是将来涉及到的时候能知道该去哪里找。”我觉得很有道理,多接触,总是有好处的。
3. 职业规划
3.1 对于你未来在IT行业的发展,你有什么样的梦想或者未来想从事什么样的工作?你准备怎样来规划你技术道路,职业道路和社会道路?
说实话我对未来职业的规划还一头雾水。我认为自己不太热衷于学术研究,反而更喜欢做一些工程和项目,写出来的代码有一个成品,并且得到广泛的应用与好评,这可能是我最想看到的愿景。或许我会选择在互联网企业当一个搬砖的小码农,也可能哪天灵光一闪,开发出一个爆款软件(做梦不扣分吧...)
对于技术道路与职业道路,目前我还处于探索阶段,我希望多多尝试不同的技术栈,还有不同的职业。我觉得博客K给出的建议很中肯:在大学的时候尽量多地进入公司参与实际工作,一方面积累工作经验,另一方面,提前认识工作和自己,以便毕业时更准确地把握自己的方向。我希望通过实际工作,了解不同的工作,每天到底是做些什么,到底哪个才是我想要的。
社会道路而言,虽然我是北航的学生,我却觉得自己缺少了一些远大的理想目标。目前来说,我希望未来能找到一份自己起码不讨厌的工作,养家糊口。业余时也能通过自己的技术做一些自己喜欢的事情。当然,如果某一天我发现自己有了更大的能力,我也会毫不犹豫地为国家、为社会贡献自己的力量。
3.2 你们马上就要面临实习了,你打算在企业内实习还是在实验室实习?
我更希望在企业内实习,正如上文所说,我个人会更喜欢工程类的项目,得到一个实际的成果与应用。并且,在企业实习能让我对自己未来的职业选择有更好的规划。