創建敏捷團隊
簡介
創建敏捷的軟件開發團隊并不像表面看起來那么容易。很多管理人員和團隊主管會雇傭技術合格的人組成團隊,扔給他們某種敏捷過程,然后就希望所有事情都像書上說的那樣有效。這種方法不僅不現實,而且非常容易失敗。本文將會描述成功團隊的要素,并說明我們應該如何創建這樣的團隊。
成功團隊的要素
成功的敏捷軟件開發團隊由技能熟練的開發者組成,他們已經確立了團隊價值,擁有良好的溝通,并且總是尋找改善的機會。對于成功來說,盡管這些因素并非絕對必要,然而擁有全部因素會為我們鋪就一條通往成功的捷徑。
核心原則
對于想要為團隊確立什么樣的文化,每個人都有自己的想法。除非管理人員雇傭自己非常熟悉的人,否則就很難將文化的愿景變為現實。我們很早就發現以下重要特征:擁有客戶的視角、有效地協作、通過事實管理,以及專注于執行等等。具體執行了這些原則的團隊就具備了成功的條件。執行這些核心原則的團隊成員會表現出大量良好的行為,諸如向客戶提問、像客戶那樣思考、愿意請求幫助、愿意幫助他人、根據具體的事實而不是個人意見來做決定,以及努力交付完成的代碼。
有效溝通
有效溝通對成功起著決定性作用。與人面對面交流是最有效溝通的方式之一。當人們聚在一起的時候,就更容易得到好主意。有效溝通另一個決定性因素是專注。如果沒有一個定義好的主題能夠讓參與者集中注意力,那么談話就不會有好的效果。有效溝通第三個重要因素是讓談話專注于事實和想法。當個人的意見取代了事實和想法,那么談話很快就會變為為了個人勝負的爭辯。
好的成員
成功團隊最重要的因素就是人。軟件開發團隊需要有才能的人,需要熟練的開發者來使用新的技術創建復雜的系統。創建這樣復雜的系統不可能由一兩個人完成,因此一個團隊是很必要的。這樣,就需要開發者也必須具有良好的團隊精神。
不斷提升
我們知道,當創建新的團隊來開發新系統時經常會失敗。能否從發生的錯誤中學習到經驗和教訓,這就是成功團隊和失敗團隊之間的不同。只有檢討過去的失敗并且做必要的改善,團隊才能夠不斷進步。
創建團隊
關注溝通
從創建公司開始,我們就關注溝通。我們辦公室的物理布局是開放的。開發團隊坐在一個大的開放的屋子里。每個開發者都有自己的桌子,并且以方便溝通的方式分組。這個開放的環境使得溝通更加容易,因為人們不會藏在自己的小隔間里面,從而談話都是“公開的”。(重要的是,每個人都要表現得謙虛和職業化,這樣環境才不會變得不可忍受。)
確立核心原則
當創建團隊的時候,我們就意識到需要確立團隊所要表現出來的特征。開始我們認為日常的交互會為團隊注入我們所尋找的特征。捕獲到這些特征,并將其普及是很重要的,這可以保證所有團隊成員都恰當地關注某些價值,而我們認為對成功來說這些價值是很重要的。對我們來說,確立想要團隊表現的特征給了我們真實的體會,其中之一是當前某些團隊成員不會表現出那些特征。我們和團隊一起做了大量工作,以學習并展現這些特征。有些團隊成員的反應很積極,而有些則不然。在一些情況下,我們需要讓某些人離開團隊。我們得到的另一個體會是:我們的面試過程并沒有篩選出想要的人。早先的面試過程過于專注于候選者的技術能力。我們的選擇過程尋找的是技術最熟練的人。這個標準幫我們得到了非常聰明而且能干的開發者,但是并不能總是為我們帶來能夠在團隊環境中表現出色的人。
面試過程
尋找具備足夠技術能力并且適應現有文化的人非常困難。一方面,客觀衡量候選人的標準能夠讓我們對所有候選人進行快速篩選。另一方面,純粹的客觀標準不會找到具有“軟技能”的人,而這樣的能力有助于人們在團隊環境中行使職責。我們在如何高效準確地探索這些領域做出了很多努力。當前的面試模型是一個多階段的過程。過程中的第一步是電話面試。通過電話面試我們可以快速向候選者介紹公司,并且在較高的層次上調查候選者。在電話面試中,我們會涉及一些基本的技術能力、對于敏捷開發的想法和理解,以及某種層次上的個人反省。通過談及這些方面,我們能夠知道某人是否會在我們的環境中發揮作用。如果候選者通過了電話面試,那么我們會為其安排現場面試。該面試被分成三個部分:技術、過程、個人。對于每個部分,我們都會指定至少兩個團隊成員,從而團隊的大多數人都會與候選者交流。面試的技術部分關注的是基本的技術能力,并且包括動手編程練習。過程部分會涉及測試、問題解決以及結對編程方面的思想,還有其他主題。個人部分會查看沖突解決、個人激勵以及總體的心理穩定性。我們已經發現這個過程很有效。如果三個部分都完成了,而且我們對候選者的加入沒有任何猶豫,那么這個候選者將會在我們團隊中很好地工作。
過程改進
過程改進對于成功的軟件開發團隊也是非常重要的。我們不僅從用來編寫和部署代碼的角度檢視過程的改進,而且會檢視用于為工作安排優先級和雇傭新員工的過程。“3×3”的復審就是我們用于改進的一種機制。整個團隊聚集在一起,每個團隊成員都必須提出過去三個月中得到的正面的東西,以及過去三個月得到的負面的東西。然后針對正面組和負面組,每個團隊成員都會各得到三張選票。這些選票會投給每個列出的項目。當復審完畢,我們會從高層次的視角看到團隊認為哪些是正面的,認為哪些需要做出改進。這個視角有助于讓團隊與已明確的團隊特征保持一致。過程改進的另一個方面是面試的過程。因為對于敏捷開發技術的理解已經成熟,所以我們需要找到的人不僅僅是技術高手,而且要具備很好的團隊精神。經過大約十八個月的過程,我們修正了現有的面試過程并使其不斷完善,所達到的效果是:難以適應我們的環境的候選者將無法通過。這個改進的過程讓我們對雇傭的人更有信心。在執行現有過程和持續提升過程之間,我們已經找到了一個平衡。當過程中存在問題的時候,我們就會花費一些時間來評估它。如果是整體上的問題,我們就會試圖找出所能做的增量式的改變來改進過程。如果不是全體的,那么我們通常會先采取觀望的態度,然后再做出改變。
結論
通過很短的一段時間,我們已經學到了一些對于創建成功的敏捷開發團隊很重要的知識。確立團隊價值并堅持下去,這幫助我們創立了成功的文化,并且改進了我們的面試過程。促進好的溝通除去了很多團隊的阻礙。改進我們的面試過程幫助我們識別合格的開發者,他們會很好地與現有團隊融合。復審我們現有的過程幫助我們持續提升團隊的水平。