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

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] ,讨论团队如何能让所有人都明确驱动和责任

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

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

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行业的学生在中国应该怎么办:
 
        普通 IT 人士的10年回顾
 
        关于学术或工作,我们看看更多牛人的指点:
========

 

 

 

 

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

 

 
 
posted @ 2014-07-19 22:51  SoftwareTeacher  阅读(1624)  评论(7编辑  收藏  举报