一、请回望开学时的第一次作业,你对于软件工程课程的想象
1. 对比开篇博客你对课程目标和期待,“希望通过实践锻炼,增强计算机专业的能力和就业竞争力”,对比目前的所学所练所得,在哪些方面达到了你的期待和目标,哪些方面还存在哪些不足,为什么?
答:我觉得很开心能完成这次的团队项目,一开始的时候觉得这个东西很难,完全是一个陌生的东西,无论是课程内容还是实践时需要学习的知识,但是到最后克服了所有的难题,渐入佳境。我一直都觉得哲学里有一句话说的特别好“从实践走向理论,从理论又回到实践中去”。对于我来说计算机就是这样,只有去实践了,知识点才会渐渐掌握,然后再看书就会觉得“原来是这样”,然后在实践的时候就会更得心应手,然后再看书就又有所得。我觉得这次事件学到的东西还是很多的,首先是作为PM,了解了这个身份下该做什么,该怎么去做。然后是作为开发人员,学到了新的语言,新的开发方式,收获颇多,做出了一个很不错的小程序。如果说不足的话,我觉得就是语言学习的不够好,只是略懂皮毛,希望以后再接再厉吧!
2. 总结这门课程的实践总结和给你带来的提升,包括以下内容:
1)统计一下,你在这门课程中,完成了多少行的代码;
从结对到团队,大约900行左右。
2)软工的各次作业分别花了多少时间?(做一个列表)
答:大概如下表,具体在第四小题会有具体解说。
作业类型 | 花的时间 |
---|---|
个人作业 | 平均大约每次花3个小时左右 |
结对作业 | 大约花了8个小时左右 |
团队作业 | 总共大约花了126小时左右 |
3)哪一次作业让你印象最深刻?为什么?
就是让第一次我们看书之后出题目的作业印象最深刻,因为提问题是一件很难的事,其实更多的问题要在实践之后才能提出来,通过看书提的问题我觉得都挺虚的,没什么实际意义。
4)累计花了多少个小时在软工上?平均每周花多少个小时?
花的时间很多啊,个人作业的时候平均会有三个小时多,结对作业的话两周,每周会有四个小时吧,到团队的话冲刺会占到每天六个小时,再加上讨论的时间,博客的时间,就累计会有148个小时左右。
5)学习和使用的新软件;
一个是微信web开发者工具,开发小程序用的;一个是Wampserver32,集成环境的软件;还有就是MYSQL,数据库。
6)学习和使用的新工具;
微信开发者工具算是吧,其他要说工具的话都是百度,书籍了。
7)学习和掌握的新语言、新平台;
新平台:一个是腾讯云,服务器;一个是微信开发者平台。
新语言:PHP,MYSQL,HTML,CSS,JS
8)学习和掌握的新方法;
就是小程序的开发方法和流程。
9)其他方面的提升。
一个是技能提升,一个是管理能力提升,一个是学习能力提升。
二、写下属于自己的人月神话——个人或结对或团队项目实践中的经验总结+实例/例证结合的分析
总结其实写了很多都是在项目验收里了,我就把它复制了过来:
团队项目终于结束了,从四月开始到现在,可以说是花了很多心思和精力在这个事情上了,看着一个东西从无到有,从只是一个小构思到现在的一个成品,可以说是感慨万千了。这也是第一次从头跟到尾的一个项目,在Alpha阶段因为我是后端,所以在写代码的时候前后端都要兼顾,所以整体下来对项目比较了解,但需要学的东西就会很多,但那个时候有PM在,她也是后端,做了很多事情,很多的知识也是从她的代码中学习到的。到后来的Beta阶段我是PM,这是一个很陌生的身份,从答应担任之后开始,就感觉突然肩上就有了重量,分配工作,组织讨论,协调队员,与此同时还有很多的后端和前端任务都需要自己来做,其实感觉特别累,但是又觉得很开心,很乐意去做这些事。尤其是当我看到用户数量远超出我们的预期,好评如潮,得到肯定的时候,就觉得这一切都是值得的,希望这个小程序能越走越远吧!
关于结对:
结对编程过去很久了,但是还记得那时候最纠结的莫过于和谁结对了,毕竟是女生,毕竟是有大神也有学渣,所以还是很烦恼的。但还好那时候任务不重,也找到了好队友,也成功完成了编程任务。不得不说,不是自己写的代码看起来真的很难受,而且还很难理解,最后默默说一句,编码规范真的很重要!!!
三、对下一届实践的建议,或者对于开学初的你,对于大一的你,对于开学初的我,你有什么想建议和告知的呢?对于后来人的期许。对于换人机制,有什么样的建议?
答:我觉得大学就是一个分岔路口,认真学习和认真堕落两个分支。不管怎么说,我还是觉得学习是一件很重要的事,不管以后要从事什么工作,保持一种学习能力总是好的,长期的玩物丧志之后再学习你会发现学起来真的很费劲。再然后就是工作问题,还是那句话,早做打算,在大一大二就要明确目标,自己去学习一些与目标相关的知识,然后最好大二就可以去找实习,才不至于在大三的时候手足无措,大四的时候后悔莫及。
对于换人机制,我觉得出发点是很好的,如果团队里有人混水摸鱼,可以把它替换掉,真的特别好,但是目前还是学生的我们,大多时候还是比较顾虑同学情谊的,就算老师强调了不要顾虑,还是有些话不敢说,有些事不敢做,就连在算贡献分的时候都不好意思给太低,哪怕自己做了很多事,别人什么都没做,我觉得这是最需要考虑的。(当然啦,不是再说我们组,只是存在这种现象)
四、分析一下自己所处的团队。软件工程实践是大学里少有的认真的团队协作经验。《构建之法》上说团队的发展有几个阶段,你的团队都经历过么,最后到达了“创造”阶段了么?(参考《构建执法》第17章人、绩效和职业道德)
构建之法上将团队分为:萌芽阶段——磨合阶段——规范阶段——创造阶段,应该说我们组每个阶段都经历过了,最终也达到了创造阶段。在萌芽阶段,我们组织了几次讨论,确定选题,以及大致的项目结构的构想,因为我们这个项目比较新鲜,没什么人做,而且前车之鉴也比较少,我们的思想也不够成熟,所以也是花了很多时间的。到了磨合阶段,因为我们几个人本身就是隔壁寝室的舍友,本身就比较熟悉,所以在磨合阶段不需要太“用力”,主要就是彼此之间的任务安排,和相互协调来一起冲刺。到了规范阶段,主要就是在冲刺阶段,一个是代码规范的编写,然后作为PM的要经常关注其他团队成员的进度,然后统一一个色调,统一一个设计风格,当然了,我们这个阶段做的不是很好,到后来这些改动会有一点多,也浪费了很多时间。到最后的创造阶段,我们的成品就出来了,也离不开大家的努力,这个小程序就是我们的努力的结晶,真的很厉害哦~
五、怎样证明你学会了软件工程?
1. 研发出符合用户需求的软件必须公开发布,有实际的用户,一定的用户量和持续使用量(3天后能保持10-100个用户);而不是做没有用户使用的软件。
答:可以参考我们的用户调查报告,有详细的数据证明。
2. 通过一系列工具,流程,团队合作,能够在预计的时间内发布 “足够好” 的软件有项目规划/需求/设计/实现/发布/维护,有定时的进度发布;而不是通过临时熬夜,胡乱拼凑,大牛一人代劳,延迟交付等方式糊弄
答:这个的话可以参考我们的冲刺博客,我们的博客里的任务分配与安排都是很详细,也是确实的每个人做了的事,不存在临时熬夜,胡乱拼凑,大牛一人代劳,延迟交付的情况。
3. 并且通过数据展现软件是可以维护和继续发展的。而不是找不到源代码,代码无文档,代码不能编译,没有task/bug 等项目的发展资料
答:详情可以参考以下链接地址,有源码地址以及视频解说。