一、请回望暑假时的第一次作业,你对于软件工程课程的想象
1)对比开篇博客你对课程目标和期待,“希望通过实践锻炼,增强计算机专业的能力和就业竞争力”,对比目前的所学所练所得,在哪些方面达到了你的期待和目标,哪些方面还存在哪些不足,为什么?
刚开始选这门课的目的是想有点项目经验,毕竟对于一个大三的计算机系学生一点项目经验都没有很说不过去。通过这次软工实践,学习了安卓,经历了整个软件开发的过程,还是很符合我的期待的。通过这次实践,在与其他优秀同学比较下,也发现了自己有许多不足,如有许多知识不懂,没有较丰富的前端/后端经验,在以后工作竞争中很不利。
2)总结这门课程的实践总结和给你带来的提升,包括以下内容:
1、统计一下,你在这门软件工程实践中,完成了多少行的代码;
完成的代码大概1.5k行
2、软工实践的各次作业分别花了多少时间?(做一个列表)
作业名称 | 花费时间(hour) |
---|---|
第一次作业 | 1.5 |
第二次作业 | 6 |
结对第一次作业 | 3 |
团队第一次作业 | 0 |
结对第二次作业 | 12 |
团队选题报告 | 2 |
团队-需求规格说明书 | 3 |
团队-预则立&&他山之石 | 1.5 |
团队—系统设计 | 1 |
团队—UML设计 | 3 |
团队—随堂小测(同学录) | 3 |
Alpha冲刺 | 50 |
个人—软件产品案例分析 | 2 |
团队项目课堂展示 | 0.5 |
团队事后诸葛亮博客 | 0.5 |
Beta冲刺 | 20 |
3、哪一次作业让你印象最深刻?为什么?
印象最深的是Alpha阶段的冲刺,冲刺阶段每天晚上到活动室集体编码,然后晚上11点才回宿舍。然后因为Alpha阶段的Deadline快到了,本来计划好的校园会期间溜回家的计划泡汤,在活动室度过3天假期。
4、累计花了多少个小时在软工实践上?平均每周花多少个小时?
Alpha冲刺每天3-4小时,Alpha阶段累计有45小时左右,然后Beta阶段花的时间比较少,加上之前的个人作业和结对作业,大概有100小时吧?(有那么多吗)。
平均每周20小时(冲刺和个人作业或结对作业的时候)
5、学习和使用的新软件;
- Android Studio
- Git
- 墨刀
- 华为云
6、学习和使用的新工具;
- exceltk(excel转markdown)
7、学习和掌握的新语言、新平台;
- Android
- java
- github
8、学习和掌握的新方法;
- 安卓各种UI控件的使用
- Github进行项目版本控制
- okhttp+gson进行网络请求
- 使用工具将excel表格直接转化为markdown形式的表格
9、其他方面的提升。
- 从一个没有一点项目经验的小白,变成了一个有一点项目经验小白
二、写下属于自己的人月神话——个人或结对或团队项目实践中的经验总结+实例/例证结合的分析
- 首先看书学习是一种很高效的学习方式,比如在组好队分配好任务后,我分配到任务是进行安卓开发。然后就到网上找各种关于安卓的学习资料,但是太杂,讲得也不够清楚,所以浪费了挺多时间。最后组长推荐了《第一行代码》,边看书边打书中的例子,就学得快得多。所以一本看书学习是一种很好的方式。
- 别一开始就闷头做事,要先把大致的思路理清了,才开始做。数独作业审题不认真,一看题目就埋头苦干,没看见数独不能有重复的。第二次的结对作业,因为以前没听过json格式这种数据格式,从开始就直接暴力生成学生与部门的数据,到后面要读的时候没法读,对后面的匹配程序的实现造成了影响。
三、对下一届实践的建议,或者对于开学初的你,对于大一的你,对于开学初的我,你有什么想建议和告知的呢?对于后来人的期许。 特别地,特别地,下一届要不要中途换队员?
- 听栋哥说下一届软工实践是必修的了,哈哈哈,下一届有够受的了。如果没有安卓或者后端开发经验,并且不想划水的话,从学期初就应该去学那些相关知识,别等到冲刺阶段才匆匆开始学,那时候就有点来不及了。
- 换人的话我觉得是可以换的,首先事先约定好换人可以让团队里的人保持动力,让团队有一个向上的氛围。但是换人的话应该早点换,太晚换的话好像意义并不大。
四、分析一下自己所处的团队。软件工程实践是大学里少有的认真的团队协作经验。《构建之法》上说团队的发展有几个阶段,你的团队都经历过么,最后到达了“创造”阶段了么?(参考《构建执法》第17章 人、绩效和职业道德)
有4个阶段,萌芽、磨合、规范、创造阶段。我认为我们团队都经历了。从刚开始3个班的同学互相不认识,到组成团队。然后第一次开会,讨论要开发什么样的软件,要开发安卓端或者是Web端。然后各种博客一起分工编写,冲刺阶段集体编码,经历了磨合和规范阶段。最后完成产品并发布,到达创造阶段。
五、怎样证明你学会了软件工程?
1)研发出符合用户需求的软件
必须公开发布,有实际的用户,一定的用户量和持续使用量 (3 天后能保持10 - 100个用户);而不是: 做没有用户使用的软件
2)通过一系列工具,流程,团队合作,能够在预计的时间内发布 “足够好” 的软件
有项目规划/需求/设计/实现/发布/维护,有定时的进度发布 ; 而不是: 通过临时熬夜,胡乱拼凑,大牛一人代劳,延迟交付等方式糊弄
3)并且通过数据展现软件是可以维护和继续发展的。
而不是 找不到源代码,代码无文档,代码不能编译,没有task/bug 等项目的发展资料