个人作业——软件工程实践总结作业
一、请回望暑假时的第一次作业,你对于软件工程课程的想象
1)对比开篇博客你对课程目标和期待,“希望通过实践锻炼,增强计算机专业的能力和就业竞争力”,对比目前的所学所练所得,在哪些方面达到了你的期待和目标,哪些方面还存在哪些不足,为什么?
对课程的期待主要是提高对编程的兴趣,以及对新语言的学习,比如Java,以及对软件开发过程的了解。
软工结课了,总体来说收获不少,特别是在最后的团队项目完结的时候,用着用自己一行一行代码敲出的APP,倍感亲切, 可以说体会到了变成的乐趣。而且通过这个项目,原先对Java和android一点都不了解的我,也开始渐渐入门,最重要的是,软工实践也让我体会到了软件开发的流程,以及团队协作,github的使用,我感觉这是最重要的,可以说,这门课,我上的无悔。
不足的话,只要还是发现自己的编程功底还是不够,很多东西都是用的开源以及网上找的代码自己改的,不太懂的其中的来龙去脉,做出来有点不踏实。还有,这次软工实践也让我体会到了团队协作的复杂性,沟通的好,事半功倍;沟通不好,事倍功半。
2)总结这门课程的实践总结和给你带来的提升,包括以下内容:
-
1、统计一下,你在这门软件工程实践中,完成了多少行的代码;
- 第一次sudoku作业,大概200行(C++)
- 第二次结对的部门匹配作业,大概300行(C++)
- 第三次团队的项目,主要负责android前端,大概2000行(Java)
-
2、软工实践的各次作业分别花了多少时间?(做一个列表)
作业主题 时间 第一次作业 4小时 sudoku 9小时 结对作业 - 原型设计 8小时 结对作业 - 部门匹配 20小时 alpha阶段前准备 30小时 随堂小测同学录 6小时 Alpha冲刺阶段 两周每天平均3小时左右=40小时 个人技术博客 8小时 华为软件云测评 8小时 β阶段冲刺 一周每天平均4小时=30小时 课程总结 6小时 共计 170小时 -
3、哪一次作业让你印象最深刻?为什么?
印象最深刻,那肯定是团队项目啊。。。特别是deadline验收前一天晚上(就是第二天向全班,包括没选软工实践的同学展示前一晚),通宵改bug到凌晨4点半,解锁成就——看到凌晨四点的福大。不过改完bug盖上电脑那一秒,那次呼吸,让我体会到了一种如释重负的快感。不过想想如果以后当程序员,要经常这样的话。身体还是吃不消的。毕竟第二天9点起来身体还是飘的2333 -
4、累计花了多少个小时在软工实践上?平均每周花多少个小时?
具体的肯定是算不出来了,大概估一下,从团队作业那时候开始,大概每周花15个小时在软工上,总体的时间大概在120-150小时之间吧 -
5、学习和使用的新软件;
- 墨刀
- android studio
- VS Code
-
6、学习和使用的新工具;
- github
- 阿里图标库
-
7、学习和掌握的新语言、新平台;
- 语言
- Java
- 新平台
- 博客园
- github
- 语言
-
8、学习和掌握的新方法;
- 初步懂得了一个android APP是如何开发出来的
- 要善于使用开源的插件或者代码,这样可以大大提升效率
- github代码托管工具以及如何应用于团队协作
-
9、其他方面的提升
- 用着自己亲手一行行代码敲出来的APP,倍感亲切,体会到了编程的乐趣
- 解锁了看到凌晨4点福大的成就
- 栋哥牛逼!
二、写下属于自己的人月神话——个人或结对或团队项目实践中的经验总结+实例/例证结合的分析
之前太早的个人作业基本已经忘得差不多了。。所以主要讲讲结对和团队项目的总结吧。首先是结对项目,让我知道了json这种六的一批的数据传输格式,因为刚开始做的时候不知道json是个格式,所以为了手动输出那种格式,用C++模拟也是费了一番心思,后来看微信群大佬一番讨论才顿悟这是种格式,可以说长了见识吧。
其次团队项目,真的让我体会到了有时候人多并不是好事。。很多次因为和队友沟通不当导致代码对接是有出错,不过好在后来都妥善解决了。。其实个人认为团队项目带给我对大的收益并不在于对android的认知,而在于熟练掌握了github这种非常有用的源码托管平台以及我自己让自己都吃惊的自我学习能力,毕竟开始团队项目之前,我连java都没学过,经过几周的边百度学边敲边改代码,照样敲出来一个像样的app,蓦然回首,自己都有点佩服自己。
还有,刚开始因为对android不了解,分工的时候就抢了个UI设计的角色,以为只是拖拖控件摆摆布局的事,后来真正着手工作了才一脸懵逼,原来还有前端UI还有这么多学问。比如各种布局之前的不同以及他们组合起来的合理利用,还有各种监听函数的使用,反正就是时刻面向百度编程,不要不懂装懂想当然。还有,做出来的东西一定要符合预期,不能因为不好实现而把这个功能砍掉。。比如这次项目中一个页面的scrollview滑动和gesture手势监听起了冲突,导致滑动的时候不流畅,十分影响用户体验,最后不断百度,花了两天才解决了这个问题(其实最后还是投机取巧,用了另一种方法),不过总算没有偏离原型设计。
三、对下一届实践的建议,或者对于开学初的你,对于大一的你,对于开学初的我,你有什么想建议和告知的呢?对于后来人的期许。 特别地,特别地,下一届要不要中途换队员?
建议嘛,主要由几点:
- 软工实践设为必修,虽然过程艰辛,但是受益匪浅
- 不要害怕自己不能很好的完成软工实践,过程最重要,体验最重要
- 同时这也是个很好提升自己编程能力,培养自己编程兴趣的机会
- 下一届还是不要换队员了吧,因为中途舍弃自己曾经努力付出的项目,真的很痛苦,虽然我没被换,但是我还是能体会到这种痛苦。虽然老师是为了让我们体验下我们以后职场可能发生的意外,可是对于我们来讲,这可能是我们这辈子第一个亲手做的APP,让我们放弃真的太痛苦了。
四、分析一下自己所处的团队。软件工程实践是大学里少有的认真的团队协作经验。《构建之法》上说团队的发展有几个阶段,你的团队都经历过么,最后到达了“创造”阶段了么?(参考《构建执法》第17章 人、绩效和职业道德)
- 萌芽阶段
初次进入这个团队,我和大部分队友都不曾相识,因为除了国华一个和我同班,其他同学都是3班的,不过大佬们不见外,对我很包容,感谢大佬。还记得第一次开会是在三区门口的贡茶,作为队长的李鸣很慷慨的请了我们8个人一人一大杯柠檬水,议题主要是讨论我们团队项目主要要做什么。从原先没啥人讲话,到后来渐渐进入正题,再到头脑风暴,期间还有“教主”浩哥时不时发功,直到最后确定了我们认为很酷的主题“做一款纯粹的阅读APP”简阅,大家都很愉快,我也融入了这个充满基情团队。 - 磨合阶段
之后的几次开会,除了日常闲聊促进感情,还了解了大家的能力水平和擅长的方面,为后面的前后端分工做了铺垫(发现大佬们好牛逼,两个ACM大佬,两个实验班大佬,就我是小弟,抱紧大腿) - 规范阶段
开始alpha冲刺时,开始的时候并没有很好的拟定一些接口的规范,只是简单地分了工,比如你做底栏部分的功能,我做侧边栏的功能等,却没有好好的认清他们之间的关系,经常github合并的时候就各种出错,以至于后面不停的修改。后来的β冲刺就规范多了。 - 创造阶段
我主要负责前端的UI界面设计和一些功能的实现。值得一提的是,在做这个项目之前,我甚至连Java都没了解过,结果我花了两天时间大概熟悉了一下java,再花两天时间装了android studio并初步看了点android的视频就开始做项目了,期间磕磕碰碰在所难免,第一次感受到了百度和博客园的强大,让我学习了很多,也让我懂得了学习的方法,可以说对我将来受益匪浅。最后经历种种艰辛并获得了看到凌晨四点福大的成就后,看着自己努力多少个夜晚一行行代码敲出来,一个个bug改过来的app,倍感亲切。
五、怎样证明你学会了软件工程?
我们的APP“简阅”,主要是面向有碎片化时间且喜欢阅读一些小短文的用户,里面推送的文章都是后端大佬一片片甄选出来的,总体质量还是不错的。我也向我的舍友和同学推荐了一下,总体的评价也还是不错的。在软件开发进度方面我们是出了点问题,尤其是alpha阶段时,前一周都没什么进展,到了alpha阶段要验收前几天才开始意识到要加大力度发功了。。每天晚上都赶工到凌晨,,尤其是其中还掺杂着考试,有时候忙的首尾不能兼顾,很难受,不过还好。。都如期交付了。
但是我感觉我并没有真正学会软件工程。现在我学会的只是皮毛,比如如何用github进行团队协作,以及在在正式写代码之前拟定接口规范(比如我这个控件,会在哪里设接口函数,你要传给我什么值,你的值要存在哪里等),也让我懂得了软件开发也是一门很高深的学问,并不是几个程序员在那边自己敲自己的,最后拼起来就是一个大型软件了,期间要不停地进行商讨,不能脱离队友。但是我还是对大型软件的开发工程模型感到有点喘不过气来,毕竟我们做这个小项目就搞得有点不清不楚的。。