一、回望暑假时的第一次作业,你对于软件工程课程的想象
1)对比开篇博客你对课程目标和期待,“希望通过实践锻炼,增强计算机专业的能力和就业竞争力”,对比目前的所学所练所得,在哪些方面达到了你的期待和目标,哪些方面还存在哪些不足,为什么?
(5)针对上述问题(2)、(3)、(4),你对这门课的期待是什么?你打算平均每周拿出多少个小时用在这门课上,以达成你的期待以及你在(2)或(3)或(4)上的目标?
我的期待就是,能够好好地开发一个有趣的东西,而不是为了赶工期而找好实现的东西做(数据库的教训),能去系统了解软件工程开发的流程,包括需求、版本控制、文档、展示答辩还有进度控制。
-
达到的期待
- 我们的产品相对来说还是十分有趣的!(大言不惭,同时在开发周期页跟预计的差不多
- 在整个过程中,是一段扎扎实实写代码的经历,感觉还不错
- 纵观每一次的答辩,我们组的答辩成绩都处于较为前面的水平
-
未达到的期待
- 在开发的代码能力上觉得需要跟进一步的学习
- 版本控制和相关工具的高端操作上面我还学习得不够
- 有时候会发现太多的精力反而花在作业文档上面
-
意想不到的期待
- 重新认识了好多超优秀而原来了解和接触并不多的同学
2)总结这门课程的实践总结和给你带来的提升,包括以下内容:
1、统计一下,你在这门软件工程实践中,完成了多少行的代码;
参照自己的PSP表格,包括个人及结对项目在内,大致完成了大约2200行左右的代码
2、软工实践的各次作业分别花了多少时间?(做一个列表)
个人项目 | 结对项目1 | 结对项目2 | uml设计 | Alpha | 现场编程 | Beta | 项目测评 |
---|---|---|---|---|---|---|---|
1200 | 600 | 2000 | 600 | 4000 | 800 | 600 | 500 |
3、哪一次作业让你印象最深刻?为什么?
印象最深的还是现场编程的那次作业,因为使用的技术栈大家都是刚刚上手,于是在前端上就耗费了挺多时间。这让刚刚开始开发的我们陷入了很僵硬的局面,士气也有一定的下降。那次的作业也因此没有完成的很好,但终归最后的我们坑都爬出来了。
4、累计花了多少个小时在软工实践上?平均每周花多少个小时?同时贴出开篇博客“你打算平均每周拿出多少个小时用在这门课上”的回答
-
当时似乎没有明确回答愿意花多少时间在上面,但我持有的态度是只要我认为有意义事务,我就会去尽可能地用时间去投入,总体上说本次实践还是十分符合期待的。
-
根据PSP表格上的记录,累计消耗280小时左右,平均每周处于15~20小时之间。
5、学习和使用的新软件;
-
设计工具:Mockup Procreate
-
开发工具:PyChram QtDesigner
-
库:好像数不清了…
-
使用但不是新使用的工具:墨刀 PS AI VsCode GitHUb ProcessOn
6、学习和使用的新工具;
-
设计工具:Mockup Procreate
-
开发工具:PyChram QtDesigner
-
库:好像数不清了…
-
使用但不是新使用的工具:墨刀 PS AI VsCode GitHUb ProcessOn
7、学习和掌握的新语言、新平台;
- git 命令行
- Python更深入了些,尤其在PyQt上
8、学习和掌握的新方法;
- 测试部分是我之前几乎没接触过的
- 对代码的管理
- 在写代码的过程中掌握的一些新的tips
9、其他方面的提升:
- 抗压能力
- 消解负面情绪的压力
二、写下属于自己的人月神话——个人或结对或团队项目实践中的经验总结+实例/例证结合的分析
团队合作
有一些要注意的点:共识 分配 换位 沟通
共识:
- 一定要把目前团队着手的任务状态讲清楚,并且让大家都有一个全局的了解。
- 同时对于问题的解决路径在分工前谈好。
- 做好任务的规范
分配
- 保证物尽其用、人尽其才
- 尽量的细粒度
- 团队内人员最好不要出现重复的劳动
换位
- 当自己的任务完成时,要注意好是否符合达成共识中的规范
- 在保证规范的前提下,是不是能在自己的领域中做一些小小的优化,让别人在处理时能更便利,以提高团队的效率
- 不要仅仅思考自己的部分,相反应该适当关注整个全局,将大脑让给PM或者负责人(这在团队的讨论中很常见),事实上在学生团队中(尤为在课设)产品、事务的走向大家有权利也有义务来决定,一味地将思考的任务放在负责人身上是一种不负责的行为,也不利于团队取得更好的结果。
沟通
- 即使向团队说明自己的进度和困难
- 有异议和想法应该积极在会议中提出并着手解决
三、对下一届实践的建议,或者对于开学初的你,对于大一的你,对于开学初的我,对于同期的TA们,对于后来的学弟学妹:
1)你有什么想建议、告知和期许想要告诉他们呢?
-
以前我们有得选,现在你们没得选
-
当深渊凝视你的时候,大胆地瞪回去,当你回望,它也就那样
2)特别地,特别地,下一届要不要中途换队员(强制的、彻底的从一队换到另一队)? 假设依旧是一个90+人数的大班
私以为这要视情况而定,在项目真正开始编码前,换组这件事的成本都会处于比较可控的状态下。既然是软工实践这种较为开放的课程,还是不要禁掉这种渠道吧。所谓凯撒归凯撒,成员换组这种事还是让同学们用叫来投票,让市场来决定。
3)身在一个格外大的班级,竞争强劲,你认为一个组的人数应当在多少比较合适?
我认为处于6~9人会比较合适
4)个人/结对/团队作业应该控制在怎样的规模?
团队作业中有些花里胡哨的东西反而过多占据了精力(比如两天一更的冲刺博客),事实上敏捷开发的人员是处于专职工作的,而我们在本学期课还尤为多。长期都处在为软工疲于奔命。
5)这学期下来,你最感谢的人是谁?有什么话想要对TA说呢?
综合考虑应该是张扬同学,确确实实地扛起了这个团队的大旗,同时在面对项目停滞时能够解决好难题。正如大魔王说的那样,他是本学期中最均衡的一个人。
四、分析一下自己所处的团队。软件工程实践是大学里少有的认真的团队协作经验。《构建之法》上说团队的发展有几个阶段,你的团队都经历过么,最后到达了“创造”阶段了么?(参考《构建执法》第17章 人、绩效和职业道德)
五、怎样证明你学会了软件工程?
1)研发出符合用户需求的软件
必须公开发布,有实际的用户,一定的用户量和持续使用量 (3 天后能保持10 - 100个用户);而不是: 做没有用户使用的软件
2)通过一系列工具,流程,团队合作,能够在预计的时间内发布 “足够好” 的软件
有项目规划/需求/设计/实现/发布/维护,有定时的进度发布 ; 而不是: 通过临时熬夜,胡乱拼凑,大牛一人代劳,延迟交付等方式糊弄
3)并且通过数据展现软件是可以维护和继续发展的。
而不是 找不到源代码,代码无文档,代码不能编译,没有task/bug 等项目的发展资料
4)对着这个检查表:http://xinz.cnblogs.com/p/3852177.html 检查一下,自己如果去企业面试,这些常见的问题是否都能回答,并在此总结。
请在随笔中用数据证明上述内容或侧重选择之一。
六*(选做)、阅读软件工程中关于代码质量的的经典论文,从下列文献中选择一篇或若干篇,结合自己的实际做一个阅读笔记(例如,自己写的代码质量如何,是不是一个大泥球,如何衡量自己代码的质量)?从以下参考论文中选择一篇或若干篇:
参考论文文献:
[1] Stamelos I, Angelis L, Oikonomou A, et al. Code quality analysis in open source software development[J]. Information Systems Journal, 2002, 12(1): 43-60.
[2] Boehm B W, Brown J R, Lipow M. Quantitative evaluation of software quality[C]//Proceedings of the 2nd international conference on Software engineering. IEEE Computer Society Press, 1976: 592-605
[3] Samoladas I, Stamelos I, Angelis L, et al. Open source software development should strive for even greater code maintainability[J]. Communications of the ACM, 2004, 47(10): 83-87