一、请回望暑假时的第一次作业,你对于软件工程课程的想象
1)对比开篇博客你对课程目标和期待,“希望通过实践锻炼,增强计算机专业的能力和就业竞争力”,对比目前的所学所练所得,在哪些方面达到了你的期待和目标,哪些方面还存在哪些不足,为什么?
- 在软工实践之前,我可能只是个只会在windows下面跑跑代码的小白,实践课之后,成为了会在Linux下面跑下代码的小白。因为在做APP项目的过程中,我是我们组负责搭建服务器的,所有服务器的环境配置啊什么的,我大部分都是学习新的知识来完成,中途遇到了各种bug,好在最后都解决了。编码能力提升可能没有那么大(但是也有提高),但是Linux系统倒是玩了一遍,不,是被Linux玩了一遍==。 这是当初的期待中没有想到的。
- 当初期待的是提高编码能力,但是现在来看,远不止提高编码能力了,其他的能力就在下面再说吧。
不足的话我觉得自己编码能力还不够,还要加强,还有时间安排的能力也是很不够,常常会捡了芝麻丢了西瓜这种,虽然这学期没有18门课,但是也有16门==。一开始其实也很犹豫,要不要选软工(因为其他选修课选完我学分已经够了,选了软工分数就超了1.5了,但是后来选了,而且也没有退选,虽然中途特别累的时候会骂自己,当初为什么要选!!!为什么不退选。。。但是好歹我是坚持下来了。而且,现在来看,也没有为以前的选择感到后悔,因为,这门课真的是一门特殊的经历,当初没有退选可以说是一个正确的决定。
2)总结这门课程的实践总结和给你带来的提升,包括以下内容:
1、统计一下,你在这门软件工程实践中,完成了多少行的代码;
大概1100行,后台那边我编码不多,主要是完成CI框架的整个环境搭建,还有就是一些公共函数/用户模块的编码。
2、软工实践的各次作业分别花了多少时间?(做一个列表)
编号 | 作业 | 时间(h) |
---|---|---|
1 | 第一次作业 | 2 |
2 | 数独作业 | 20 |
3 | 结对作业-原型设计 | 8 |
4 | 结对作业-部门匹配编码 | 20 |
5 | 团队作业-同学录 | 10 |
6 | 团队前期作业 | 15 |
6 | 团队作业-alpha开发 | 70 |
7 | 团队作业-beta开发 | 30 |
8 | 个人技术博客 | 3 |
9 | 华为云测评 | 7 |
10 | 总结博客 | 5 |
3、哪一次作业让你印象最深刻?为什么?
应该就是alpha展示的前一天吧,整个队伍一起改bug到凌晨的那种,然后等待队友的GIF图,鱼骨图,来完成展示博客。
4、累计花了多少个小时在软工实践上?平均每周花多少个小时?
总计 190,后面的时间其实差不多是自己估计的,感觉也差不多有这个时间吧,一开始花的时间不多,到后面alpha阶段就是每天都在写软工,每天可能都有5~6小时在写。190/16≈12。
5、学习和使用的新软件;&& 6、学习和使用的新工具;
墨刀 , processon,postman,apizz,git,powerdesigner,siege
7、学习和掌握的新语言、新平台;
leangoo,Linux,JWT,爬虫相关的知识,包括正则/cookie等
8、学习和掌握的新方法;
- 字很重要,图也很重要。作图可以是整个编码变得清晰,比如后端架构,比如数据库类图等等。
- git团队编码协作,非常强大的工具
9、体会
- 我的朋友和我的对话。
我和他说了无数次我在做软工,其实微信还有,没有截图。
怎么说呢,这么实践课是真的占据了这学期的空闲时间,选了实践课之后,软件工程的那位朋友只要和我聊天,我都说我在写软工,他说他们软工可能都没有我们这么累orz。以前周五晚上一般都会出去浪==,这学期因为软工就老老实实的呆在宿舍了。朋友喊我看寻环游记我也没去,最后是自己一个人跑去看了。 - 舍友在做软工时候,发了好几次的朋友圈,都是这个配图
从掉的几根头发,到掉了越来越多的头发orz。 - bug出现定律:
在alpha/beta展示前一天,出bug的可能性非常大!!!你永远不知道bug什么时候会无缘无故的出现。
二、写下属于自己的人月神话——个人或结对或团队项目实践中的经验总结+实例/例证结合的分析
- 一开始的选题其实很重要,如果有好的想法,会让团队更有动力去完成一个属于大家的APP吧。
- 整个团队是时间规划非常重要,熬夜去完成任务是一件非常糟糕的事,这也是团队时间安排出现问题的体现。我们团队有过,但是时间的合理安排真的是一个难题,都说deadline是第一生产力,但是我想如果有人能够有极强的自制力,可以非常合理的安排好时间,那事情估计也就成功了一半吧。
- git的使用非常重要,非常重要,非常重要,软工之后,一定要把git使用起来。
三、对下一届实践的建议,或者对于开学初的你,对于大一的你,对于开学初的我,你有什么想建议和告知的呢?对于后来人的期许。 特别地,特别地,下一届要不要中途换队员?
- 首先你要明确,软工实践真的需要花费特别多的时间,也可以学到非常多的东西,我经历过,我觉得收获>>付出的时间。
- 多花心思在选题上面,这个app可能是你们开发的第一个app。好的选题会让队友都有动力的想要去完成你们的作品。
- 不要担心实际写起来有多难,其实团队写一个app并没有你们想象的那么困难。
- 不要把老师布置的git任务当作是作业,git的版本控制/代码托管/团队编码一定要用起来。
- 换不换队员对于优秀的团队,可能是不想换队员,比如每个团队人人贡献比较均匀,但是对于一些团队,大部分编码都是由团队中的几个人来写的,换队员一般也是贡献最少的换出去,所以我认为换队员的意义不大。如果老师想要我们体会工作上的人员调配,即使调配了,如果队员是整个团队中贡献率最小的,那换队员对那个团队似乎也是没有很大损失。
四、分析一下自己所处的团队。软件工程实践是大学里少有的认真的团队协作经验。《构建之法》上说团队的发展有几个阶段,你的团队都经历过么,最后到达了“创造”阶段了么?(参考《构建执法》第17章 人、绩效和职业道德)
阶段 | 是否经历过 |
---|---|
萌芽阶段 | √ |
磨合阶段 | √ |
规范阶段 | √ |
创造阶段 | × |
五、怎样证明你学会了软件工程?
-
团队的需求规格说明书文档需要非常详细且具体。里面应该包含项目规划/需求/设计等等,设计还可以具体到数据库的表等等。
-
团队的编码规范
这些都是需要非常详细的文档。
https://github.com/FzuYibao/FzuYibao/tree/master/document -
使用团队协作工具,将任务具体化,比如teambition/leangon的使用,还有是燃尽图的持续更新,这些可以让团队的分工合理化,并且是团队进度明显化。
这是我们团队的leangoo使用
-
还有我们的接口文档(部分截图)
最后,感谢老师,感谢助教(从助教那边学到了非常多,非常感谢)。
再见,软件工程实践!