一、请回望开学时的第一次作业,你对于软件工程课程的想象
1.对比开篇博客你对课程目标和期待,“希望通过实践锻炼,增强计算机专业的能力和就业竞争力”,对比目前的所学所练所得,在哪些方面达到了你的期待和目标,哪些方面还存在哪些不足,为什么?
- 达到的期待和目标:
- 对javascript入了个门,学会了如何编写微信小程序,并且小程序能够如期发布,在开篇博客中,希望自己的实践能力能有所加强,现在看来,感觉自己还是有进步的,特别是编程方面,而且是在这短短的几周之内自学的,简直不可思议。
- 在团队项目中,在团队协作方面也收获了很多。在整个项目过程中,PM对我们每个人的任务分配是非常认真和合理的,整体氛围还是很不错的。虽然我对于任务时间的分配也曾表达过不满和意见(捂脸),有问题直接提出来,大家互相配合和理解,问题都能解决的。
- 对于整个项目的工作流程,从用户需求分析到最后的项目验收,有了一个很好的体验。
- 不足之处:
- 对于我们的小程序,还是存在一些不足,由于时间的原因和自身能力的不足,没能对小程序进行进一步的优化。
- 这次的项目中,我主要把精力放在了编写代码上了,对于测试这些,做的少。
2.总结这门课程的实践总结和给你带来的提升,包括以下内容:
1)统计一下,你在这门课程中,完成了多少行的代码;
大概完成了2000行左右的代码。
2)软工的各次作业分别花了多少时间?(做一个列表)
作业 | 花费时间 |
---|---|
软工网络15个人阅读作业1 | 4h |
软工网络15个人阅读作业2——提问题 | 6h |
软工网络15结对编程练习 | 37h |
软工网络15团队作业1——团队组队&展示 | 5h |
软工网络15个人作业3——案例分析 | 7h |
团队作业3——需求分析与设计 | 10h |
团队作业2——团队计划 | 4h |
软工网络15Alpha阶段敏捷冲刺 | 60h |
团队作业6——展示博客 | 4h |
团队作业5——测试与发布 | 5h |
团队作业7——alpha阶段之事后诸葛亮分析 | 3h |
个人作业4——alpha阶段个人总结 | 8h |
团队作业8——敏捷冲刺(Beta阶段) | 40h |
beta版验收互评 | 3h |
个人作业5——软工个人总结 | 3h |
3)哪一次作业让你印象最深刻?为什么?
Alpha阶段敏捷冲刺作业,开始的时候根本无从下手,拿着教程上的代码一边改,一边运行查看各段代码的大致功能。最恐怖的可能是那几天白天上课,晚上在熬夜写代码,比较心累。为了实现一个功能,一段代码改来改去。不过这段时间是自己进步最大,学习和收获最多的阶段了。
4)累计花了多少个小时在软工上?平均每周花多少个小时?
累计花了200小时在软工上,平均每周花了14小时左右。
5)学习和使用的新软件;
GitBash、知晓云
6)学习和使用的新工具;
微信web开发者工具
7)学习和掌握的新语言、新平台;
语言:javascript、WXSS、WXML
平台:微信web开发者工具
8)学习和掌握的新方法;
微信小程序框架、组件、API的使用和知晓云的数据接口的使用
9)其他方面的提升。
团队协作能力、实践操作的能力、时间管理能力、沟通交流能力、抗压能力
二、写下属于自己的人月神话——个人或结对或团队项目实践中的经验总结+实例/例证结合的分析
- 如果个人的时间跟团队项目时间有冲突,最好提前跟PM沟通说明情况,让PM事先安排好任务分配,这样每个人也好根据自身的情况自己分配好时间,特别是如果有任务是要大家一起完成的,提前要沟通好时间,不然一边要忙着自己的事情,一边又有团队项目要完成,大家等来等去也浪费时间。
- 遇到问题实在无法解决可以跟队友沟通一下,他们说不定可以给出新的思路和方法。Alpha阶段到中期的时候,遇到一个问题一直无法解决,后来让队友看了一下,很快就解决了。
- 如果有时候写代码写到凌晨了,遇到问题解决不了,那就去睡吧,第二天再看。依个人经验,太晚了精力不够了,脑袋也蒙,效率反倒更低,第二天再来看,说不定就是个很容易就可以解决的问题。
三、对下一届实践的建议,或者对于开学初的你,对于大一的你,对于开学初的我,你有什么想建议和告知的呢?对于后来人的期许。对于换人机制,有什么样的建议?
- 对于下一届的建议
- 在任务之初,最好先提前学习一下,做好技术准备,不然在Alpha阶段初期的时候容易陷入迷茫恐慌、无从下手的状态,也需要花费大量的时间去学习。
- 根据自己的实际能力去制定项目的难度,但也不要太简单,学有余力的情况下适当增加一些软件功能。
- 对于事先没有学习过的语言和环境,千万不要有畏难心理,只要踏踏实实去学习,都能学会的。不懂的多跟做同类型软件的同学请教,大家互相交流经验。
- 项目过程中团队之间难免有冲突的时候,学会沟通和倾听他人的想法和意见,要注意一定是对事不对人的。
- 队员之间要相互学习和交流,有的任务是有交叉的,说不定两人都遇到了相同的问题,两个人一起解决也快些。
- 到了大三,大家也有很多自己的事情要忙,比如要考公、考研、实习什么的,这门课相对可能会花费很多的时间,一定要懂得合理安排好自己的时间。
- 对于换人机制,说实话这是个让人很头疼的问题,毕竟都到了Beta阶段了,团队主力应该是不会离开的,所以相较之下离开的就是对团队贡献度较小的,说实话,我们现在所做的项目主要任务就是打代码和测试,而这些离开的同学对于这方面的掌握是比较少的。他们在beta阶段换到了其他队,人家的软件的核心功能都完成的差不多了,beta阶段的冲刺时间又短,新加入的队员又要学习技术和了解新团队项目的软件,显然这是比较难完成的,只怕是打打酱油(当然这不包括有的团队挖到大神)。我觉得不一定非要到beta阶段才来换人,整个项目的过程随时都可以换,毕竟现实中的团队是随时都存在换人的风险的。如果觉得不合适,早一点换团队也能早一点学习和融入新的团队。
- 对于开学初的我
- 合理安排好时间,每天做好计划,对每天要做的事情分个优先级。
- 对于大一的我
- 多出去参加一些活动和比赛,多一些项目经验,学习要理论和实践相结合。
四、分析一下自己所处的团队。软件工程实践是大学里少有的认真的团队协作经验。《构建之法》上说团队的发展有几个阶段,你的团队都经历过么,最后到达了“创造”阶段了么?(参考《构建执法》第17章 人、绩效和职业道德)
我们团队目前到达了规范阶段,可能还没达到创造阶段。大家能认可现有团队的工作流程和工作方式,新队员的加入也需要遵守我们现有的规范,对于自己的任务也有很认真地完成。作为一个整体,大家的各自的分工非常明确,每日站立会议提供了我们专门的时间回顾和检讨,大家大部分都能自行解决自己所遇到的问题。但是我们还没有达到创造阶段的氛围就像是体育比赛,角色和职责能够自然地转换。
五、怎样证明你学会了软件工程?
1.研发出符合用户需求的软件
必须公开发布,有实际的用户,一定的用户量和持续使用量 (3 天后能保持10 - 100个用户);而不是: 做没有用户使用的软件
截止到目前,我们的用户数累计达到了73人。
2.通过一系列工具,流程,团队合作,能够在预计的时间内发布 “足够好” 的软件
有项目规划/需求/设计/实现/发布/维护,有定时的进度发布 ; 而不是: 通过临时熬夜,胡乱拼凑,大牛一人代劳,延迟交付等方式糊弄
- 项目规划:https://www.cnblogs.com/LDLYMteam/p/8696125.html
- 需求和设计:https://www.cnblogs.com/LDLYMteam/p/8696231.html
- 实现:
- 发布:https://www.cnblogs.com/LDLYMteam/p/9141851.html
3.并且通过数据展现软件是可以维护和继续发展的。
而不是 找不到源代码,代码无文档,代码不能编译,没有task/bug 等项目的发展资料
项目码云管理源代码,地址 https://gitee.com/yangxueying/software_engineering_team_work