1. 回顾 2. 使用到的软件/工具 3. 属于我们的人月神话 4. 不算建议的建议 5. 对团队的分析 6. 证明学会了软件工程 7. 吐槽
个人作业 - 2017软件工程实践总结
一、回顾
1)对比开篇博客你对课程目标和期待,“希望通过实践锻炼,增强计算机专业的能力和就业竞争力”,对比目前的所学所练所得,在哪些方面达到了你的期待和目标,哪些方面还存在哪些不足,为什么?
达到了期待和目标的能力:团队协调能力、跳坑后的反思总结能力
哪些不足:预估和控制进度节点时间的能力
2)统计一下,你在这门软件工程实践中,完成了多少行的代码
总和不超过1000行,毕竟前两个项目不大,团队项目又几乎没有参与编码,专心做PM。
可以是说是硬伤了- -。
3) 软工实践的各次作业分别花了多少时间?
作业编号 | 作业内容 | 时间/h |
---|---|---|
一些QA | 3 | |
1 | 数独棋盘 | 22 |
2 | 结对作业 - 原型设计 | 5 |
结对作业 - 编码 | 20 | |
4 | 团队展示等前期作业 | 35 |
随堂小测同学录 | 45 | |
6 | Alpha冲刺阶段 | 110 |
7 | 个人技术博客 | 8 |
Beta冲刺阶段 | 70 | |
9 | 软件云测评 | 10 |
课程总结 | ||
共计 | 333 |
4)哪一次作业让你印象最深刻?为什么?
那必须是 Alpha 冲刺啊orz,耗时最久,战友感情最深...
- 累计花了多少个小时在软工实践上?平均每周花多少个小时?
Alpha冲刺那段时间每天都至少要花三四个小时吧,有时候一整天都花在上面。Beta阶段就相对闲适了,但整个课程下来的话也有平均每周20小时妥妥的。(一个不负众望的数字)
二、使用到的软件/工具
划重点力荐:
- Gitkraken
(截图的时候是圣诞那天,超级萌的小章鱼嗷~)
目前见过最好用的 git GUI,界面也非常的舒服~
附上之前写的两篇使用教程:
- 超详细!Github团队协作教程(Gitkraken版)
- 使用Gitkraken进行其他Git操作
- Process on 用了近半年的绘制工具,流程图/思维导图/UML各种都一应俱全,而且支持多人在线编辑,非常方便好用。
-
Cmd Markdown(作业部落)
大概是使用感最舒服的 markdown 编辑器了,从大一用到现在还是觉得最最好用没有之一。
之前因为 Typora 有一键插入表格功能,所以也下载用一小段时间,但因为是一遍键入一遍渲染出效果,没办法直观的看到原 markdown 代码,修改起来挺不方便的,而且即使是唯一吸引我的插入表格功能也不太好用,因为插表格时候可选的行列数是限制的。况且后来学长在我的一篇博客的评论区安利了这个生成HTML表格代码的网站:http://www.tablesgenerator.com/html_tables# ,于是更坚定的果断抛弃了 Typora ...
- teambition
团队协作工具。团队管理要用到的各种需求基本全都满足了。发布的任务支持附带子任务,并可以预定开始时间和结束时间(虽然它的任务提醒功能挺迷的,有时候有通知有时候没通知,找了各种方法似乎都没有很好的解决(怕是个 Bug )。
其次最好用的就是它的“分享”内嵌了协同编辑工具石墨文档,同时多人在线编辑一篇团队博客,肉眼可见的看到队友在另一个段落疯狂打字hhhh,并且“文件”里面可以放团队各种文档、图标素材啊什么的,上传后团队内共享,并且也可以生成只读/读写分享链接。
- 墨刀(MockingBot) 上手很方便的原型设计工具。(我发现我推荐的工具全都是 UI 精致的hhhh
- Android studio 2.3.3 开发工具不用多说,安卓程序员人手必备吧。
三、属于我们的人月神话
写下属于自己的人月神话——个人或结对或团队项目实践中的经验总结+实例/例证结合的分析
要说整个课程中最是有血有肉的部分,那就不得不提到Alpha的从头到尾全过程,感觉可以洋洋洒洒又十万字道相知...(划掉)咳,下文故事会风格长篇预警。
-
后来被队友提到过无数次的“小练手”究竟有多有用?
这个故事可以说是一个不经意的先行举动,意外的论证了“机会总是留给有准备的人”。
在十月上旬组队之后,考虑到队内基本可以说全都是0基础,因此就提前把安卓的学习任务布置了下去,考虑到这种实践性极强的学习,有输入就必须有产出嘛,所以让队里唯一有一定安卓基础的龙江来出了一个题:https://www.zybuluo.com/M1saki/note/903894,然后在完成之后开了一次短会专门展示成果和向大家解释代码的实现思路。(照片偷拍于10.16日35#活动室)
虽然那时候课程还并没有开始正式进入团队项目的时段,也还没考虑说我们之后要做的app会是什么,但是无论是从一些相近功能的实现还是说安卓编码熟悉度来说都对后续开发有非常大帮助。甚至对于一些队友而言,这就是学习安卓从0到0.1了,向上取整那不就是0到1了(233)。不止一次的,我听到队友说“还好当时做了小练手”,“这不就是小练手实现过的功能吗”的时候,都觉得布置这个私下的队内小任务是最最成功的一个决定之一了~
-
看似拿到了最高分的“同学录”到底有多失败?
这真是一个悲伤的故事,或者可以说是真正意义上的“人月神话”了,记忆犹新的正是在那几天,我第一次中午一点多才吃上饭orz,因为等一个队友解决了半个多小时的merge conflict,结果还惨死到在git的使用上又花了两个小时。这其中有我该背的不少的锅,虽说代码规范早就文档俱全,但是真正实践起来跟理论“说的轻松”完全不是一回事。糟糕的注释、互相魔改队友的代码、git使用不熟练、git信息一团糟...说到底其实都是缺乏规范。
最后花了四天总算完成了项目,中途被没有参与同学录(旅行归来)的服务器端的永盛催了两三次的“不是吧你们还在同学录啊”,“你们别做了啊,那就只是个随堂作业,做的好不好有什么关系,Stardust要紧啊”orz...但我还是非常坚持的一定要认真完成,一个是不愿意虎头蛇尾,另外就是必须要彻底体会过全过程,才能明白这一次的项目我们完成的有多么狼狈。发完release虽是松了一口气,但更可以说是心情沉重的好好反思了一通,为什么一个功能不算多的简单的小项目,四个人同时在做,竟然会变得如此糟糕?关于随堂小测的反思(重点看后半段的个人总结)
-
队内的争执是正常且有意义的
不要害怕队友间的争执会破坏和气,正是有争执才更能说明大家确确实实把完成项目当做是自己的事情,在费心尽力的想要做好。但是要让争执得到一个妥善最优的解决,必须做到的一点就是能够彼此尊重、平心静气的进行有效的沟通。
原博客:Alpha冲刺! Day9 - 砍柴(重点看后面的“有话想说”)
其实在当时发了这篇博客之后,有队友马上对我在博客中写到的“因为小鹏的代码没有遵照文档...”一句提出质疑:“你问过当事人小鹏的真实情况吗?”我当时可以说是愣了好半天。我确实没有过问过小鹏的情况,因为整个重点都放在了冲突的双方上,而一个不经意的错误始因的“因为...”,写在公开的博客上会令当事人感到不悦却没有关注到。认真的道歉了之后,在第十天的scrum博客中也做了解释。所幸是团队内的几人并没有因此生嫌,一路走过来也还是一团和气~
四、不算建议的建议
对下一届实践的建议,或者对于开学初的你,对于大一的你,对于开学初的我,你有什么想建议和告知的呢?对于后来人的期许。
特别地,特别地,下一届要不要中途换队员?
(ps:这个问题我看了三遍才看懂是什么意思...)
对开学初的我: 软工虽苦,且行且珍惜。ps:记得买护发素。 😄
对大一的我: 能不熬夜的时候千万别熬夜!!不必要的熬夜之后都是血的教训,切记切记,血条要攒着给大三,因为大三会有一门软工。
对栋哥:
- 关于作业时间安排。虽然确实是按照承诺的那样在期末之前结束了课程,但还是无可避免的中间跨过了两三次考试,特别是Beta的开始时间可以说是相当尴尬了,看着仿佛是15天选5天冲刺非常宽裕,但其实前面10天的我们都在准备考试orzz,几乎所有团队都是选择了后5天开始着手Beta版本,导致整个过程的感受和Alpha比差了太多太多了。但想想其实不管是国庆结对作业还是尴尬的beta冲刺,似乎都不得不归结为这学期开学太晚- -希望明年的软工能更天时地利吧~
- 关于换组员。换换换!从开始的无法接受无比抗拒,到现在经历了之后觉得,就那样嘛!不是也好好的?认识新同学不是也挺有趣的?再况且了,还是个能力很棒的好队友~ 必须支持换!不能只坑我们一届。
对学弟学妹们: 听说你们实践必修了哈哈哈或或或
五、对团队的分析
分析一下自己所处的团队。软件工程实践是大学里少有的认真的团队协作经验。《构建之法》上说团队的发展有几个阶段,你的团队都经历过么,最后到达了“创造”阶段了么?(参考《构建执法》第17章 人、绩效和职业道德)
√ 萌芽阶段
√ 磨合阶段
√ 规范阶段
√ 创造阶段
整个步调其实还是蛮稳的,规范也定的比较早,所以虽然在磨合和规范阶段有来回转换几次,但最后还是可以说是达到的创造阶段的~
六、证明学会了软件工程
1)研发出符合用户需求的软件
必须公开发布,有实际的用户,一定的用户量和持续使用量 (3 天后能保持10 - 100个用户);而不是: 做没有用户使用的软件
2)通过一系列工具,流程,团队合作,能够在预计的时间内发布 “足够好” 的软件
有项目规划/需求/设计/实现/发布/维护,有定时的进度发布 ; 而不是: 通过临时熬夜,胡乱拼凑,大牛一人代劳,延迟交付等方式糊弄
3)并且通过数据展现软件是可以维护和继续发展的。
而不是 找不到源代码,代码无文档,代码不能编译,没有task/bug 等项目的发展资料
请在随笔中用数据证明上述内容或侧重选择之一。
我选择“实际用户”的阐述,会在团队总结博客里详细说明。
七、吐槽
自从上了软工实践,我家的微信群都是这样的画风:
(我其实特别想知道,那些退选了的同学/睡眠最充足的同学(超羡慕),现在是庆幸还是后悔?qwq
对于换人的事情,哈哈哈先不得不承认选择了组团沉默也有我的一份锅,故意假装没看到学长关于换人的消息,沉默啊沉默,然后就在沉默中灭亡惹~ 咳,做出改变总是一件艰难的事嘛,列举了无数换人后的各种不妥各种困难,而且又有了“前几届最后都没换成”的先例,多么给人以信心啊!然而栋哥一个银弹,横竖反正都得换!那既然逼上绝路了就顺其自然吧,结果也并不坏嘛。
还有特别想对于龙江表示一下感谢,每次说是说着“陪全队肝到最后一刻”但其实每次都并熬不过,最后的最后都是靠龙江在坚守,因为编码人员零点、一点睡了,而review的人只好四五点才能睡。然而又并非编码人员,要说代码能力的提升等等又不如其他dev来得收获颇丰,工作往往是突击式的(交付的前一天dev们疯狂发pr....),而总工作量又不如dev,所以队内的小黄衫没有给他,而测试和review真的是非常非常辛苦了,非常感动龙江的付出qwq
贴一张QA的形象条漫: