软工1816 · 作业(十三)最终作业 - 软件工程实践总结(个人)
一、请回望暑假时的第一次作业,你对于软件工程课程的想象
1)对比开篇博客你对课程目标和期待,“希望通过实践锻炼,增强计算机专业的能力和就业竞争力”,对比目前的所学所练所得,在哪些方面达到了你的期待和目标,哪些方面还存在哪些不足,为什么?
期望我的队友们都很给力,我能有共同作战互相鼓励的队友,这样熬夜打代码都是欢乐的。也希望这门课结束我能真正学到东西。
回过头翻了一下开篇博客,这是我在第一次作业中写下的对“软工实践”这门课的期望,一学期过去了,很高兴这个期望成了真。在团队协作这个方面算是达到了目标吧。最大的收获应该是学会了GitHub的使用,亲身体验了用它做团队代码管理有多么的方便。另外我还学习到了多人团队编程是如何运行的、一场优秀的答辩该如何完成。美中不足的是我发现自己和团队成员的沟通较少,能力欠缺,以及自己的水平没有发挥出来吧,在项目开发经验上最大的提高也就只有一个GitHub的使用了。
2)总结这门课程的实践总结和给你带来的提升,包括以下内容:
1、统计一下,你在这门软件工程实践中,完成了多少行的代码;
粗略估计了一下,大概有两、三千行代码吧。
2、软工实践的各次作业分别花了多少时间?(做一个列表)
次数 | 时间(分钟) |
---|---|
第一次 | 30 |
第二次 | 590 |
第三次 | 350 |
第四次 | 30 |
第五次 | 1698 |
第六次 | 500 |
第七次 | 670 |
第八次 | 290 |
第九次 | 355 |
第十次 | 44 |
第十一次 | 50 |
第十二次 | 30 |
第十三次 | 52 |
Alpha冲刺 | 2217 |
Beta冲刺 | 1425 |
3、哪一次作业让你印象最深刻?为什么?
第二次吧,也就是个人作业第一次。那次作业做的真的是心路历程漫长呐。那时正值开学初,新生入学,身为班导的我每天忙得晚上十点十一点才能回宿舍,作业刚发布时也只能来得及匆匆浏览一遍,心底里觉得刚第二次作业而已不会太“魔鬼”,后来Deadline前开始着手做起时才发现和想象中的有点差距,然后就崩盘了,只能在截止时间前提交了个自己并不是很满意的作品。到现在还是很不敢面对。如果时间能重来……我一定不会在deadline前才开始爆肝,这是个非常不明智的行为。姑且也算这门课给的一个经验:给自己的Deadline,尽量比官方DDL早一些。
4、累计花了多少个小时在软工实践上?平均每周花多少个小时?同时贴出开篇博客“你打算平均每周拿出多少个小时用在这门课上”的回答
累计共157.116个小时,Alpha和Beta版本平均每周约有十个小时吧,其余时间约有三四个小时。开篇博客中我写到需要看课程难易程度,开学初粗略计算约为两三个小时吧,后来……我天真了。我觉得是远远不够的。
5、学习和使用的新软件;
- HTTP调试与模拟:Postman
- Git客户端:GitKraken
- 交互原型设计软件:Axure
- 虚拟机:Vagrant
6、学习和使用的新工具;
- HTTP调试与模拟:Postman
- Git客户端:GitKraken
- 交互原型设计软件:Axure
7、学习和掌握的新语言、新平台;
新语言:
PHP编写后端
新平台:
Vagrant虚拟机
8、学习和掌握的新方法;
- 后端写完接口后的测试方法:利用postman
- 团队协作编程方法:Github
9、其他方面的提升。
收获到了如何协调管理一个团队吧,虽然自己这次的角色只是团队里微不足道的一员,但看着各个团队的PM,学到了一个PM应该如何统筹管理十个人的队伍,如何在Deadline前协调好各个队员的任务时限。
二、写下属于自己的人月神话——个人或结对或团队项目实践中的经验总结+实例/例证结合的分析
鉴于个人和团队的已经写了很多感想,这一部分就来谈谈结对的经验吧。说实话这次结对应该是这门课程中我完成得最好的一个部分了……感谢队友!两个人配合的结对相比一个人起来,要容易得多,毕竟一个人想不出来的问题可以找队友商讨;比起团队来,也更容易沟通,出现矛盾的时候也只有两个人,私下解决起来也比较方便。两个人开会的时间也比较容易安排,甚至有时候线上讨论即可。
三、对下一届实践的建议,或者对于开学初的你,对于大一的你,对于开学初的我,对于同期的TA们,对于后来的学弟学妹:
1)你有什么想建议、告知和期许想要告诉他们呢?
千万不要因为开学初觉得自己吹下的牛难度太高完成不了而懈怠这门课,万事总有解决的办法,只要肯做,肯想,总能做出来的。或许最终成果没有一开始时的那样完美,但总能找到办法的。不要放弃,态度要端正。
不知道我带的班级会不会有人看到233(我觉得不会有),你们应该是两年后的事了,那时候我也毕业了,坚持下去,相信你们做出来的作品一定比我们现在优秀得多。
2)特别地,特别地,下一届要不要中途换队员(强制的、彻底的从一队换到另一队)?
假设依旧是一个90+人数的大班
如果团队内部出现无法协调的矛盾可以自行选择换队。
但是,强制我是不赞同的。我觉得这有一定可能会影响到班级成员之间的感情,对被换的那个人来说,可能会造成很大的伤害。我觉得一门课程不应该这么残酷。
3)身在一个格外大的班级,竞争强劲,你认为一个组的人数应当在多少比较合适?
如果不考虑展示、班级人数等因素,我觉得一个组四五个比较合适,既可以减少分工不协调、开会时间无法统一的问题,也不会使得每个人的任务过重。
4)个人/结对/团队作业应该控制在怎样的规模?
团队>结对>个人,不论是数量上还是难度上都一样。
5)这学期下来,你最感谢的人是谁?有什么话想要对TA说呢?
………………感谢老师!感谢助教!你们辛苦了!感谢PM的好多好多奶茶!感谢队友的包容!
四、分析一下自己所处的团队。软件工程实践是大学里少有的认真的团队协作经验。《构建之法》上说团队的发展有几个阶段,你的团队都经历过么,最后到达了“创造”阶段了么?(参考《构建执法》第17章 人、绩效和职业道德)
萌芽阶段:这个阶段是一开始组队的时候吧,大家都比较客气,分工之类的也还尚未安排。
磨合阶段:是的,我们团队也经历过。记忆犹新有几次小矛盾吧,但经过讨论所幸解决了。
规范阶段:这个阶段大概是Alpha和Beta冲刺阶段?两天一次的会议使得很多规则都被建立起来。
创造阶段:事实上我觉得还未到达吧,缺了PM还是不行,还是需要有一个PM统筹领导。
五、怎样证明你学会了软件工程?
1)研发出符合用户需求的软件
以上是来自大一新生的反馈
2)通过一系列工具,流程,团队合作,能够在预计的时间内发布 “足够好” 的软件
↓团队内的文档
3)并且通过数据展现软件是可以维护和继续发展的。
↓代码规范
4)对着这个检查表:http://xinz.cnblogs.com/p/3852177.html 检查一下,自己如果去企业面试,这些常见的问题是否都能回答,并在此总结。
本来想对着检查表一项项填下来,但发现到后半部分就很难全部回答出来了,看来离面试企业还有一大段的距离。主要是软件测试还不够熟练,效能分析没有接触过,项目管理没有接触过,软件设计、质量意识都还不够清楚。