如何建設(shè)全功能團(tuán)隊(duì)
在這篇文章中,作者帶我們一起回顧了分工歷史,對于技術(shù)團(tuán)隊(duì)影響以及建設(shè)全功能團(tuán)隊(duì)的必要性。enjoy~
團(tuán)隊(duì)的開發(fā)人員撇開需求沉浸在想象中的“完美”程序中;測試人員迷茫的點(diǎn)擊著按鈕試圖搞明白這到底是個(gè)什么功能;設(shè)計(jì)師造出了沒有盡頭的樓梯,更糟的是,客戶愛上了這個(gè)設(shè)計(jì);團(tuán)隊(duì)領(lǐng)導(dǎo)四處救火,力有不逮。種種跡象表明,我們得打破分工帶來的壁壘,建設(shè)全功能團(tuán)隊(duì)——大多數(shù)人能完成大多數(shù)種類工作的團(tuán)隊(duì)。
在一次閑聊中,女友的母親說起實(shí)習(xí)大夫必須輪崗一年才會(huì)進(jìn)行分科學(xué)習(xí),我質(zhì)疑道:“對于致力于心臟病治療的醫(yī)生來說,他豈不是在不相干的學(xué)習(xí)上浪費(fèi)了一年時(shí)間么?”,她母親笑著說:“不這么作,你怎么確信病人的確患有心臟病呢?”不知道為什么,我眼前突然浮現(xiàn)出這樣的場景?測試人員在怯生生的詢問:“這是一個(gè)缺陷么(而不是操作系統(tǒng)/瀏覽器的限制)?”
亞當(dāng)與大頭針工廠
亞當(dāng)·斯密于1973年在描述大頭針工廠的專業(yè)化生產(chǎn)時(shí)提出了社會(huì)分工的好處:提高熟練程度、減少任務(wù)切換時(shí)的開銷、便于機(jī)器的應(yīng)用。我們似乎可以非常自然得推導(dǎo)出重復(fù)設(shè)計(jì)、重復(fù)編碼、重復(fù)測試可以增加相應(yīng)崗位員工技術(shù)熟練度,提升效率,并由此提升企業(yè)的盈利能力。
然而市場的不斷變化讓重復(fù)生產(chǎn)的美夢不在,切換任務(wù)變得越來越頻繁。IT公司不是大頭針工廠,知識(shí)工作者畢竟有別與體力勞動(dòng)者,在勞動(dòng)主體發(fā)生變化的過程中有兩件事情的差異被放大了:一是局部優(yōu)化與整體優(yōu)化的差異,二是正確的做事與做作正確的事情的差異。
有一道數(shù)學(xué)題,假設(shè)每個(gè)開發(fā)人員每天可以完成一個(gè)功能,測試人員每天可以測試2個(gè)功能,團(tuán)隊(duì)由3名開發(fā)人員和1名測試人員組成,那么一周內(nèi)通過測試的功能最多為多少個(gè)?
大多數(shù)人的第一反應(yīng)是5(天)x2(功能/天)=10功能,下面的表格會(huì)告訴你,由于負(fù)載不均衡,測試人員在周一沒有功能可測,團(tuán)隊(duì)其實(shí)無法在一周內(nèi)交付10個(gè)功能。
(表一)
那么我們改變一下條件,假設(shè)團(tuán)隊(duì)中有4個(gè)開發(fā)人員,并且開發(fā)人員可以參與測試,結(jié)果會(huì)怎樣呢?
(表二)
我們最終能夠交付13點(diǎn),產(chǎn)量提高了60%, 如果我們只留下三名全能人員:
(表三)
居然比3個(gè)開發(fā)人員和1個(gè)測試的人員組合還多交付兩個(gè)功能!
我們當(dāng)然有理由質(zhì)疑第二題的假設(shè):“開發(fā)人員可以勝任測試人員的職位”。又或者繼續(xù)討論迭代二的數(shù)據(jù)變化。我對此的的回答是:
第一,以我的觀察來看開發(fā)人員之所以不進(jìn)行測試工作,不是能力不允許,而是主觀上認(rèn)為測試工作是簡單、重復(fù)而枯燥的,不愿意作。客觀上開發(fā)人員們比較貴也更難于培養(yǎng),組織層面不允許這樣的“浪費(fèi)”。
對測試工作的偏見客觀上促成了大量不具備技術(shù)能力的人選擇測試工程師作為職業(yè),而技能不足則一步導(dǎo)致了測試工作傾向于簡單重復(fù)。測試人員在很大程度上無法判斷什么是正確的事情(作正確的事),從而更傾向于熟練的按照腳本進(jìn)行操作(正確的做事)。
第二,我的關(guān)注點(diǎn)不在交付8點(diǎn)還是10點(diǎn),我希望這個(gè)例子能夠引發(fā)大家對于均衡生產(chǎn)的思考。
軟件的需求和實(shí)現(xiàn)可以被細(xì)化,但它畢竟不是大頭針,需求和實(shí)現(xiàn)間往往呈現(xiàn)出關(guān)聯(lián)與依賴,換言之,局部效率的增加無法直接轉(zhuǎn)換為整體效率的增加。而整體效率的優(yōu)化往往依賴于均衡生產(chǎn)(參考表三),即消除生產(chǎn)的波峰(過度生產(chǎn))和波谷(生產(chǎn)不足),避免任務(wù)時(shí)松時(shí)緊,松時(shí)生產(chǎn)力浪費(fèi)(周一時(shí)專職測試人員),緊時(shí)加班加點(diǎn),粗制濫造。
我傾向于認(rèn)為亞當(dāng)·斯密對勞動(dòng)分工論述的假設(shè)是:需求穩(wěn)定,簡單生產(chǎn)。對于IT領(lǐng)域來講,這些假設(shè)還成立么?
擰螺絲的卓別林
不難發(fā)現(xiàn),對分工以及個(gè)體效率的迷信已經(jīng)深刻的影響著IT領(lǐng)域。分工的端倪在招聘時(shí)就已經(jīng)顯現(xiàn),即便對于差異不大的畢業(yè)生們,雇主也會(huì)根據(jù)其極有限的技能,用不同的標(biāo)準(zhǔn)進(jìn)行測試(Java, .Net, PHP等),并在入職后將其冠以前端工程師,后端工程師,測試工程師,支持工程師等不同的頭銜,甚至可能在其可見的職業(yè)生涯中專門負(fù)責(zé)某個(gè)文件的維護(hù)。
整體效率的優(yōu)化要求IT團(tuán)隊(duì)消除技能壁壘,培養(yǎng)多面手,根據(jù)計(jì)劃的的變動(dòng),彈性地調(diào)整任務(wù),達(dá)到各角色和流程之間的平衡。對于IT企業(yè)來說,變化從招聘時(shí)就必須開始。找到擁有學(xué)習(xí)熱情、學(xué)習(xí)能力、學(xué)習(xí)習(xí)慣的人變成了當(dāng)務(wù)之急,員工是否掌握了某種算法、語言或者工具應(yīng)當(dāng)從準(zhǔn)入條件降格為對于其學(xué)習(xí)能力和熱情的一種(不是唯一一種)證明。
整體效率的優(yōu)化要求員工必須持續(xù)學(xué)習(xí)、成長,興趣無疑是成長的催化劑,然而喪失意義的工作卻在不斷扼殺人的興趣。丹·艾瑞里在怪誕行為學(xué)里著述到:
勞動(dòng)者與他自己的生產(chǎn)活動(dòng)、勞動(dòng)目標(biāo)以及生產(chǎn)過程相分離。這就使工作成為非自發(fā)性的活動(dòng),因此勞動(dòng)者就無法對勞動(dòng)產(chǎn)生認(rèn)同或者領(lǐng)略到勞動(dòng)的意義,而缺少了意義,專業(yè)人員可能覺得自己好像電影《摩登時(shí)代》中查理·卓別林扮演的角色,一切都由工廠的齒輪控制,他們根本不會(huì)有全心全意工作的愿望 。
如果員工成長是必須的,那么,幫助員工認(rèn)識(shí)到工作的全貌也是必須的。角色輪換是一個(gè)很好的解決方案。在項(xiàng)目內(nèi)部通過角色互換,不限角色的結(jié)對工作,加強(qiáng)不同角色,不同模塊間的知識(shí)傳遞,打破技術(shù)壁壘,幫助員工從不同視角理解項(xiàng)目,鍛煉技能,進(jìn)而增加團(tuán)隊(duì)均衡生產(chǎn)的能力。
在我看來,進(jìn)行角色輪換的最大阻礙在于編程能力的普遍缺乏,大多數(shù)的測試、需求分析工作(鑒于大多數(shù)團(tuán)隊(duì)所處的地位,需求分析師實(shí)在言過其實(shí),更精確的名字是需求整理師),迭代管理,簡單的客戶交流,學(xué)習(xí)曲線都非常低,任何成員都可以在師傅的帶領(lǐng)下迅速掌握工作要點(diǎn),然而編寫程序卻是個(gè)例外,即便對于基礎(chǔ)良好的新人,在經(jīng)驗(yàn)豐富的導(dǎo)師帶領(lǐng)下,也需要2個(gè)月左右才可能寫出比較體面的單元測試、較為面向?qū)ο蟮某绦?。在分工的體制下,用別的角色輪換開發(fā)人員幾乎是個(gè)死局。
非常奇怪,IT領(lǐng)域如此的看重抽象能力和邏輯分析能力,可為佐證的是層出不窮的建模語言,模式,領(lǐng)域模型,架構(gòu)。然而最能訓(xùn)練抽象能力和分析能力的一項(xiàng)活動(dòng),卻僅僅有選擇性的開展,這是不是意味著我們認(rèn)為IT項(xiàng)目可以在大多數(shù)人無法(也沒有能力)達(dá)成共識(shí)的情況下順利展開并成功交付呢?在我看來,編寫程序不僅僅是一項(xiàng)技能,一種思考方式,還承擔(dān)著構(gòu)造IT團(tuán)隊(duì)成員間共同經(jīng)驗(yàn)區(qū),提高交流效率的目的。
一個(gè)值得從其它行業(yè)借鑒的經(jīng)驗(yàn)是首先展開基礎(chǔ)素質(zhì)培養(yǎng),再進(jìn)入領(lǐng)域培養(yǎng)專業(yè)素養(yǎng),換言之,避免過早的分工,所有新人從編程開始職業(yè)生涯,在公司的體制層面促成每個(gè)新人都能經(jīng)歷力所能及的所有角色。在具有了一定的基本素質(zhì)后,在員工對工作內(nèi)容和自身興趣有了充分的了解后,根據(jù)個(gè)人意愿進(jìn)入領(lǐng)域發(fā)展專業(yè)技能,興趣將成為員工成長的內(nèi)在動(dòng)力,而良好的基本素質(zhì)將使員工有能力在專業(yè)崗位上施展自己的想法。
同時(shí)公司應(yīng)當(dāng)鼓勵(lì)員工跨界工作,《應(yīng)用Selenium和Ruby進(jìn)行面向領(lǐng)域的Web測試》的作者是擁有卓越能力的開發(fā)人員,他曾經(jīng)進(jìn)行了相當(dāng)長時(shí)間的測試工作,在其它人抱怨自動(dòng)化界面測試難于維護(hù)時(shí),他優(yōu)秀的抽象能力、分析能力已經(jīng)幫他提煉出測試模式,識(shí)別出缺陷,找到了優(yōu)雅高效的工作方式并誕生了這篇優(yōu)秀的文章。
丹·艾瑞所言于我心有戚戚焉。
知行合一
我們曾用9個(gè)月的時(shí)間在團(tuán)隊(duì)中進(jìn)行了建設(shè)全功能團(tuán)隊(duì)的初步實(shí)踐,在分享具體實(shí)踐前,我希望下面的總結(jié)性數(shù)據(jù)能幫助你獲得一些背景知識(shí)。
項(xiàng)目處理的是期貨交易領(lǐng)域,使用的技術(shù)棧是C#, ASP.NET MVC。團(tuán)隊(duì)主要由八名開發(fā)人員以及兩名測試人員組成(其中一名測試人員在項(xiàng)目中期加入),其中4位是畢業(yè)生,3位具備工作經(jīng)驗(yàn),但剛剛加入Thoughtworks,只有一位開發(fā)人員具備.Net開發(fā)經(jīng)驗(yàn)。
下面是全部35周的燃盡圖,黑色實(shí)線代表項(xiàng)目的范圍,綠色實(shí)線代表開發(fā)完成的速度,藍(lán)色實(shí)線代表測試完成的速度,每周為一個(gè)迭代。
在這張圖的大部分區(qū)域內(nèi)藍(lán)色和綠色是重疊或者非常接近的,這意味著團(tuán)隊(duì)每迭代開發(fā)完成的功能恰好與測試人員的處理能力對齊。一方面,這歸功于測試人員自行實(shí)現(xiàn)的自動(dòng)化測試框架對效率的提升,另一方面,開發(fā)人員參與測試也起到了平衡開發(fā)和測試速度的作用。
讓我們截取開發(fā)過程的一部分,觀察每個(gè)迭代的速度,在下面這樣圖中,橫軸代表第幾個(gè)迭代,縱軸代表每迭代完成的功能點(diǎn)數(shù)。
從項(xiàng)目經(jīng)理的角度看,團(tuán)隊(duì)的交付速度很穩(wěn)定,從15周開始直到項(xiàng)目的結(jié)束,我們都可以放心的使用12點(diǎn)每周的經(jīng)驗(yàn)數(shù)據(jù)進(jìn)行估算、計(jì)劃工作。事實(shí)上團(tuán)隊(duì)在后期所處理的工作種類越來越多,包括了正常的開發(fā)任務(wù)、公式轉(zhuǎn)換、性能調(diào)優(yōu)、驗(yàn)收測試、支持等。在這種情況下,每個(gè)人都具備跨角色,跨模塊工作的能力才保證了可持續(xù)的交付節(jié)奏。
在這篇文章中我們一起回顧了分工歷史,對于技術(shù)團(tuán)隊(duì)影響以及建設(shè)全功能團(tuán)隊(duì)的必要性 ,在下一篇文章中我將詳細(xì)分享一些實(shí)踐以及經(jīng)驗(yàn)數(shù)據(jù)。
作者:胡凱,ThoughtWorks中國區(qū)總經(jīng)理
本文由 @胡凱 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載。
題圖來自 Unsplash,基于 CC0 協(xié)議
- 目前還沒評論,等你發(fā)揮!