提问回顾与个人总结
项目 | 内容 |
---|---|
这个作业属于哪个课程 | 2021春季软件工程(罗杰 任健) |
这个作业的要求在哪里 | 提问回顾与个人总结 |
我在这个课程的目标是 | 能紧跟作业进度完成作业 |
这个作业在哪个具体方面帮助我实现目标 | 回顾课前思考,总结课程中的种种经历,梳理自己在本课程中的收获 |
个人提问博客 | 软工第二次阅读作业 |
尝试对在自己曾经提出的问题进行解答
为什么要在大学中只用一学期软件工程,时间够吗?
经过我的这学期软件工程课程的学习,我可以很明显的觉察到,尽管一学期的高强度的CI/CD学习、结对编程、团队编程,总体来说还是不足的。
但是这学期对于体验这个团队的软件开发流程,还是可以管中窥豹的。
而且软件开发对于我,也不是那么懵懂的事情了。至少我的目前总结来说,团队组织、文档编写、代码编程等等都是不可被取代的任务。而通过对团队优秀成员的学习,也可以了解到一个合格的软件工程师的标准是什么。
在这里,可以得出一个结论。如果指望一学期的软件工程课程就能觉得自己精通软件工程了,这是十分幼稚的。所谓的工程,往往不止技术,还有过往的经验总结。可以这么说,在经验总结上,只用一个学期是远远不够的,更需要自己在生产实践中不断学习摸索、不断归纳演绎。
纸上得来终觉浅,绝知此事要躬行。
对于这个比较大的问题,我目前只能得到这样比较浅显的结论。
怎么将单元测试集成到自动测试的框架中?
这个问题其实贯穿在整个团队开发的过程中,过程实际上就是我们渐渐熟悉CI/CD的过程。
不断提交、不断测试、然后再版本迭代,这是单元测试的初衷。
但是目前来说,我们对于单元测试,可能还是不是很熟练,这一方面使我们今后要着重学习的东西,即怎样让先进的工具提高我们的生产力。
PSP中衡量软件开发的工作量和质量的指标是否合适?
对于这个问题,我觉得当初提出这个问题的我有点抬杠,或者说有点偏激了。
优秀的、符合代码规范的、可以被签入的代码,是理所应当成为衡量软件开发的工作量和质量的标准。
比如我在团队作业中就遇到了这样的问题,说自己准备的差不多了,思路有了——但是代码量很少。这其实是一种自欺欺人的行为。最后再团队里掉链子的,往往就是我这样的眼高手低的家伙。
所以我现在,确实是认可衡量软件开发的工作量和质量的重要指标是代码这个论断。
但是延伸开来,对于一个团队来说,衡量软件开发的工作量和质量的重要指标依然是代码量吗?
经过一学期软件工程的学习,我想答案就发生改变了。
首先是市场认可。不管你用了怎么样的软件开发流程,也不管你用了什么样的文档写作手段,但是功利地来讲,市场是检验一个软件的工作量和质量的试金石。
其次,文档的作用对于一个庞大的项目来说,或许是更重要的组成部分。一开始,我就存在不爱看文档,最后写的代码完全不合规范的问题。这对于只有个位数的团队来说,或许还有矫正的空间,但是上升到整个团队来说,会是十分可怕的事情。文档就相当于乐团的指挥棒,相当于军队的传令兵。不重视文档,单打独斗,这样的结局是可怕的。
然后才是代码。代码目前来看,往往最重要的不是算法之类比较深层次的东西。对于一个团队来说,最为重要的或许是代码规范、代码可读性、代码注释。通过团队学习,更加深层次地体会到代码可读性的重要性。算法效率低,还有改进算法的空间;代码不规范,那么面对的只有一座又一座的屎山,不可维护的垃圾,最后只能祈祷它正常运行。
花费时间越多,代表工作量越高吗?
这是另一个杠精问题。对于这个问题可以简单的来说。
对于个人来说,不同的人之间,或许花费时间越多可能不意味着工作量越多。但是对于自己来说,肯定是花费时间越多意味着工作量越多。
但是对于团队,我对于这个回答就持有保留意见了。
不仅花费时间要考虑,产品的最终呈现也要考虑,乃至于文档、代码也需要综合考虑。对于软件工程来说,什么样的衡量工作量的指标,是需要反复斟酌、逐渐学习的,而不是一拍脑袋就觉得这个指标就应当是什么,那样是不科学的。
极限编程真的好吗?
对于这个问题,我的思考至今解决不了这个问题。
首先,必须承认极限编程的优点,那就是一种高强迫力来推动团队开发。
上层更改指标?极限编程期间不能变!
期间遇到问题想偷懒?极限编程期间每日汇报进度,不允许偷懒!
等等的强迫力驱使着团队开发。
而为了维持这种高强迫力,就不得不采取各种各样的手段来维持,比如每日会议。
嘛,最后结局往往是该摸鱼还是摸鱼,遇到不可抗力还是无法解决。比如β阶段,我最后一个周三场考试,这就是不可抗力,甭管你怎么开会我都不可能把主要精力放在团队作业上,这就是客观事实。
而且这种注重形式的强迫力真的有效吗,我认为还需要进一步的观察。
心得与理解
其实这一部分使我更加想着重写的地方。
其实我更想给诸位读者放上,我这学期第一次的博客作业的链接——第一次博客作业。
我只需要稍稍引用几段这篇博客里的内容,大家就可以很显然地理解到,我究竟是怀着多么丧的心情去上这门软件工程课程的。
- 你为什么选择计算机专业?你认为你的条件如何?和这些博主比呢?
好吧,这个问题难倒我了。我当初选择计算机的动机很简单,就是因为计算机专业的分数高,而且我的分够计算机了,所以我就选择了计算机专业。
上了大学才知道,我的条件很一般。一开始连“hello world”都敲不出来,而且没有毅力。真的是一点毅力也没有,也不想钻研,作业、考试稍微难一点就不想做了。这真的很不好。
导致我现在一方面代码量不足,另一方面一写代码就头大2333333这不是计算机专业的家伙该有的状态。
但是,我确实地痛定思痛,我其实还是想学好计算机的。我打算认认真真,拿出时间和精力好好把这学期的软工、计网、深度学习给学好。这是真话hhhhh。
和这些大V相比,我要走的路还远得很呢。我感觉我到现在对于计算机,还是没有入门。
- 你对你的大学生活有什么想要吐槽的地方吗?你理想的大学教育应该是什么样子的?跟学校给你的有什么区别?比较你在中国大学的经历,你的老师和学校能做到和国外那样吗?如果不能,请分析一下为什么。
吐槽的地方太多了2333333像我这种菜鸡,总感觉大一没跟上,然后就一直跟不上了hhhhh。 上面神仙打架,下面我在浑水摸鱼。这其实还是怨不得课程组,还是咱家需要补课的东西太多了。
- 迄今为止,你写了多少代码,描述你做的最复杂的软件项目/作业。
好吧,说来惭愧,搞不好是数据结构课上写的课后作业。。。因为咱家计组、oo都挂了,操作系统实验、编译实验基本上都是半抄半写的,不算数。搞不好写个撑死500来行就是我的程度了。。。
- 对于你未来在IT行业的发展,你有什么样的梦想或者未来想从事什么样的工作?你准备怎样来规划你技术道路,职业道路和社会道路?
灵魂问题来了。
我想干嘛。。。首先,咱的目标很简单,首先别饿死。别笑,我很严肃的。我曾经不止一次地想过,我大概是拿不到毕业证了。拿不到毕业证,等待我的就是饿死街头了;拿到了毕业证,或许我还可以凭借北航的名头招摇撞骗几天,然后不灵了,饿死街头。
因为我感觉因为我自己的自暴自弃,导致北航在我身上的培养方案的反馈等于0——我啥也没学会。啥也不会还能干啥呢。。。
后来想清楚了,总是这样自怨自艾是半点用处也没有的。必须从零开始踏踏实实地分析程序、写程序,踏踏实实地提高能力才行。
所以我是真心实意地想用心好好地学一学这学期的课程。因为我不能到最后啥也干不成呀hhhhh。咱把自己作的基础很差,可能要跟着神仙们学习,会遇到这样那样的问题,要花费大量的时间,这是必然的。
我总得学点什么出来,将来饿不死才行hhhhh。宽泛地说完,其实实际上。我感觉虽然我的写代码的水平确实不咋地,但是我的系统性思维、工程性思维应该还可以,其实我感觉我将来从事的工作,最好是那种有一定规划需求、需要一定创造力、一定的领导能力的工作,而不是和工人一样给汽车上轮子,只不过用计算机仿佛就高级一点。
未来的话,我想我可能会考研吧hhhhh。估计得从今年暑假开始准备了,因为这学期的课程还挺紧张的。考研之后,讲真,我挺希望我能从事建模方向的工作。
啊。。。都是泛泛而谈,先过了再说。。。
而且不仅内容丧,连排版都不行呀,能不能干了?(笑)。
我想那时候的我,确实是不太行。而且仿佛陷入了思维怪圈:
课程这么难,我肯定过不了——>没有下功夫的必要了,反正我不行——>你看挂了吧,我果然没说错,就是不行——>新的课程这么难,我肯定过不了.......
就这样莫名其妙地度过了大学好多年,以至于我很难发现大学给予我的除了挫败感,还剩下什么东西。
我想,那时的我最大的问题,就在于寻找各种理由来否定自己,从而扼杀掉自己去尝试的丝毫可能,进而加深了对于自己的否定。
但是,很显然对于任何问题的悔恨都是没有用的,蝴蝶振翅的时候,德克萨斯就已经发生了飓风,这时候的蝴蝶的悔恨是没有丝毫用处的,因为飓风本身,已经不是蝴蝶所能左右的事情了。
事实上,种一棵树最好的时机是十年前,其次是现在。
我不知道我那时候,开始尝试认真学习软件工程究竟是什么样的动机,可能源自于我对于自甘沉沦的不甘,也可能来自老师、家人、朋友的鼓励。但是我想,最初的原动力应该还是来自于第一次博客中的这样几句话:
因为我感觉因为我自己的自暴自弃,导致北航在我身上的培养方案的反馈等于0——我啥也没学会。啥也不会还能干啥呢。。。
我总得学点什么出来,将来饿不死才行hhhhh。
所以我是真心实意地想用心好好地学一学这学期的课程。因为我不能到最后啥也干不成呀hhhhh。咱把自己作的基础很差,可能要跟着神仙们学习,会遇到这样那样的问题,要花费大量的时间,这是必然的。
但是,我确实地痛定思痛,我其实还是想学好计算机的。我打算认认真真,拿出时间和精力好好把这学期的软工、计网、深度学习给学好。这是真话hhhhh。
我确实是想认认真真做出一点事情的。就这样,在这样什么基础也没有,心怀忐忑的情况下,乘上了驶向“软件工程”的“五月花号”。
过程倒是不那么平顺,首先就是我基础的markdown都不会写,因为我《面向对象程序设计》这门课完全放弃了,我觉得自己学不来,以至于连markdown都不会写,于是就有了你们看到的丑到爆炸的第一次博客作业。然后一边百度一边学习mardown,有了依然很丑但是勉强能看的 软工第二次阅读作业。
然后就是CI/CD的学习,完全不明白yml是怎么写的,最后实在搞不定了,照着别人的成果亦步亦趋的写,然后实在不明白的地方就去请教助教。
接着就是结对编程,一开始结对编程小伙伴对于我似乎还抱有多少幻想,让我们一起结对去写,第二天小伙伴就开始单干了......我只能负责找bug,覆盖测试的问题了(ps: 我觉得这不完全是我的问题,当小伙伴开始单干,要一边阅读小伙伴的代码一边补充,我觉得对于我还是挺难的,因为搞明白小伙伴代码逻辑这个步骤本应该在结对的时候就解决了)。但是我还是比较认真的debug,进行覆盖,尤其是软硬链接那一部分,有不少问题是因为我的单元测试找出来的。当然,总结博客都是我写的,还在评论区被夸奖了,叉腰。
最后就是团队作业了,我只负责很少的前端工作,而且完全不懂应该怎么写。别人都说vue很简单,但是我完全没有这么觉得啊,一头雾水,完全不知道这是怎么回事,和后端的东西差别有点大......都是别人写完了自己的部分,我再模仿着写,一边看一边学,然后全是bug。。。出了问题还要赶快找小组的成员讨论,最后组里的大佬还有给我善后。(感谢组员不杀之恩)
就这样跌跌撞撞地学完了一学期的软件工程课程,全程抱大腿才至于能走到今天写总结博客的地步,之前大多数课程都是半途而废,笑话一般,或许别人会想——“北航竟然还有这样的人?”(笑)。实在是力有未逮,也不算很尽力,但是确实这么过来了。对于这个课程来说,如果十分满分,我最多给自己5分。
但是如果我给我自己来评分的话,我会给自己1分。因为不是0分,而是1分。如果永远都不敢去尝试,那就永远都是0分;但是试过了,尽管是1分,却已然是质变。有了1分,才有了继续的可能,之后的2分、3分、4分等等或许就不会那么困难了。
虽然别人看来,可能能过《软件工程》课程不算多大的事情,但我的确多少make a difference了。
我想,如果现在的我再去写第一次博客作业可能会有所不同。
迄今为止,你写了多少代码,描述你做的最复杂的软件项目/作业
应该具体多少记不清了,应该不算少。最复杂的软件项目就是软件工程作业了。其中我负责的前端部分应该在一千行左右。
对于你未来在IT行业的发展,你有什么样的梦想或者未来想从事什么样的工作?你准备怎样来规划你技术道路,职业道路和社会道路?
我的梦想就是能继续在计算机专业上不断的学习,如果可以读研深造就继续读研,如果不可以那就在相应的工作中不断学习,不被行业的潮流淘汰,逐步提高自己的编程能力,在未来某一方向上小有所成,成为一个有一定自我要求的、合格的计算机工程师。
这些都不是泛泛而谈,而都是值得尝试的东西。希望我能学会不断地学习,不会妄自菲薄,也不会妄自尊大,在这个行业能站住脚跟,找到自己的立锥之地。
我想,可能对于他人来说,《软件工程》课程并非什么极为特殊的课程。对于我来说却大为不同,它说明了这么个道理:或许我在当程序员的这条道路上是可行的,前提是我要敢于尝试,并且要不断地用心学习。
种一棵树最好的时机是十年前,其次是现在。