天天看點

現代軟體工程 第十七章 【人、績效和職業道德】 練習與讨論

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. 采訪并收集下面幾類公司對員工績效考核的做法:

已經上市多年的公司

剛剛上市或準備上市的公司

國有軟體企業,

民營軟體企業

初始的創業公司

在授課過程中,我也看到不少同學還是隻關注“自我”和“當下”,不善于跟别人合作,也不會估計别人會怎麼想,或者估計“我們的團隊将來會發生什麼,我要如何應對”。造成這種現象的一部分原因是,不少同學從小就被灌輸“搞好自己的學習就可以了”,“把眼下的考試考好,以後就好了”,另一部分原因是,同學們從來沒有練習如何與别人合作,估計别人會想什麼,估計團隊以後會發生什麼。

科學家認為,人類有别于其他動物的最大特點是人類大腦裡有發達的部分在處理“别人在做什麼”和“未來會發生什麼”(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

繼續閱讀