个人作业——软件工程实践总结作业
一、请回望暑假时的第一次作业,你对于软件工程课程的想象
1)对比开篇博客你对课程目标和期待,“希望通过实践锻炼,增强计算机专业的能力和就业竞争力”,对比目前的所学所练所得,在哪些方面达到了你的期待和目标,哪些方面还存在哪些不足,为什么?
- 选这门课的初衷是为了锻炼自己的能力,因为实践选修学分已经修满了,开学初看着舍友一个一个地退选,我也曾经有过“退了吧,别给自己找不自在”之类的想法。但是一个著名的哲学家说过:“一个人如果没有了梦想,那么他和咸鱼还有什么区别?”为了所谓的梦想,我决定学好这门选修课。
- 对比目前的所学所练所得,我真正体会了一个团队如何开发软件的过程,从就业方面来说,基本达到了我当初的期待,因为整个软工实践的过程就是在模拟职场的过程。另外,还有一个很大的收获就是学习了目前非常火热的安卓开发,这也是当初选这门课的目的,总的来说算是有个交代吧。
- 至于哪些方面还存在不足,可能是我涉猎的方向不够广吧,基本上只停留在安卓开发上,对后端等方面没有尝试去接触,这也算是一个不大不小的遗憾吧。伟大的科学家爱因斯坦曾说过:“用一个大圆圈代表我所学的知识,但是圆圈之外有那么多空白,对我来说意味着无知,而且圆圈越大,它的圆周就越大,它与外界空白的接触面也就越大。由此可见,我感到不会的地方还很多!”不管怎样,要学的东西还有很多。
2)总结这门课程的实践总结和给你带来的提升,包括以下内容:
-
1、统计一下,你在这门软件工程实践中,完成了多少行的代码
我不知道“完成”的定义是什么,如果是自己的完成量可能有1000多行,另外还有很多对团队项目关系不大的练习代码量。如果是团队项目GitHub上合并的代码量,可能就比较少了。毕竟起步较晚,挺多时间花在学习和熟悉安卓开发过程当中。 -
2、软工实践的各次作业分别花了多少时间?(做一个列表)
作业 耗时(小时) 软件工程实践2017第一次作业(回顾&展望) 2.5 软件工程实践2017第二次作业(数独) 13 结对项目——第一次作业 8 结对项目——第二次作业 11 随堂小测——同学录 7 团队项目 65 个人技术博客 4 个人作业——软件产品案例分析 4 个人作业——软件工程实践总结作业 2.5 总计 117
3、哪一次作业让你印象最深刻?为什么?
- 印象最深的是结对的第二次作业。当时是国庆节放假,当所有人都沉浸在新中国成立......68周年的喜悦中,国庆七天乐,大多数人选择去旅游,到处玩。而我们,有作业!前期JSON生成数据不会做,一直卡在那边解决不了,导致假期荒废了几天。好在和我结对的叶同学及时回来解决了这个问题,我队友不愧是大神,我不懂的问题在他那边基本都能得到解决。特别是他的生成数据算法给了我很大启发,很值得学习。尽管我们做的时间相比于其他结对小组不长,但我们通过这几天的不断摸索,交换代码意见,分工比较明确,所以过程也很顺利。也算是过了一个很有意义的国庆小长假,当时可能会抱怨,现在想想,这些都值得了。
4、累计花了多少个小时在软工实践上?平均每周花多少个小时?
- 因为中途面临几次考试,英语六级考试等,没时间分给软工实践,所以上述作业时间和平时学习、编码时间保守估计150小时。平均每周10个小时左右
5、学习和使用的新软件;
- Android Studio、Visual Studio2017、StarUML
6、学习和使用的新工具;
- 墨刀、Axure、格式工厂
7、学习和掌握的新语言、新平台;
- Java、GitHub、HTML
8、学习和掌握的新方法;
- 安卓网络请求、安卓界面布局技巧、面向对象的程序设计方法
9、其他方面的提升。
- 首先是编码能力的显著提升,另外是遇到问题第一时间可以自己尝试解决,而不是马上请教别人。我认为分析问题、解决问题的能力非常重要。最后是团队协作能力的提升。
二、写下属于自己的人月神话——个人或结对或团队项目实践中的经验总结+实例/例证结合的分析
- 软工实践开始之前,因为我之前没有接触过安卓,起步比较晚,导致我尽管尽力追赶但还是很难跟上团队的步伐。但是我的收获却不比别人少,在这段时间内我学到很多东西,基本上是从零开始,不仅在理论上让我对IT领域有了全新的认识,在实践能力上也得到了很大的提高。 除此之外,大家的交流沟通显得尤为重要,如何将自己的想法清楚明白的告诉队友,如何提出自己想法的同时又不伤害其他的队友的面子,这些其实很重要。在实践的过程中,我深深的体会到了自己在专业知识方面的欠缺和不足,也意识到了自己作为计算机专业的学生,要想在以后的职业中崭露头角,除了要有过硬的理论知识,还必须具备过硬的专业技能。“纸上得来终觉浅,绝知此事要躬行!”在这短短的时间里,我领悟到“学无止境”这句话的涵义。我懂得了实际生活中,专业知识是怎样应用与实践的,在这些过程中,我不仅知道了职业生涯所需具备的专业知识,而且让我深深体会到一个团队中的各个成员合作的重要性,要善于团队合作,善于利用别人的智慧,这才是大智慧。靠单一的力量是很难完成一个大项目的,在进行团队合作的时候,还要耐心听取每一个成员的意见,是我们的组合达到更加完美。另外,不足之处是我可能没有真正地“乐在其中”,有时候会把软工实践当成一个作业负担。如果能把软工实践当成生活不可或缺的一部分,真正地“乐在其中”,大概就是这门课最大的目标了。
这是实践过程中的一个Git代码移交日志:
三、对下一届实践的建议,或者对于开学初的你,对于大一的你,对于开学初的我,你有什么想建议和告知的呢?对于后来人的期许。 特别地,特别地,下一届要不要中途换队员?
- 建议就是,如果你是为了梦想而来,请选择张栋老师的课;如果你是一条咸鱼,就请另辟蹊径吧~另外,下一届尽量要换队员吧,尝试一下总是没有坏处的。
四、分析一下自己所处的团队。软件工程实践是大学里少有的认真的团队协作经验。《构建之法》上说团队的发展有几个阶段,你的团队都经历过么,最后到达了“创造”阶段了么?(参考《构建执法》第17章 人、绩效和职业道德)
- 《构建之法》上说团队发展有:萌芽阶段、磨合阶段、规范阶段和创造阶段。从萌芽到磨合,这是必不可少的阶段。再到后来的规范阶段,我们小组也积极响应老师的号召,进行代码规范等规范事宜。至于创造阶段有没有达到,我无法给出一个准确的回答,目前的成果我觉得还有很大的潜力。
五、怎样证明你学会了软件工程?
1)研发出符合用户需求的软件
必须公开发布,有实际的用户,一定的用户量和持续使用量 (3 天后能保持10 - 100个用户);而不是: 做没有用户使用的软件
2)通过一系列工具,流程,团队合作,能够在预计的时间内发布 “足够好” 的软件
有项目规划/需求/设计/实现/发布/维护,有定时的进度发布 ; 而不是: 通过临时熬夜,胡乱拼凑,大牛一人代劳,延迟交付等方式糊弄
3)并且通过数据展现软件是可以维护和继续发展的。
而不是 找不到源代码,代码无文档,代码不能编译,没有task/bug 等项目的发展资料
- 针对第二点,下图说明我们的软件经历了一段漫长的过程,有项目规划/需求/设计/实现/发布/维护,有定时的进度发布
- 从9月开学到2017年的尾声,软工实践唤起太多的回忆了,就说到这里吧。2018年开启新的篇章,预祝大家新年快乐~~~