通常情況下,大家對於敏捷的感受就是:大家一起來開站立晨會啦!然后一大早,大家拿着早餐,圍成一個圈,聽一個人在講話。
在很多公司,決定采用敏捷之后,都會從晨會開始,因為很多人覺得敏捷其它模塊都很難學習,就先從最簡單的晨會開始,試行簡單的方法會不會有奇效,抱着這個想法,奇跡是不會發生的。
很多人不知道的是,許多公司都是從晨會中結束敏捷轉型的,雖然開好晨會不簡單,而且也有Know-how。
工具和管理方法實現價值最大化
大家會有一個問題:老布,既然只做晨會不行,那做敏捷有沒有其他衡量指標呢?
我可以很肯定的回答你:有,如果有且只有一個的話,衡量團隊的敏捷指標就是一個月內該團隊寫給自己團隊的代碼占總代碼中的百分比。
為了解決團隊目前工作質量或工作效率的問題而開發的一些工具的代碼,占據所有代碼的百分比,就是團隊的敏捷指標。敏捷的本質是尋找價值,妨礙團隊高效尋找價值的障礙都是“問題”,所以需要利用管理方法和工具來解決問題。通過不斷發現團隊的短板,用管理方法調整或者編寫工具來解決短板,從而釋放團隊每個成員空間,實現個人價值最大化。
假設人工發布的時間需要2個小時,每四次發布有1次要回滾,每周發布一次,請問團隊中誰願意反復做這件事?再假設發布從每周改為每周兩次呢?你會發現,這樣的團隊成員壓力都很大,容易犯錯,這里就是一個短板。所以團隊很有必要花費兩周的時間開發一個自動發布的系統,將以往每次發布兩小時改為成兩分鍾而且支持回滾。
這部分的代碼就是團隊寫給團隊自己的代碼,我們希望持續通過編寫代碼來改進團隊短板。
(圖一:騰訊敏捷工具模塊)
如圖一,為了發展敏捷研發,經過多年的建設,終於構建這么多工具來支撐敏捷實踐。包括CE(Customer Engagement)、需求管理、代碼管理、測試過程管理、發布管理、缺陷跟蹤管理、持續集成管理、項目過程管理、任務管理等。
很多人會有誤解,認為鵝廠規模這么大,人數這么多,隨便擠出一些人都可以完善這些工具。其實這些工具的早期版本都不是專門團隊來完成的,而是業務團隊根據自己的需要逐步開發完善的。
例如,自動發布模塊,就是網站業務團隊最先做的,因為相比較公司內其他業務,網站業務的自動發布比較容易實現,按照版本發布到Server上,就可以對外提供服務了。在當時,絕大多數的客戶端業務的自動發布就沒有那么容易實現了,但是當網站業務團隊的自動發布實踐取得效果后,有了標桿,其它業務團隊都敢於嘗試了。
很快有團隊將自動發布進化為灰度發布工具,自從有了灰度發布工具,很多團隊就發現巨大的好處。在沒有使用灰度發布工具前,當時的業務經常需要切換上線,為了不影響客戶,都需要在凌晨四點左右完成切換。那時候,我還特意買了一個睡袋,在切換上線的時候,前一天晚上10點睡覺,凌晨3點起來操作腳本停掉舊版,然后編譯,啟動新版。觀察一個小時的日志,看看業務是否正常運作。如果不正常就趕緊干掉新版,回復舊版,等第二天白天修改問題之后,晚上再次切換上線。
自從有了灰度發布后,可以在白天黑夜隨時發布上線,逐步切換一小部分用戶使用新版本,如果有任何問題,就可以立即切換所有用戶用回舊版。同時開始查找問題,等修改調整好了以后,再次切換一小部分用戶試用,然后持續觀察用戶的表現和反饋,直至成功所有用戶成功切換使用新版本。
每個業務都會挑選合適自己的重要工具進行開發,取得一定成效后,公司就鼓勵大家互相分享工具,經過三年時間“發酵”,這些工具已經逐步完備,最終騰訊公司敏捷實踐的效率在這些工具的支撐下越來越高。
很多學員會問我,老布你有沒有好的工具直接推薦給我們用啊?我認為,因為每個團隊的性質不一樣,用的工具和腳上穿的鞋子一樣,別人穿着很舒服,但是不一定適合你,只有合適才是最好的。
所以我始終建議團隊根據自己切身情況開發的工具是最好的,但是現在大家比十年前的我們幸福多了,現在Github上有很多Open Source工程,都是用來加強敏捷實踐的工具(如圖二)。
(圖二:開源敏捷實踐工具)
所以現在大家只需要找到一個合適的好工具,覺得適合自己團隊就持續使用,發現問題就自己動手修改,這樣的工具才是最適合團隊所在的行業、業務和團隊特點的,效率才是最高的。
【案例】CPD檢查你的代碼
十年前,我和我的團隊想做靜態代碼掃描的時候,當時只能使用價格昂貴的Pclint工具,非常郁悶的是它只能掃描C語言的代碼,C++代碼暫時還不支持。當時我們通過缺陷審計,發現一個現象——很多程序員每日提交到SVN的代碼占比相當高,都是從其他代碼里Copy-paste過來的,根本沒有修改,直接編譯運行了。只要功能正常,就提交。在面向對象語言的時候,Code高度抽象,就算只有5行代碼都可能新建了某個對象然后這個對象初始化的代碼里還啟動一個線程池,被Copy的代碼在某個地方關閉了線程池。他們在抄代碼的時候根本沒有分析清楚,所以這樣的代碼隱患非常大。
於是我的團隊使用靜態掃描功能就最先開發了一個“CPD”功能(Copy-Paste·Detector)。每天晚上把當天提交的代碼以人為單位進行分析,第二天早上8點前會有一封郵件發送給所有人,郵件標題為《TOP10·CPD·Programmer》,郵件的內容是人名、CPD率、上榜時長。把昨天的代碼里Copy-Paste后並不修改源代碼,CPD率Top10的人列出來,提醒他們當天必須把代碼逐行檢查調整后再提交。如果有人連續兩天上榜,就會額外有一份郵件發送給那個人的直屬Leader,請他幫助解決這個entity,通過這個簡單的方式,團隊千行Bug率大大下降。CPD工具的原理說出來簡單得不能再簡單,但是效果非常好,所以建議敏捷工具根據需要自己開發,這樣才是稱手的敏捷工具。
系列文章#
第一輯:我親歷的鵝廠敏捷轉型
NO.6 如何打造稱手的武器
NO.7 QQ郵箱怎么成為行業第一的
NO.8 你愛上手機QQ么
NO.9 天天系列天天見喲
文章來源:微信公眾號“老布談敏捷”(ID:bootagile)
作者:薛軍/Boots,現任:深圳市一起六企業管理有限公司創始人,騰訊大學外聘高級講師,業問特聘騰訊之道講師。曾任騰訊項目管理通道委員會會長,騰訊項目管理P4專家,敏捷教練,騰訊LBS總監
本文由@薛軍 原創發布於博客園,未經許可禁止轉載。