本文寫于2013/8/14役耕,謝絕無授權(quán)轉(zhuǎn)載
作為個體的人
人們常常選擇性的忽略了軟件開發(fā)和實際過程是由一個一個的個體的人來完成的翩瓜;然而人都有弱點来农,容易犯錯税灌,有固定的失敗模式/成功模式吹害,以及通用的行為模式:
- 人們的行為通常是難以預測的
- 人性本身有些固有的失敗模式
- 總有一些方式比另外一些方式更容易讓人們共同工作螟凭,即使對同樣一群人
- 有很多模式引起失敗,那么什么樣的方式才能達成成功?
人的行為模式
人的行為總是非線性的并且比一般的物理實體復雜的多它呀;給予雙倍的獎勵螺男,或者雙倍的懲罰棒厘,甚至于雙倍的時間,都不能確定的提高一個人的思考速度/思考質(zhì)量/編程設(shè)計輸出下隧。一個每周工作40個小時的人可能在下周工作60個小時就可以得到雙倍的進展奢人,但是接下來一周再工作60個小時,可能不僅不能維持之前雙倍的效率淆院,可能反而不及最初正常的效率何乎,因為人們會產(chǎn)生疲憊。
人的行為會突然發(fā)生偶然的變化土辩,某某可能突然對測試工作發(fā)生興趣支救;一個偶然的小事兒可能導致一個高級工程師的離開等;某個工程師可能在一種情況下顯得特別容易溝通而換了一種環(huán)境則會變得難以溝通拷淘。人們協(xié)作的方式也可能有巨大的差異各墨,不同的文化背景可能青睞于不同的溝通方式;直接或者保守在不同的文化氛圍中顯得完全不同启涯。真因為這些不可避免的差異贬堵,所以才有各種各樣的技術(shù)方法被發(fā)明出來,然后结洼,沒有一種方法是絕對有效的扁瓢。這個結(jié)論是明顯的,然后人們往往容易忽略之补君,而盲目的鼓吹某種方法是正確的方式并且期望所有人按照這種方式來工作引几。
人的行為在很多方面表現(xiàn)出巨大的不同,并不意味著一些通用的方法就沒有意義挽铁;還是有些東西在很大的范圍內(nèi)行之有效的伟桅。基于此叽掘,我們就可以在承認人與人之間巨大差異的基礎(chǔ)上來建立大家認可的方法楣铁,但是并不能由此期望人們的具體行為會趨同或者可以嚴格預測。
有效的過程方法的意義在于:
- 允許人們更容易地表述他們的想法
- 可以完成一個人無法獨立完成的工作
- 將復雜而又繁瑣的工作自動化
- 使得人們的相互溝通更容易
失敗模式
有如下五種比較普遍的失敗模式:
- 人們總是會犯錯 - 簡單但又常常被人們忽略更扁;敏捷和迭代開發(fā)的巨大進步意義就在于承認人總是會出錯盖腕,但是通過一連串小的錯誤來及早暴露風險;持續(xù)不斷的解決問題而不是固守詳細周密的計劃 - 沒有錯誤的計劃似乎只存在于真空之中
- 傾向于保守謹慎 在最終結(jié)果一致的情況下浓镜,同樣的問題通過不同的方式呈現(xiàn)出來溃列,人們的反應卻有可能大不相同。當我沒可能獲得比較高的潛在收益的時候膛薛,人們總是傾向于去冒險听隐,然后在可能失去某些東西的時候,人們則會傾向于選擇更保守的方式哄啄。一個有很多瀑布模式成功經(jīng)驗的manager(其實這些成功的經(jīng)驗有多大程度上算作成功就很難考量)在一個初級的工程師提出嘗試迭代開發(fā)的模式的時候可能持激烈的反對態(tài)度雅任;他可能更愿意采用傳統(tǒng)的策略风范,能產(chǎn)生“確定“的輸出而不是”可能產(chǎn)生更大收益“但是又”看起來奇怪“的方式
- 習慣的不一致性 如果人們總能保持一致,那么就不會有減肥/鍛煉的問題沪么。問題是我們從來不缺少方法實踐硼婿,缺少的恰恰是實踐這些方法
- 傾向于發(fā)明新的東西而不是研究已有的方案 大概跟人們接受的教育有關(guān) - 鼓勵原創(chuàng)的論文/獨立完成的作業(yè)等等;而不是團隊工作禽车。很多時候人們需要更好的重用已有的成果而不是自己從頭發(fā)明一切
- 自律和適當容忍的妥協(xié) 強調(diào)高度的自律往往是一廂情愿寇漫,然后過度的妥協(xié)又容易導致越來越多的混亂。項目經(jīng)理可能對嚴格要求團隊遵循某個方法實踐所帶來的副作用感到驚訝哭当。譬如XP實踐強調(diào)結(jié)對編程和Coach猪腕,然后很多Team在實踐的過程中卻將重構(gòu)的工作丟下不理冗澈,等待更高級的工程師去做
某些方式總是比其它的更好
盡管人與人之間的差異是巨大的钦勘,然而總有一些方法是更有效的。人們傾向于做的更好亚亲,如果他們
- 從具體的例子開始
- 從容易處理的東西開始著手
- 從已有的東西入手尋找替代/優(yōu)化的方式
還有一些方法也更容易讓人們?nèi)〉梅e極的進展:
- 通過觀察和學習的同時做工作
- 支持精力集中的思考并同時支持積極的溝通 - 設(shè)置安靜時間和公共溝通區(qū)域來加強溝通
- 根據(jù)人們的長處進行任務(wù)分配
- 選擇最好的人才
- 激勵方式的選擇 - 開發(fā)人員的工作激情/成就感/貢獻榮譽感覺
- 清晰有效的反饋 - 越及時效果越好
尋找成功模式
作者長期面試成功項目團隊的經(jīng)驗中彻采,如下的申明頻繁的出現(xiàn): 一小部分人在關(guān)鍵的時間介入,作出了一切需要做的工作捌归「叵欤看起來是很隨意的描述,然而更仔細的審視發(fā)現(xiàn)惜索,如下的一些成功因素慢慢浮現(xiàn)出來:
- 擅長于四處觀望式的掃視 - 設(shè)計文檔未必需要每一個細節(jié)都和實現(xiàn)保持一致特笋,只要大致結(jié)構(gòu)的一致即可。做維護工作的開發(fā)者就可以通過快速的瀏覽找到需要的部分巾兆,剩下的就是具體怎么做了猎物,細節(jié)的準確意義并沒有想的那么大了。文檔只需要保持足夠的精確即可角塑,能完成主要的工作蔫磨,使得人們不用費很大功夫就可以找到對應的細節(jié)即可。Tech Lead僅僅需要大致看一下問題大概在什么地方并知道其它工程師去做即可圃伶,而不是處理每一個細節(jié)
- 人們持續(xù)不斷的學習 - 敏捷過程提出的持續(xù)改進就是這么一個思想堤如,回顧當前迭代中那些值得改進的,持續(xù)的需西和發(fā)現(xiàn)不足窒朋,人們就能不斷的進步搀罢。
- 可以改變的韌性 - 通過團隊的集體氛圍來慢慢提高個體的韌性,使之適應并改變 - 當然并不是每個個人都可適應這個過程侥猩,然后他就會離開
- 主動承擔和貢獻
融合這些成功的因素
是否有融合這些成功因素的方法存在魄揉?自組織團隊的想法給出了一種思路,但是實現(xiàn)的過程自然是充滿崎嶇的拭宁。需要培養(yǎng)這樣的氛圍洛退,每個人都需要能夠第一時間發(fā)現(xiàn)系統(tǒng)中的錯誤瓣俯,不管這個人的職位和角色是什么;他將錯誤傳遞到能夠正確糾正錯誤的人的成本往往決定了整個項目的成本兵怯。
平衡各種策略
很多時候看起來很好的策略并不意味著在大部分情況都是好的 - 譬如讓一個Team的成員坐在一起彩匕。PMDOI認為,我們可以通過具體情況具體分析的策略/工具和方法來真正提高效率和可靠性媒区。一個真正好的策略需要平衡各種足夠好的基本策略驼仪,將其打包調(diào)整其中的某些不合時宜的做法。想想人們常說的袜漩,坐在一起的團隊和面對面的溝通總是能達到最好的效果绪爸;但是為了達到真正高效的溝通(因為這才是最高優(yōu)先級的事情),我們還需考慮到:
- 人們有時候需要安靜的思考和集中注意力的工作
- 有時候需要進行一些安靜的對話來交換一些深思熟慮的意見
- 有時候需要放松的心態(tài)學習一些新的語言/工具等
Osmotic Communication要求人們做的足夠的近以便周圍人的談話都很容易被聽清楚,這樣有什么問題就可以馬上作出反應宙攻;信息傳遞的成本幾乎為零奠货。這樣一些復雜的問題可能會被周圍的專家以最快的速度解決。然后Cone of Silence策略則提出了一種相反的做法:一個或者多個團隊成員坐得距離其它人遠遠的從而可以排除溝通干擾座掘。但是這種策略也有典型的適用場合递惋,譬如Tech Leader本來應該用于安排解決艱難負責的問題,然而由于周圍的人不斷得分散其注意力溢陪,導致復雜的問題沒有被解決萍虽,進度不斷被延誤,進而導致情況更加惡化形真。Cockburn認為杉编,相互溝通的兩個人的距離超過一輛公交車的長度時,溝通的效果就會急劇下降咆霜。
策略的平衡意味著邓馒,安排座位的時候需要考慮某些負面的影響 - 有些時候需要將人們適度分隔開來而不是聚越來越多的人在一個大的空間。當周圍的噪音和干擾越來越大的時候裕便,人們?nèi)菀子X得壓抑和頭疼绒净,很多重要的工作都無法正常的完成。每一種策略都有一定的限制偿衰;明智的決策什么時候Osmotic Communication是有效的挂疆,什么時候它因為人太多而失去意義是個重要的事情。
待續(xù)下翎。