软工实践个人总结
软工实践个人总结
一、基本情况
1.1 请回望第一次作业,你对于软件工程课程的想象
最初的目标和期待:
“期待软件工程这门课能让我的编程能力发生蜕变,再面对编程时不再露怯。”
现在对软件工程课程的理解:
“这门课的主要目标不是提高编程能力,而是培养工程化的思想、提高工程实践的经验和能力。”
坦白地说,最初我以为的软件工程:像C语言程序设计那样,要打很多很多代码,要学习很多算法,还会有一群小伙伴聚在一起,欢声笑语中完成团队项目。这听起来很可笑,实际上,还是很可笑。我把学习C/C++的印象强行施加在软工这门课上,以一种极度乐观的心态去面对,忽视了自己弱到不忍直视的编程能力,轻视了软工作业的难度,思想还停留在理论至上的阶段。很快,现实的重拳狠狠地打在我脸上,在我个人编程作业的博客中,字里行间透露出无知和无耐。
回望过去的四个月,软工实践确实提高了我的编程能力,达到了自己的期待,也让我对编程有了全新的认识,还让我少了许多头发、掉了不少肉。从最初的以为编程就是要靠自己完整地写出整个代码,到学会上GitHub寻找优秀开源代码;从对GitHub和博客园一无所知,到学会使用Git上传自己的代码,学会装饰自己的博客、写博客;从Dev-c++,到vscode、pycharm;还有提高了我制作PPT的水平……
不过,最大的遗憾是,由于各种原因使得我没能很好地参与到团队项目中去,缺少了提高工程实践经验的机会、以及这一部分的“美好的回忆”,导致我现在对软件工程仍然没有比较深刻的体会。当然,我也十分感激小组中的各位大佬们的努力,和他们对我的包容,没有他们,或许团队项目就直接gg了吧hhh。
1.2 总结这门课程的实践总结和给你带来的提升
-
在软工实践课程当中我编写了 2084 行代码。
-
软工实践的各次作业分别花费的时间:
# 作业 花费时间(分钟) 2 个人编程作业 2860 3 结对编程作业 4230 4 团队介绍与选题报告 180 5 团队需求分析报告 420 6 团队项目之现场编程 600 7 - 13 Alpha冲刺(含总结) 1260 14 - 19 Beta冲刺(含总结) 864 20 - 22 每周小结 180 -
讲述令你印象最深刻的一次作业?为什么这次作业令你印象深刻?
印象最深刻的作业一定是结对编程作业。时至今日,我仍能回想起,在遭受个人编程作业的痛打之后,我的迷茫以及不甘心。那时便下定决心,就算不抱大腿,我也能完成好结对编程的作业。此后一个月将绝大部分时间投入在图片华容道——AI大比拼中,一路跌跌撞撞,可惜从一开始就走了歪路,把简单问题复杂化(用opencv的图像识别来完成对输入图片的识别与匹配),所幸受到了飞扬老哥的点拨,没有在opencv这棵树上吊死,转而对整个图片进行分割和匹配。
在使用IDA*算法求解8数码问题时,在网上看到一个非常好的代码,可惜是用C++写的,而我整个程序使用的是Python语言,因为懒得学习如何用Python调用C++程序,所以我选择直接将其翻译成Python代码。由于我对Python许多问题(深拷贝浅拷贝、for函数、字典的使用)的不了解,导致翻译出来的Python程序到处是bug,改bug改到心碎,有时半天就写好了代码,改bug却改了两天Orz。
我仍然记得中秋国庆放假期间,由于学校缩短假期时间
减少了打代码的时间,整整4天!而产生深深的怨念。那四天,每天早晨骑着车,哼着《我的祖国》,呆在东三教室打代码,整间教室空空荡荡,仿佛是自己的天地,徐徐凉风吹过,尽管每天都在为不同的问题和bug而秃头,但心情却十分舒畅。晚上,被大叔催出教室,在温柔的月光下回到宿舍,继续改bug到深夜。结对编程作业中,我主要负责AI大比拼模块,宋静慧负责小游戏的制作。由于前期缺乏沟通,导致在两人工作对接时产生了一个大问题——我们都不会后端。开始的想法是,我们要做一个图片华容道的微信小程序,而由于能力和时间问题,我们不得不放弃最初的想法,宋静慧开始从零学习pygame。回想起来,在对接出现问题后,我俨然成了一个压力怪,经常给静慧姐姐压力o(╯□╰)o,感谢静慧姐姐的包容和爆肝 (=´ω`=)。
最后因为算法的原因,我们在AI大比拼中的名次不高,大概是因为我最初的只追求能够解决8数码问题,并没有更高的追求所致吧。总体而言,我们也算是满足了。
-
在软件工程课程上花费的时间(软件工程实践作业从第2周开始,到第17周结束,共16周)
累计时间(小时) | 实际周均时间(小时) | 预计周均时间(小时) |
---|---|---|
177.6 | 11.1 | 14.0 |
-
介绍学习到的新技术或生产力工具以及他们给你带来了哪方面的作用?
这学期之前,我还只停留在用dev-c++打C/C++代码的水平。在编程语言方面,只会一些C/C++和一丢丢的Python。
在这门课中,我学会了使用vscode(功能很强的编辑器)、pycharm(开发python项目的IDE),也初步学会了使用pycharm自带的性能测试工具Profile对代码进行分析、使用coverage工具进行代码覆盖率测试。当然,这门课也让我更加熟悉了Python语言。
-
其他方面的提升。
在团队项目中,每次的答辩PPT都由我和柳越负责,在多次制作PPT的过程中,我学会了上网挑选更好看的PPT模板。文档、PPT的制作能力提升了。学会了使用许多快捷键。
这么水的收获也要写上?当然,尽管我没有很好地参与到团队项目中,但是也对工程化的概念有了或多或少的了解,以后会更加关注这一方面。
二、总结与收获
2.1 个人编程作业
- 学会使用开源代码来解决问题,不重复造轮子;
- 学会寻找好的开源代码,如果有多个开源代码都能解决自己的问题,不妨多比较比较不同代码的性能,选一个性能最好的来用。
同样是百度,同样是在网上找开源代码,舍友找的代码就比较好,所有测试点都过了,而我随便找的就比较拉胯,而自己又不会修改优化,最终效果较差,许多测试点没过囧囧囧囧囧囧囧囧囧。
2.2 结对编程作业
# “Shoot for the moon,even if you miss,you will still land on the star.”
# 追寻月之所向,纵使交错而过,也将置身于繁星之间。
# 取法乎上,得乎其中;取法乎中,得乎其下;取法乎下,无所得矣。——《易经》
- 最初定下的目标很重要,既不要太高,也不能太低,否则会难以实现或实现出来的较为简单,要根据自己的水平,尽量把目标定的稍微高一点,然后全力以赴。
刚开始因为自己也不清楚自己能做成什么样,也没有仔细思考自己真正想要什么样的结果,上手就开始敲代码,最后虽然把代码敲出来了,自己感觉也挺不错的,可最终结果却不那么理想,许多人用“双向广搜+暴力打表”方法(大概?),最短路径和求解时间都很低,甩了我一大截。尽管飞扬老哥也教过我这个方法,奈何自己当时抱着“能求解出来就不错了”的心态,仍旧用原来的IDA*方法。
2.3 团队项目
- 成员之间的沟通非常重要,小组讨论很有必要,这直接关系到每个人对自己所负责的模块是否会有一个清楚的认知,也影响到项目不同模块之间代码的对接。一个不常沟通交流的团队很难有效、高效地完成任务。
在Alpha冲刺之初,我们小组对于“开会”是比较消极的,认为有点麻烦。然而,随着项目的推进,到各模块之间需要整合对接时,却发现不少的问题,组员之间沟通的缺乏影响了项目推进的速度。
三、这学期下来,你最感谢的人是谁?有什么话想要对TA说呢?
最感谢的人,是自己。感谢自己没有放弃,感谢深夜中还在打代码、改bug的自己。感谢在这学期所有牺牲的肉肉和头发,在这里跟你们说声对不起Orz。新年之际,我想对自己说:“别再动不动就熬夜了!2021,要早睡早起!祝你身体健康,万事胜意!”
当然,除了自己之外,感谢叶飞扬大佬一个学期以来对我的帮助,有时候感觉飞扬老哥不像是同学,更像是学长(虽然本来就应该是2333),这学期有太多问题去请教,也让我获益匪浅,真心感谢飞扬老哥耐心的解答。٩( 'ω' )و 蟹蟹!
感谢静慧姐姐在结对编程中的包容,在小游戏的设计中,我提出了不少问题和建议,有时候甚至感觉自己像个甲方??静慧姐姐也都听进去了。我们两个在学期之初都是只会一些C/C++的两只菜鸡,能完整地完成结对编程作业也属实比较有成就感hhhhh
感谢灰机灰啊灰团队的所有其他同(da)学(lao),感恩~~(还有组长霖涛请的奶茶~~)。
感谢柯老板对我们团队项目的建议和指导,还有柯老板精致的作业选题,感谢测试组同学的付出。
四、首尾呼应(第一次博客作业)
现在想想,确实是这么回事。
另外,第一次博客作业中,我的自我介绍里↓
巧的是,2020我的年度最爱歌手也是1n,ヽ( ̄▽ ̄)ノ