现代软件工程 第十七章 【人、绩效和职业道德】 练习与讨论

0. 为啥要讲人、绩效、和职业道德? 学好专业不就行了么,为啥要扯这么多?

        用专业知识教育人是不够的。通过专业教育,他可以成为一种有用的机器,但是不能成为一个和谐发展的人。要使学生对价值有所理解并且产生热烈的感情,那是最基本的。他必须获得对美和道德上的善恶鲜明的辨别力。否则,他 —— 连同他的专业知识 —— 就更像一只受过很好训练的狗,而不像一个和谐发展的人。为了获得对别人和对集体的适当关系,他必须学习去了解人们的动机、他们的幻想和他们的疾苦。

    ---- 爱因斯坦

1. 比较不同团队的绩效评估方法,提出自己团队的绩效评估计划

用某一次《现代软件工程》课上的几个团队的博客做例子:

第一组(seven):
我们可以按照以上的9级来分,但是对于我们而言,大家在很大程度上都是同一级的劳动者……所以我们可以进一步细分同一级的排名,比如将整个任务分为等量的小任务,每个人负责其中的一个,而最终大家的排名可以通过完成这类任务的个数来决定。关于如何评价是否完成“任务”,可以通过功能性、是否准时来评价;当整个工程完结时,我们可以做一次评定(review),包括功能、性能和代码的评价,然后大家之间讨论互评。

第二组(霸王):
对于浮动分数,可以通过每个职位对团队的贡献来分配。队友之间根据各自的贡献给出排序,最后汇总得分。

第三组(铷铯):
一群学生做软工项目(PM、开发、测试),PM:0.3(n*30)分,开发:0.5(n*30)分,测试:0.2(n*30)分

第四组(take it & go):
在团队合作中,每个成员的贡献度不仅仅取决于其工作量,而且还取决于这份工作对团队的意义有多大。我们认为贡献度的计算应遵循如下公式:

贡献度 = 工作量×工作的影响力×工作的不可替代性

这个等式给我们的评测提供了一个方向。与直接估计贡献度相比,分别估计三个分量显得更易操作,准确性也更高。

//评点:如果大家都想做“不可替代的工作”,怎么办?

第五组(banana):
关于管理体系,可以天花乱坠地说很多,但实际和理论会差得很远,我们并不能完全按照一个专业团队去执行。大四是一段美好休闲的时光,很难要求大家训练有素地执行进度,我们只能尽可能友情提示大家一起干一些事,但我觉得做完整个工程应该没有问题。

//评点:我个人觉得第五组的同学最适合去垄断性国企。                        

如何衡量两个团队成员的劳动生产率呢?或者这已经超越了劳动生产率的范畴,到了知识产权,职业道德的领域?


2. 在团队中会不会出现 “劣币驱逐良币” 或者 “不敢犯错误” 的现象?

例如,在大家做任务估计的时候,那些给出非常乐观估计的成员会不会产生无形的压力,让一些实事求是的团队成员不得不调整他们原来比较靠谱的估计,最后导致整个团队的估计都是过于乐观, 客观(包括比较保守和悲观)的估计都消失了?

或者,在工作中太看重失误,惩罚失误,导致无人敢冒险?

    请看这个例子: NBA 球星科比的投篮不中次数已经是历史第一,超越了大部分NBA 球员的所有投篮数:

    http://china.nba.com/news/4/2014-11-12/1048/24547.html   link2

    这么多投篮不中,应该惩罚么? 如果要严厉惩罚的话,科比,或者球队会有更好的成绩么?

3. 请阅读驱动和责任[LL1] ,讨论团队如何能让所有人都明确驱动和责任

    有极端的看法说任何与报酬挂钩的绩效评估都是有害的,你怎么看?

  • http://www.joelonsoftware.com/articles/fog0000000070.html

4. 采访并收集下面几类公司对员工绩效考核的做法:

  • 已经上市多年的公司
  • 刚刚上市或准备上市的公司
  • 国有软件企业,
  • 民营软件企业
  • 初始的创业公司

5. 走出“自我”和“当下”

在授课过程中,我也看到不少同学还是只关注“自我”和“当下”,不善于跟别人合作,也不会估计别人会怎么想,或者估计“我们的团队将来会发生什么,我要如何应对”。造成这种现象的一部分原因是,不少同学从小就被灌输“搞好自己的学习就可以了”,“把眼下的考试考好,以后就好了”,另一部分原因是,同学们从来没有练习如何与别人合作,估计别人会想什么,估计团队以后会发生什么。

科学家认为,人类有别于其他动物的最大特点是人类大脑里有发达的部分在处理“别人在做什么”和“未来会发生什么”(Interpersonal Awareness & Social Awareness)这些事情。能摆脱[自我/当下]而考虑到[别人/将来],从而主动为群体和将来行动,这是人和其他动物不同的地方(来源: http://www.pbs.org/wnet/humanspark/)。

在成功的大型企业中,人际交流能力和人际觉察(Interpersonal  competence, and Interpersonal Awareness)是员工素质培训的一个重要部分,它包括如何与别人建立平等而融洽的合作关系,如何处理矛盾与冲突,如何影响同事,如何给别人的工作做评价,如何能了解别人表面行动下的言外之意、隐含的动机等等。在前文提到的“黄金点游戏”这个场景中,一位参赛者需要了解一屋子的同学大概的思路 ,如何影响他们,自己才能增加获胜的希望。如果每个人独自埋头推导公式,而不管其他人在想什么,是得不出获胜的数字的。

一个软件团队,如果大家都不考虑“别人”、“未来”,光是每个人独立地搞自己眼前的一摊事,是不行的,把自己的代码重构出花来也不行,把SCRUM(史克朗姆)玩到极限也不行。这也是我觉得聪明的同学们欠缺较多的地方。所以《现代软件工程》课包括了很多“两人合作”、“黄金点游戏”以及估算工作量等练习[1]。

上这门课的同学,你觉得这些活动和练习有价值么?

人和人不一样, 你觉得程序员和自闭症的患者有什么联系么?

     http://archive.wired.com/wired/archive/9.12/baron-cohen.html

     如果把人按照 empathetic (有同理心的)  --  systematic (系统思维的) 两极来分类, 有人画出了如下的分布示意图,你怎么看?

6. 刷课软件和刷票软件, A/B 测试和道德,罪与罚
在大学里,网上选课非常讲究时效——因为好的课程不多,大家都想上。大家也讨论过“刷课机”、“换课机”这样的小程序是否合乎道德和公平。春运火车票也是同样的抢手,那么程序员写一些浏览器插件/专用小软件去搞票是好事,坏事,还是不好不坏?这些行为应该用哪些道德/规定/法律来约束?
同学们可以结合本章讲述的道德规范,从正面和反面辩论一下。

参考信息1 通常人们都在路边招手叫出租车,只有很少的人打电话约车, 从2014年起,在很多叫车软件出现后, 在路边招手往往看到很多出租车不停车,因为它们已经被叫车软件订了。很多人说这对于没有打车软件的弱势群体不公平,你说呢?

选取最近IT 界发生的一些事件(例如,某员工因为个人恩怨把公司服务器上的数据全删掉),对照软件工程师职业道德的条款, 评价当事人的软件工程师职业道德如何。
案例:http://blog.jobbole.com/79450/    偷了『半条命2』源代码的那小子

另一个讨论:阿里五人月饼事件 , 讨论

技术的发展必然会波及到社会的其它方面,例如道德。 一个网站能用 A/B 测试来影响用户的情绪么? 如果是为了“科学实验” 的目的呢?
请看下面事件并讨论:
http://techcrunch.cn/2014/07/02/ethics-in-a-data-driven-world/ 
7. 软件团队的发展阶段
结合课本上提到的四个阶段,描述一下你目前的软件团队处于什么阶段,为什么?
8. 团队如何做决定
软件开发和软件团队的生存都面临许多问题,需要许多睿智而果断的决定,一个团队如何做决定呢?  有下面几种方式,请评说各自的优缺点:
a) 独裁:   领导说了算
b) 独裁+顾问:  领导和一些外部的顾问商量之后做决定
c) 民主投票:这样就产生了赢家和输家
d) 全体一致同意后再决定:皆大欢喜?
9. 测定工程师的效率
软件工程师各自效率不同,这是客观存在的,你们团队中效率最高的工程师和效率最低的工程师相差多少? 能否设计一个可以量化的测试标准,统计一下?
10. 合作伙伴评比
在这个软件工程课上,你有机会和5-7 名同学进行了深度的合作,那么,谁的合作精神好?
在课程的最后阶段, 每个人列出一个一维的名单,你自己也在里面,从合作精神最高到最低排列,没有并列。
小伙伴1
小伙伴2
本人
小伙伴3
...
如何打分?  “本人” 得到0 分, 比“本人“高一个名次,则加 1 分,低一个名次,则减 1 分, 以此类推。 TA 拿到全部人的提名后,给所有人统计分数。 然后公布。
任课老师决定是否给得分最高的部分同学某种奖励分。  
11. 团队的职业道德,用户的道德
人们生活,工作在一个互相影响的社会里,每个单个员工的道德,会影响团队的道德。团队领导的行为和决定,也会给 “道德” 做最好的说明。竞争对手的道德,会影响你自己的处境和决定。   每个消费者(用户)的道德,也会对软件行业有影响。
这是最近的例子,这个事件是由个人导致的,还是团队的道德(潜规则)低下,无底线造成的,还是无奈地说 “这是行业的行规,大家都这么做”,就算了?
2014年,锤子手机在天猫电器城上预约数造假
http://tech.ifeng.com/a/20141020/40841049_0.shtml
http://www.chinahightech.com/html/727/2014/1020/15575128.html 
这是讨论中国软件发展困境的帖子,假设软件用户道德水准更高一些,使用正版软件的比例更高一些,中国的软件行业会有更好的发展么?
http://www.zhihu.com/question/22131582
看下面的例子:  每个涉案者应该得到什么样的惩罚,道义上的,或者连带经济,刑事上的? 如果你是原创,你会采取什么措施?如果你开发了一个应用市场, 或者是市场的监管者,你应该怎么办?
http://www.chuapp.com/2014/10/17/88997.html
下面是一个小组织和大组织之间关于创意,知识产权,契约精神,商业道德的争论:
http://weibo.com/1919387783/ByDRrqYyE?type=comment

12. 成长,责任,和公司的关系

绝大部分的工程师都在某一个企业工作,工程师的成长也和企业的兴衰有很大关系。企业兴旺,工程师也是与有荣焉,很多人觉得是自己的功劳,理所应当提薪升职;企业衰落,很多工程师未必觉得是自己的问题(我的代码很好的,都是经理,市场,老大的问题!); 企业最后要裁员,很多人为了一些补偿和企业产生纠纷。

几个例子:

    http://weibo.com/1620213837/BgSGLhdAe

    http://www.csdn.net/article/2014-09-29/2821931 

    http://www.csdn.net/article/2014-10-01/2821945 

那么,软件工程师在企业中是劳动密集型的工人么,还是有独创性的专业人士? 他们对软件企业的成败负多大的责任?

13. 工程师单打独斗 - 接私活

    和上面的讨论题目相关, 很多人把项目的不如意归结于团队,公司,等等个人之外的因素, 那么,当工程师一个人做全栈工程师,顺便把别的角色都搞定,是不是很爽呢? 当一个工程师直接在社会上拼搏的时候,会碰到什么有意思的事情呢? 我们看看 “接私活” 这个场景。 请看完下面的几个故事,谈谈 “接私活的软件工程要注意几个方面”:

    http://www.cnblogs.com/geeking/p/3157744.html

    http://www.cnblogs.com/txw1958/archive/2012/11/06/programmer-personal-work.html

    http://www.cnblogs.com/yhyjy/p/4444094.html

    http://www.cnblogs.com/myproj/p/3402928.html

    http://www.cnblogs.com/toutou/archive/2013/05/06/4602685.html

    http://www.cnblogs.com/shenyisyn/archive/2013/01/11/2856753.html

    http://www.cnblogs.com/jj-fly/articles/2086838.html

    http://www.cnblogs.com/adylee/archive/2009/06/05/1497022.html

===== 教材知识点之外的话题 =====

16. 性别在软件工程
最初的软件工程师是女性居多?  https://twitter.com/Whizzpast/status/540151614242570241/photo/1
女性在计算机专业的比例变化: http://www.npr.org/blogs/money/2014/10/21/357629765/when-women-stopped-coding
17. 3-7年后的展望和计划
在这个课堂上的同学一般都是大学三年级的学生,很多同学都在考虑以后要走什么道路 工作/考研/科研/教书/转行...  市面上流行的就业指导大多数是功成名就的过来人 (工作或科研的大牛)在年事已高 :) 的时候提供的,但是一般的同学未必能走到那样的高度。那么有没有比较普通一些的人士给大家的一下短期规划的建议呢?  这个是有的:
当一个普通教授,或者,当一个入门级的软件企业员工:
http://pgbovine.net/academia-industry-junior-employee.htm  (博客里还有不少好内容)
一个普通IT行业的学生在中国应该怎么办:
http://www.cnblogs.com/bitfan/archive/2010/12/30/1921291.html
普通 IT 人士的10年回顾
http://blog.jobbole.com/12968/ 
关于学术或工作,我们看看更多牛人的指点:
http://www.cs.princeton.edu/~jrex/talks/research-jobs09.ppt 
http://scienceblogs.com/goodmath/2009/12/23/academia-vs-industry-an-update/
http://www.cnbeta.com/articles/130884.htm
========

[1] 国外还有Social awareness + emotional skills = successful kids的说法,  据说此类教育在小孩到了高中甚至成年都有积极的影响。参见:http://www.apa.org/monitor/2010/04/classrooms.aspx

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/500373.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

现代软件工程 第十三章 【软件测试】 练习与讨论

13.5.2 有错不改 果冻: 微软的产品经过这么多版本的不断完善,应该是把所有问题都搞定,“止于至善”了吧? 阿超: 那也不一定,在非常有名的电子表格软件Excel中,就有这样一个Bug:Exce…

现代软件工程 第十四章 【质量保障】 练习与讨论

15.3.1 有些成功人士或公司认为不需要独立的测试角色(Test),你怎么看? 我猜想和踢足球类似,还是那几个原因: 人太牛: 不世出的天才,例如高德纳写书时发现排版软件不好用,就自己写了一个。也没听…

现代软件工程 第十五章 【稳定和发布阶段】练习与讨论

15.3.0 案例分析 可以看看这两个学生项目的例子,推断出这些团队的血型: STG游戏的跳票(为了完美,推迟了7天,但是7天之后也没有发布……) [i] 英语学习软件(说了“明早发布”,但是明早一直没到)[ii] 15.3.1 反动分子阿…

现代软件工程 第十六章 【IT 行业的创新】练习与讨论

16.6.0 Xerox Parc 的成功创新和推向市场的失败 http://research.microsoft.com/en-us/um/people/blampson/Slides/AltoAtPARCIn1970s_files/frame.htm http://research.microsoft.com/en-us/um/people/blampson/38-AltoSoftware/WebPage.html http://research.microsoft.com/…

感恩回馈——你评博客,我送好书

各位博客园的用户: 最近我的书《构建之法—现代软件工程》上市了,得到了不少读者和老师的好评,出版2个月即告重印。该书的相关信息参见豆瓣页面:http://book.douban.com/subject/25965995/ 《构建之法—现代软件工程》得以出版和畅…

《梦断代码》读后感 - 驱动,责任,交流,远虑

这三篇读后感原来发布在我自己申请的域名 yishan.cc 上面,后来这个域名被墙了。 (原文写于2008年12月) 几个星期前,我给《现代软件工程》课的每一个团队都发了一本 《Dreaming In Code》的中文版 《梦断代码》,要求写读后感。这本书讲了这样的…

软件工程练习:模块化,单元测试,回归测试,TDD

这是《构建之法》实战教学的一部分。适合作为同学们的第二个程序作业。 第一个程序作业: 请看 “概论” 一章的练习,或者老师的题目,例如这个。 作业要求: 软件工程的作业越来越有意思了, 我们在第一个作业中&#xff…

《构建之法》参考书和链接汇总

《构建之法》 参考书和链接汇总 参考书汇总 一些读者对《构建之法》引用过的参考书也感兴趣,因此我把所有参考书单独列出来。其实人大部分的思想都是受某些外部信息的启发影响而来,很多道理看似新颖,其实别人早就讲过了😀。这个参…

现代软件工程讲义 7 分析和设计方法

(这一节在第一版的 《构建之法》中没有, 是《构建之法》电子书(多看版), 和纸版书第二版中新增加的内容,纸版书第二版预计2015年6月出版) 11.1 分析和设计方法 我们写软件就是要解决用户的需求,我们需要表达和传递下面这些…

三周的 软件工程实践课 课程安排建议

不少学校想在暑期安排软件工程实践课, 在这么短的时间内要做到软件生命周期的完整体验是有很多挑战的,下面是一个建议: 软件工程课程设计 - 三周计划,10 次授课,10 次学生报告。 第一周,准备: 在…

现代软件工程讲义 源代码管理

【现代软件工程课件】 源代码管理 -- 以实践促进学习 移山软件学院的学生果冻问老师: 为啥需要源代码管理? 我自己写代码多爽,别人要,就用QQ 传过去好了。 老师问:原始人怎么建房子? 果冻:或者找一个洞&…

现代软件工程讲义 个人项目和结对项目练习 地铁

很多老师反映教软件工程和程序设计的时候没有合适的题目,《构建之法》提供了下面的题目,都是从简单的解题思路入手,逐步增量改进。学生们可以复习基本的编程技能,然后逐步加入模块化,文件处理,单元测试&…

最新软件工程总结,项目模板,软工作业下载

(改了标题吸引目标用户) 老师教课,学生上课,首先要讲明师生关系。 其次,就是要说明这门课的底线是什么。 我们假设所有人写作业都独立思考,认真实践,不断改进,勇于创新... 这个假设通常是不全面的&#xf…

C语言 教学实践建议

(编程/软件工程课程怎么教) 这是2016年秋季学期和北京工业大学耿丹学院合作教学的计划。这也可以用于其他学校的 C 语言课程。 2016级有四个班,每班大约 32 人,每班配有一个有一定实际工作经验的助教,配合老师把课教好。 C语言是一门基础课&…

团队项目建议 - 英语学习 App

在这几年推广《构建之法》软件工程教学的过程中,我看到很多老师在讲软件工程的时候,虽然讲了很多年,但是手头没有任何项目,学生或者现想(得到一些大而无当,无法在一学期内完成一个可用版本的项目), 或者抄袭…

结对和团队项目建议 - 黄金点游戏

故事看这里: 背景故事 (链接) 作业 这个游戏可以变成一个持续发展的团队项目: 1)在课堂上玩这个黄金点游戏,用Excel 纪录成绩。过渡到做成简单的单机版游戏,锻炼基本的编程能力 2)两人合作,做成简单的 client/server A…

个人和结对项目 - 英语单词词频统计

个人或结对编程项目 英语单词词频统计程序 (最新版本在这里) 实现一个命令行程序,支持几种模式下的单词词频统计 Implement a console application to tally the frequency of words under a directory. For all text files (file extension: "txt") unde…

个人或结对项目 - 动态显示程序运算的过程

现在网上有很多关于动态显示排序过程的小工具,小程序。 1) https://visualgo.net/sorting 2) http://jsdo.it/norahiko/oxIy/fullscreen 3) http://coolshell.cn/articles/4671.html 我们能否也做一些类似的工作呢? 在在这个作业中 (http:…

构建之法 第三版 17 章 部分草稿

构建之法 17 章  人&#xff0c;绩效和职业道德 (<构建之法> 第三版草稿) 2016/12/23 17.1 领导力 在软件开发过程中&#xff0c;有很多平等合作&#xff0c;但是也有上下之分的领导/被领导关系&#xff0c;即使都是平级的员工之间&#xff0c;也有老师傅/新人&#xf…

构建之法 第三版 第3章 部分草稿 (剪牦牛毛、老程序员去金融公司的故事)...

/* * 这是 《构建之法》 第三版的草稿 */ 3.2 软件工程中的几种思维误区 正如我们在第一章讲的那样&#xff0c;软件有很多特性&#xff0c;软件开发有它自己独特的规律&#xff0c;如果不了解这些特性&#xff0c;软件工程师就会产生不符合实际的想法&#xff0c;在开发过程中…