一、理论学习
(一)本周完成了《软件工程》慕课第13章和第14章的学习,并完成了期末考试,相关截图如下:
(二)讲义学习
本周学习了软件工程讲义第10章软件项目的管理。
比资历?软件行业的竞争有”赢者通吃”的规律,一个快要被市场淘汰的产品不能说:我们是最先进入这一市场的,我理应继续占有足够份额!软件团队人员也不能说,我来的早,所以我的报酬就应该多!
大锅饭?所有人都评“优”,大家平分钱,好么?优秀的人会离开,最后会剩下平庸的人在过平均主义 - 也许整个团队都被淘汰了。同一团队的成员报酬能差别多大?我们看看职业篮球的一个例子:
1997-98 赛季,迈克尔乔丹挣了八千万美元。和他同一个队的队友Joe Kleine当年挣了27万美元。两者相差将近300倍!如果两人挣钱平均分,谁会离开?球队因此变强还是变弱?
比效率?我们也知道软件开发人员的效率有很大的差别,一流的程序员的效率是普通程序员的10倍;有些效率的差别还有正负之分。 一个心不在焉的程序员可以一天写 2000 行代码,然后别的开发/测试人员要花很多时间来修复其中的缺陷,这些同事本来的任务就被耽误了;同时,一个非常用心的程序员发现可以重用以前的稳定模块,他花很多时间重构和测试,最后只修改了500行代码;代码的缺陷特别少,这样无形中节约了别的同事的大量时间。
背靠背评比?根据所有其他人的评价来决定自己的绩效?这样会发生小团体抱团,以及劣币驱逐良币的现象。做游戏的工程师一定听说过"Valve"这个公司,他们的员工手册很有意思,大家不妨看看。根据手册的描述,他们的员工100% 的时间都可以自由支配,做什么项目,在哪里工作等,都可以由员工来决定。但是在绩效评估上,他们用了队友评估这一机制,得出下列四个值:技术等级/技术能力;劳动生产力/结果;对团队的贡献 (做一些工具让大家的工作更容易,帮助招人);对产品的贡献 (除了本职工作外,还有什么可以帮助产品的:找bug,预测用户的反馈,推广... )
比不犯错误?软件项目的进展不是一帆风顺的,总有问题发生,出现了问题,就一定会记在相关人员的帐上,以便总结提高。但是一定会作为绩效评估的依据?那倒不一定。
- 如果成员的行为只影响自己,或者是探索式的行动,则不是坏事。例如有些成员自行探索最新的技术,但是最后决定不采用此技术。
- 如果团队成员的行为影响整个团队 (例如 build break 导致daily build 失败),则要注意。在一个里程碑中可以统计谁导致这样的错误最多。对这样的人可以采取 <移山之道> 中提到的 build master 方法处理。
如何区别对待?团队中总有几个人的资历,成绩,口碑差不多,这时要怎么分出一二三呢?微软公司流传着“lifeboat drill” [救生艇练习] 的办法 - 如果大家在海上遇险,一帮人挤在救生艇上,眼看就要沉没,必须扔一个人下海其他人才能得救,你选谁呢?或者是你要开始一个新的项目,只能带走一个人,你会带谁呢?这当然拷问大家的直觉,但直觉往往是对的。在玩过这些游戏之后,一个一维数组就产生了,这时候就可以区别对待,分三段,来一个好/中/差。或者想GE 等公司那样,给最好的 20% 某些待遇;中间的 70% 某个待遇;最后的 10% 某个明显不同的待遇。
二、实践学习
本周是四人小组合作开发的第二周,我本周的任务是优化游戏界面的布局,修复一些终端报错的bug,为出口成诗模式添加一些辅助功能,增加和完善诗词库。代码仓库地址为:https://gitee.com/lixiaohua_03/joint_development_project。具体详细内容见李肖华同学作业。
优化后的游戏界面如下3张图片所示,增加了返回设置功能按钮:
将之前的旧诗词库整合成了全段诗词库,并增加了小学诗词库和初中诗词库,如下图所示:
出口成诗游戏的作答界面增加了提示、显示答案、跳过当前关键词的功能,如下4张图片所示:
三、学习记录
学习时段 | 学习内容 | 主要收获 | 存在问题 |
4.13 1900~2100 |
理论学习 慕课《软件工程》 (清华大学 刘强) 第13章视频、测验题 |
了解了软件系统测试的概念、类型和方法。 | 缺乏实践,理解还有些欠缺。 |
4.14 1900~2100 |
理论学习 慕课《软件工程》 (清华大学 刘强) 第14章视频、测验题 |
了解了软件交付与维护过程,以及注意事项。 | 缺乏实践,理解还有些欠缺。 |
4.15 1900~2100 |
实践学习 多人协作开发 |
按照任务分配对游戏程序进行改进。 | 见李肖华同学作业 |
4.16 0800~1030 |
实践学习 多人协作开发 |
按照任务分配对游戏程序进行改进。 | 见李肖华同学作业 |
4.17 1430~1700 |
理论学习 慕课《软件工程》 (清华大学 刘强) 期末测试 |
看到了掌握薄弱的知识点。 | 无 |
4.18 0800~1030 |
实践学习 多人协作开发 |
按照任务分配对游戏程序进行改进。 |
见李肖华同学作业 |
4.19 1500~1730 |
理论学习 讲义学习 |
从各个方面了解了软件的项目管理。 | 理论性较强,理解还不是很到位。 |
四、总结
本周小组配合的默契程度有所提升,希望再接再厉,把最后的实践任务完成好,为本课程画上一个圆满的句号。具体总结见李肖华同学作业。