吃自己的狗糧
當開發人員坐在測試工作站前,你將會詫異于多少開發人員因為繁瑣的步驟而不會安裝/升級自己參與制作的軟件,多少人認為自己設計的復雜配置是荒唐的。在很多情況下,這都不是安裝、配置的問題,而是設計問題,將開發和測試過程分離把痛苦轉嫁給了另一個團體(測試、用服、用戶),開發人員喪失了親身使用軟件的機會,從而無法發現問題的存在。暴露并修正這些問題,是將開發人員和測試人員進行輪換的主要價值之一。從我們的經驗數據看,開發人員可以在一周內掌握大多數的測試技巧,個人的建議是從經驗豐富的開發人員開始輪換,一方面他們更能認識到測試的必要性,便于交流,也便于形成表率。另一方面豐富的經驗更容易幫助他們察覺到問題的存在。其它的一些要點是:
一對一的充分交流,讓開發人員認識到進行測試工作的價值和目的。
引導開發對痛點進行思考、改進。改變測試簡單、重復的工作面貌,要對開發人員形成挑戰。
一周輪換2天持續數周或連續輪換2星期為宜。
睜開眼睛看大象
開發人員習慣于正確性驅動,然而正確的返回結果卻不一定是必須的,有時甚至是一種浪費。我們項目所需要處理形如1001的期貨時間戳,10代表2010年,01代表一月份。開發人員自然想到了如何區分1910年、2010年、2110年的問題。于是復雜的內部表達被設計出來,用于推斷正確年份。這是必須的么?如果我們能了解到客戶大的壓力在于半年后項目能否成功上線替換掉現有無人能夠維護的應用,而不是100年后才可能出現的問題,我們是否能在類似的技術決策中,做出更聰明的選擇呢?幫助開發/測試角色獲取更多的信息,讓他們了解到制定需求的上下文,而不僅僅是需求是什么;讓他們更高的層面認清各個故事之間的關聯,能夠分辨可以給客戶帶來大價值的任務,這是將開發角色/測試角色與分析角色對換的主要價值。一些要點是:
在進行分析工作前,開發人員需要完成多個模塊的開發,而測試人員好完成開發輪崗,否則收效甚微。
分析工作可以兼職進行,我們認為比較有效的方法是每天下午花40分鐘讓開發/測試人員在教練的帶領有重點的分析一、兩個故事。
重點放在提供一套思考框架幫助新手梳理分析思路,我們發現一個有效的方法是結對工作、獨立思考、演講并點評。(參見結對工作,不止與結對一節)
根據我們的經驗,兩周全程跟蹤式的結對分析足夠幫助新手初步掌握分析思路,教練可以考慮逐漸減少在新手思考過程中的侵入,再經過大概2個月的練習,新手基本可以獨立工作。
和客戶對話
在進行過分析角色的輪換后,可以進一步利用需求管理作為主線讓團隊成員參與到客戶交流中,慢慢削弱項目經理的客戶聯系人角色,其主要價值在于:
提升交流質量,一線人員常常比項目經理更了解產品。
展示開發人員的能力,增強客戶信心。
弱化項目經理在客戶眼中的重要性,為未來平滑的取代項目管理者,減少開銷作準備。
幫助技術人員掌握交流技巧、提升團隊能力。
個人建議是:
從例行的功能展示會(showcase)開始,讓每個成員練習從客戶的角度進行思考(客戶想看什么?),鍛煉語言能力,消除與客戶交流的恐懼感,并且讓客戶熟悉開發團隊的每個成員,習慣開發團隊的交流方式。
由多人分別準備客戶進行電話會議中需要討論的議題,每人深入思考的一、兩個問題,通過充分思考彌補經驗、技巧上的不足。
結對完成發給客戶的郵件,讓另一雙眼睛檢查有沒有把該說的問題點到,表達方式、方法是否得當。
提供一套與客戶交流的思考框架,并在與客戶的交流中不斷強化它。我們采用的框架是“客戶,交付,流程,員工”,團隊成員在思考問題時,首先從這四個點出發再逐層展開。
這項練習需要貫穿項目始終,對于團隊成員無差別的進行,我們的經驗數據是經過5個月左右的練習,項目經理不需要出現在與客戶的例行電話交流中了。
寫程序,我行么?
測試人員普遍編程技術能力欠缺,同時有常常對編程這一未知的經驗產生恐懼。從經驗看,如果測試人員不能編寫、維護自動化測試,測試工作將很快成為交付瓶頸。通過編程,讓測試人員掌握技術,避免瓶頸的出現是測試到開發角色轉換的主要價值。我們所采取的步驟是:
與測試人員結對完成簡單的編碼任務,不斷樹立信心。在這個團隊中,我們從設計與實現自動測試框架開始,親手設計的框架讓測試人員更有能力來編寫、維護測試,同時增強了編程的信心。
在測試人員消除了編程恐懼、具備編程基礎后,安排測試人員與開發人員結對進行功能開發。
在這個過程中,必須首先要幫助測試人員正視編寫程序的必要性以及消除恐懼,同時針對每天的工作內容留一些家庭作業效果也非常好。必須承認的事實是即便在完成輪換后,測試人員較開發人員還有一定距離,然而我們得到了一個意外的收獲:進行過輪換后,再討論需求時,測試人員越來越熟練的使用開發術語與團隊交流,越來越多得參與討論,甚至主導討論,她開始直接引用核心組件的設計思想來推導測試用例,不斷質疑和挑戰開發人員,極大的提升了交流的效率和功能實現的質量。從經驗數據看,大致需要3個月的時間測試人員可以達到在輔導下完成功能的程度。