本文寫于2013/8/18,謝絕無授權(quán)轉(zhuǎn)載
本文是第三部分霎迫。
信息交換和流動
如果我們將軟件開發(fā)活動看作是協(xié)作游戲爽室,那么如果Kim知道一些Pat需要的信息,則項目的進度就取決于:
- Pat需要花多少時間了解到Kim知道他想要的信息
- Pat和Kim需要耗費多少時間和其它成本來完成對于信息的交流和轉(zhuǎn)移
各種情況的開銷
有六種不同的情況可以考量:
- Kim和Pat在同一臺計算機前做結(jié)對編程已维,這樣的交互成本幾乎為零行嗤。
- Kim和Pat在相鄰的位置上;Pat可以通過觀察Kim知道他可能在找某些東西而他恰好知道 - 有一些發(fā)現(xiàn)問題的成本
- Kim和Pat坐在兩個背對的位置垛耳,只有Kim主動提出問題栅屏,否則Pat不可能知道他想要某些信息
- Kim和Pat坐在一個有一堵墻隔開的相鄰位置,Kim必須站起來堂鲜,看看Pat是否在位置上栈雳,然后才能交互信息
- Kim和Pat坐在不同的隔間,甚至不同的樓層缔莲,kim必須走過去看看哥纫,這時候Pat可能不在位置上!
- Kim和Pat在不同的辦公區(qū)或者不同的地方痴奏,他們的溝通和交互就很少能有效和及時
如果用需要花費的時間和精力為參考單位(ergo-seconds)蛀骇,那么上述不同情況的開銷是遞增的。項目成本的上升是和人們需要花費多少時間來理解彼此的想法是成正比的读拆。
Osmotic Communication
寫代碼/閱讀/學習的同事擅憔,我們隨時提取周圍環(huán)境中發(fā)生的談話,利用背景噪音的模式檐晕,選取我們關(guān)心的內(nèi)容隨時參與討論暑诸,對于不關(guān)心的則過濾出去。這種方式的溝通極大的降低了信息流動的成本棉姐。辦公環(huán)境的部署過于分散可能有不提問題造成的潛在時間開銷屠列,信息傳輸?shù)拈_銷和人們無法在談話中隨時給出意見的額外開銷。根據(jù)此理論伞矩,贊助物理分散的分布式團隊需要三思而行笛洛。然而簡單將所有人扔在一起也未必像相像的那樣可以很好的解決問題。
人們在傳遞什么樣的信息乃坤?團隊個人的習慣偏好如何苛让?不同種類的信息是否會相互干擾?很常見的做法是湿诊,將負責實現(xiàn)的程序員安排在大樓的一側(cè)狱杰,而將負責需求分析和商業(yè)策略領(lǐng)域?qū)<野才旁诹硪粋?cè);因為他們彼此討論的話題往往形成很強的噪音厅须。然而這種方式也有明顯的問題:
- 兩者之間溝通的成本變高
- 兩個團體可能形成自己小的社區(qū)并進而對對方進行指責和抱怨
Cockburn的偏好是將一個商業(yè)專家安排在幾個程序員的中間仿畸;如果做不到,那么通過其它的方式加強他們之間的溝通和理解,譬如定期的會議错沽,審查等簿晓。Feature team的做法是鼓勵跨只能的團隊,用Feature的方式將各個領(lǐng)域的人聚集在一個團隊千埃,減少信息溝通的成本憔儿,加快信息的流動。
個人偏好也是個需要考慮的問題放可,譬如有的程序員就是喜歡自己安靜的空間谒臼,不希望有很多的背景噪音干擾。還有些人對哪些人在自己的周圍有強烈的偏好 - 如果某個高級的程序員由此選擇離開耀里,那么成本之高就變得無法接受蜈缤。因此調(diào)整位置的時候,需要盡量考慮到個人的偏好备韧。
信息輻射器
信息輻射器可以顯示任何一個路過的人都可以看到的關(guān)于項目的信息劫樟;這樣他們就不會專門跑過來問某些上面已經(jīng)有的信息。這樣做的好處有兩點:
- 輻射器上的信息總是隨著時間的變化在實時更新
- 人們花費很少的精力就可以注意到這些信息
白板墻可以作為很好的信息輻射器织堂,而公共的Wiki或者Web頁面就不是叠艳;因為人們不用什么力氣就可以隨時看到墻上的東西,而web頁面需要人們動鼠標打開那個網(wǎng)址易阳。
人們可以用輻射器顯示:
- 下個迭代的任務分解情況
- 每天的任務完成進度情況 - burndown chart等
- 自動化測試通過情況和通過率
- 回顧會議的輸出
- 驗收測試通過情況
熱空氣理論應用
很多公司都意識到在咖啡機旁邊放一些白板或者宣傳欄的益處附较。人們可以在停下來聊天的時候注意到這些公開的信息。但是還有一個重要的地方不能漏掉的是潦俺,我們要盡量確保這些東西在視線之內(nèi)拒课,或者可以被清晰的聽到。人們在討論某些東西的時候事示,可以在身邊隨手可得的白板上寫下自己的設(shè)計思路和想法早像,快速的和對方溝通。
任何一個項目團隊都應該力求減少發(fā)現(xiàn)和傳遞信息的整體開銷肖爵。這意味著隨時發(fā)現(xiàn)并加速信息的流動和交換卢鹦,利用Osmotic Communication的好處,注意潛在的問題和限制劝堪,最終減少成員之間信息交換的成本冀自,搬開座位安置不合理造成的障礙。
跨越溝通交流的溝壑
為了提高溝通的效率秒啦,我們需要提高信息的發(fā)送方和接受方在可能存在溝通障礙的時候能夠盡最大的可能跳過這些障礙的可能性熬粗。雙方應該能以最快速方便的方式提供反饋,并盡可能地消除可能存在的希望表達的意識偏差余境。人們在溝通的時候驻呐,很可能使用語言之外的其它方式來表述意圖(可能是積極的但也可能是消極的負面反饋)灌诅,如
- 距離上的疏遠或者靠近
- 空間感覺和反應(視頻聊天就在這方面缺失了空間信息)
- 人身上的體味對方是否習慣或者反感
- 肢體上的接觸
- 聲音語調(diào)的變化
- 肢體語言
- 提問回答的熱情程度
- 是否有其它方面的干擾
- 相互之間的信任和愿意從對方學習的情緒
- 是否使用共享的信息輻射器來共享常見的信息
上邊這些因素和機制利用得當能夠極大的提高溝通的效率。反之含末,移除其中一些延塑,人們就不得不用
- 電話 - 無法從物理上解除對方
- 電子郵件 - 沒有聲音
- 單向的溝通
如果這些機制都沒有被很好的利用,就會出現(xiàn)文檔作為溝通的主要方式答渔。因而好的項目領(lǐng)頭人會推薦如下這些實踐:
- 將所有人丟在一個會議室里邊
- 保持每個團隊的短小精干
- 多用白板表述意圖,而不是負責的繪圖軟件
- 辦公區(qū)的白板和咖啡角隨處易得
當然這些warmmer communication方式僅僅使用于傳遞想法和真正溝通的時候侥涵。傳統(tǒng)的cooler communication方式仍然在其它一些場合發(fā)揮著重要作用沼撕。如果一個高級設(shè)計人員在會議中始終占據(jù)著發(fā)言權(quán)和白板,那么系統(tǒng)自組織性的喪失就會很快讓溝通變得更加的困難芜飘。郵件的允許人們發(fā)送之前仔細審視的特點更容易讓人們澄清他們真正表述的觀點 - 如果這些觀點需要慎重的思考的話务豺。
團隊即社區(qū)
一個團隊即時一個社區(qū),每時每刻都有很多信息在流動嗦明;但是每個團隊個體成員可能有不同的興趣和目標笼沥,有自己的專長和側(cè)重。在一個高效的團隊中娶牌,成員通過pull的方式提取自己感興趣的信息奔浅,反饋給其它成員。人們根據(jù)整個團隊的方向來協(xié)調(diào)這些信息的討論和流動诗良;因此整個團隊需要保持一致的方向汹桦。
小幅度改進
只需要讓每個人改變一個小小的方面 - 這些方面很可能對他個人而言是無足輕重的,最終也可以帶來很大的整體效應鉴裹;因為每個人都向著共同的目標改進一小點舞骆,所以每個人對變化的感受都是很細微的,但是因為人們對其它密切相關(guān)的同事貢獻出他自己的想法径荔,而不是各干各的督禽,最終整個團隊的效率會得到巨大的提升。
為了達到真?zhèn)€團隊大方向上的一致总处,開發(fā)人員和項目利益相關(guān)人需要討論和定制每個成員都需要認可的整體決策狈惫,這也同時要求很多決定必須是團隊整體的承諾而不是經(jīng)理們的個人意愿。在項目發(fā)展的過程中辨泳,優(yōu)先級可能發(fā)生巨大的變化或者調(diào)整虱岂,這個時候,所有人必須被重新集中起來溝通這些變化菠红,確保所有人都知道并且同意這個變化第岖。
沖突和紀律
團隊保持緊密一致不意味著不能有沖突發(fā)生。一個團隊中幾乎沒有沖突發(fā)生也是不正常的试溯,因為這很可能意味著大家可能更愿意保持沉默不再說出自己的真正想法蔑滓。當人們向團隊中的其他人掩蓋一些信息的時候,潛在的開支就默默地急劇上升。人們需要在正常的沖突中討論出最優(yōu)的方案使得各方一致滿意键袱;這樣的結(jié)果恰恰是更有利于最終問題的解決燎窘。
良好的社區(qū)紀律需要人們用對他人有益(當然間接對自己有益)的方式來共事。它需要成員
- 按時參加會議
- 回答別人提出的問題蹄咖,如果知道答案的話
- 不煩于提出注意到的狀況
- 遵從整體的編碼規(guī)范/傳統(tǒng)
- 使用一致的代碼庫
這些要求對一些編碼規(guī)范不滿的程序員通過協(xié)商的方式定制出共同認可的編程風格 - 雖然個人可能不認可當前的規(guī)范褐健,但是通過協(xié)商得到稍微看得過去的規(guī)范也比完全沒有強。當然澜汤,這些紀律需要盡可能在正常的工作時間內(nèi)實施蚜迅,而不是通過加班來延長工作時間。
團隊建設(shè)
好的團隊建設(shè)最好的方式是通過一些小小的成功來實施俊抵,不管是多小或者多大的成功谁不。混亂的大規(guī)模團隊建設(shè)活動在很多情況下可能僅僅是浪費錢財徽诲。真正的團隊建設(shè)可以通過
- 使團隊正在凝聚在一起 - 譬如讓物理上分散的團隊能盡量經(jīng)常見面刹帕,通過共同的工作取得一些進展,然后不時將這些人放在一些社交活動中谎替。
- 產(chǎn)生成績 - 這樣可以產(chǎn)生和傳遞正能量偷溺,消除恐懼和不信任感。
團隊文化背景差異和協(xié)作
團隊的溝通和交互需要更多的采取協(xié)作而非合作的形式钱贯。協(xié)作意味著人們通過頻繁的交互和溝通達成一致意見亡蓉,而合作則意味著通過分工/各自獨立工作/集成的方式來達成目標。不同的文化背景可能對這些方面有不同的假設(shè)前提喷舀,不過敏捷方法論的做法是盡可能得通過協(xié)商達成一致砍濒。
具有多個領(lǐng)域特長的專家(譬如精于項目管理和設(shè)計傾聽的程序員)可以在不同的對象之間充當翻譯,以便提高不同的專業(yè)人員之間的溝通效率硫麻。每一個人都需要更多的聯(lián)系實踐和傾聽的技巧:不管對方的看法多么的瘋狂和顛覆爸邢,先那樣聽,然后再決定是否要反對拿愧,因為那些瘋狂的論斷可能在另外一個價值體系里邊確實司空見慣的常識杠河。
視團隊為生態(tài)系統(tǒng)
一個軟件項目的建立同時也創(chuàng)建了一個新的生態(tài)系統(tǒng),這個系統(tǒng)由特質(zhì)各異/文化背景相左的個體組成浇辜。觀察這個生同系統(tǒng)的要素券敌,我們可以得到
- 辦公室的墻壁成為隔離的壁壘,公共的空間提供交互場所
- 特性各異的個體好比不同的物種
- 每一個具有不同特性的個體的工作方式極大得影響著整個生態(tài)系統(tǒng)
每一個項目團隊都是獨一無二的柳洋,原則上并沒有太具體的原則和實踐可以誤差別地施加于你的團隊待诅。
- 只有團隊中的人才可以決定什么樣的方式在那個特定的環(huán)境中工作的更好 - 調(diào)整環(huán)境來服務你的團隊
- 如果團隊中一些人有很好的方法學知識,他就能很好的回顧和反思他觀察的并逐步改進 - 發(fā)現(xiàn)每個人的長處熊镣,找到一個最好的方式以便發(fā)揮各自的優(yōu)勢
- 視每個團隊的方法實踐為一種新的建設(shè)卑雁,沒有一種現(xiàn)有的辦法可以不經(jīng)修改完全適用
關(guān)鍵的團隊自身需要通過不斷的反思來自適應募书,逐步改進工作的方法,并逐漸找到更優(yōu)的方式测蹲。
Ken Auer的程序員辦公室
這是一種典型的值得參考的辦公環(huán)境:
- 一個大的用于編程的房間莹捡,中間是結(jié)對編碼區(qū)域,四個長桌子圍成長方形扣甲,人環(huán)座四周篮赢,長的一側(cè)的桌子允許兩對人工作,短的一側(cè)允許一對琉挖,這樣可以容納最多12個人結(jié)對
- 編程辦公室的四周靠墻壁的地方放置用于私人空間的編程工作 - 人們可以再這里創(chuàng)建私有的空間來做一些不受打擾的思考工作
- 編程辦公室的南邊是接待室和銷售人員辦公室荷逞,設(shè)備和浴室也在這一塊兒空間;接待室在中間相隔粹排,實現(xiàn)動靜分離
- 編程辦公室的西邊是廚房和與之相隔的更遠一點的會議室
- 西南是圖書館和客戶辦公室,圖書館在中間做一個動靜分隔的作用
待續(xù)涩澡。