從敏捷工程實踐中獲益的五種途徑
創造有用的軟件是門工藝。這是沒有非黑即白的成功公式的。但是,卻有一些敏捷工程實踐,實踐證明它已經屢次為企業增加了價值,但前提是要考慮周全之后再使用。在本文中,我將與大家分享5條具體的途徑,你的企業能夠通過這些途徑從敏捷工程實踐中獲益。
(假設我們使用Scrum + 極限編程(XP)= 敏捷這條基本公式,那么在我講敏捷工程實踐時就會談到公式中與XP相關的那一部分,比如測試驅動開發、結對編程和持續集成。)
James Shore在一篇精辟的博客中說:
“與XP(極限編程)相比,Scrum更加簡單,對原有工作幾乎也產生不了多大的影響,所以我看到很多人是從Scrum開始入手的。但其中的問題是,從Scrum開始入手的團隊比從XP開始的團隊多得太多了。XP團隊在開始時會經歷更多的痛苦,但在第一年就會達到高效的狀態。”
我不僅同意他所說的,而且也親眼見過很多次這樣的情況。XP很難。它難在需要嚴格的紀律,另外,它的好處雖多卻有時難以立桿見影。
我的父親是一名牙科醫生。他有一次告訴我說“找一位好的牙科醫生是很難的。牙醫能補牙或者殺死牙神經,但你5年內不會知道他做得好不好,因為你需要一段時間之后才知道他補得到底好不好。”XP與之非常類似。
我清楚最好的軟件開發人員(而且知道上千名)在高壓環境下是最遵守紀律的。
許多開發人員體驗了敏捷/Scrum/精益/XP的做法。但是,嚴格的截止日期臨近時,或者團隊已經拖期時,再或者公司要求團隊“快速完成”時,他們還能維持多高的紀律水平呢?
There are many XP practices. The most valuable ones for a business are:
現在有很多XP實踐,其中對商業而言最有價值的是:
測試驅動開發—TDD是你的商業安全網。因為測試是在編碼之前完成的,所以寫完的測試一定會運行失敗,接下來再寫代碼使測試可以通過。TDD保證你的產品功能,不管公司和技術團隊實現的是大規模的變更還是小規模的變更。
結對編程—讓2名開發人員寫同一段代碼,使用同一個鍵盤和同一臺顯示器。因為結對大大降低了浪費的時間和缺陷,所以能帶來更高質量的代碼,并帶來高水平的協作。
集體代碼所有制和持續集成—如果每段代碼不只有一個人熟悉,那么就不會有什么交流瓶頸了。把代碼持續集成到一個主干可以避免重復和不匹配的代碼。
重構—在當時的情況下,寫的代碼是解決已知問題的。通常,團隊巧妙地解決了他們的問題,然后持續重構和修改代碼,確保代碼庫能以最為高效的方式不斷滿足業務最新的需要。
然而給定的XP很難,它需要連續的訓練和一定的時間保證才能做得好,高管們要的是速度。技術總監們、副總裁們、首席執行官們說“我希望我的工程團隊獲得更好的敏捷工程實踐效果,使我們變得更快。”
最初,我同意 James Shore所說的,XP的確很難,實際上它違反了敏捷幫助團隊更快的理念。事實上,XP有陡峭的學習曲線,而且很自然的是,這需要一定的學習時間,學習XP的團隊肯定比什么都不學的團隊更慢。
所以,如果“更快”不是敏捷工程實踐真正的價值,那么什么才是它真正的價值呢?
我認為,敏捷工程實踐真正的價值是,它們讓公司以某種方式擁抱變化,事實上,這將成為一種競爭優勢。
為什么呢?
當我們進入2014年,這個論點將在邏輯上成為合理的。如果現實果真如此,那么以此推理,在接下來的十年間,那些充分利用軟件構建流程的公司將走向成功。
是的,這個道理大家都懂,有很多競爭優勢是軟件之外的。例如,那些能夠充分利用數學工式去預測未來股票的對沖基金將擁有競爭優勢。那些能夠充分利用布藝和顏色去預測未來時尚的零售商店將擁有競爭優勢。但是,隨著7乘24小時的網絡連接和全球信息共享,你剛想到一個好點子,你的競爭對手就將會去模仿它了。
這讓我們兜了一圈又回到剛才的觀念,那些能夠充分利用軟件構建流程的公司將超過他們的競爭對手,擁有巨大的競爭優勢。這個概念的關鍵詞是“流程”。它是技術棧無關的。從敏捷工程實踐中充分獲益的關鍵是,出現危機的時候仍能極力地堅持最起碼的流程原則。這就像是鍛煉身體。假設你休假的時候每周鍛煉五次,上班的時候每周鍛煉一次,那么實際上你每周只會鍛煉一次。如果離截止日期還遠的時候才實踐結對和TDD,一旦要到截止日期了就把敏捷拋到一邊,那就說明你并沒有勤奮地實踐敏捷流程。
能夠讓企業通過使用敏捷工程實踐獲益的五種具體方法是:
1.可以隨機應變的靈活性
我的公司為大型零售商創建了一個電子商務平臺。在六個月的開發周期中,前三個月團隊具有自主權。我們兩周一個迭代,并且每兩周發布一次代碼。某天,產品團隊做競爭情報研究時發現,一個競爭對手針對退貨修改了他們銷售和信用卡的處理方式。因為我們完成的代碼上個迭代已經充分測試了,并和其他代碼集成好了,而且已經發到生產環境中了,所以我們清楚自己的代碼非常可靠,即使變更也不會有任何宕機或缺陷之類的重大風險。
第二天,我們決定不再繼續既定的構建,而是開了個需求收集會,估算多久能完成新的特性,并對用戶故事重新排序。數天之內,我們就把一組新特性確定好范圍,排好優先級,由團隊優先來完成這些任務。兩周之后,修改后的信用卡退貨引擎就發布到生產環境中了。沒發現任何缺陷,銷售團隊對此非常滿意。
這完全得益于包括測試驅動開發在內的敏捷工程實踐,公司清楚他們能夠依靠技術團隊快速應變,盡可能地降低在線品牌展示質量的風險,從而始終保持著市場的競爭力。
2.可以實時地重新分配開發團隊的成員
如果要達到這種隨機應變的靈活性,在兩周內就發布新的信用卡退貨引擎,那么團隊在本迭代只為這個特性上安排兩名工程師就不太夠了,實際需要四名。由于團隊采用了結對編程和集體代碼所有權的緣故,所以團隊中的成員熟悉每一段代碼,我們可以隨便拉一對已經完成其他故事的程序員去完成這個新的優先級更高的故事,當我們重新排定的優先級之后仍能維持原有的速率。
使用敏捷工程,項目不會因為某個搖滾巨星無法從其他事情中分身而阻礙了進程。整個團隊可以轉向新的需求。為新功能配備的最佳配置可以專心去完成新功能。團隊處在一個不斷交流的氛圍中,所以為一個故事增加更多的工程師會很順利,不會產生任何混亂。
3.自然而然地避免了去廢棄持續了幾個月的工作
經過充分測試再發布生產環境的代碼還有另外一個好處,一旦完成就不會被廢棄。當我們確認需要完成信用卡退貨特性時,就可以把工作重心直接轉到這個優先級更高的新特性上。在這個過程中不需要廢棄任何工作。在我們要開始這項新工作之前,沒有必須要完成或推遲的半成品。已完成的所有代碼都是高質量的、無缺陷的、完整的和有效的。
4.堅信已完成的特性永遠代表著項目最重要的那部分
幾年前,我的團隊為一個大型政府機關項目做一個項目。這個項目是個長期合作,我們編碼就用了一年。因為我們使用了敏捷工程實踐,所以代碼會被持續發布到生產環境中。
在某一天的早晨,一位干系人對這個項目的優先級有了一些新的想法。他擔心因此可能會使其他重要功能無法完成了。他不熟悉每天的項目進度,也沒有意識到敏捷的商業價值。
所幸,工程團隊實際上是緊貼業務開展工作的,每兩周按業務的優先級完成他們的工作,在過去的一年中,最重要的特性已經完成了、已經完全集成在一起了、已經充分測試了,它們的質量堅若磐石。
公司堅信在任何時間點完成的都是最重要的特性。干系人可以放心軟件的任何變更,不但多大都可能,而且都可以欣然接受且風險很低。
5. 能營銷活動策劃充滿信心
我們都曾經經歷過這樣的事,公司策劃一場營銷活動。我經常和團隊在一起工作,他們需要在確定的日期內完成軟件的編碼。去年,我負責一個教育服務性企業的項目。一場營銷活動已經全面鋪開。我們有一個明確的期限:返校日期。他們希望返校期間能產生巨大的銷售額,所以這些特性必須在八月十號之前上線。由于日期是固定的,這場營銷在電視、報刊和在線廣告上也花費了大量的費用,電子商務網站必須在規定的日期內具備最必要的特性。
通常接下來會發生什么事呢?我看到無數的工程團隊最終會處于一種左右為難的境地。八月一號那天,產品經理意識到無法滿足時間要求,如果想讓產品如期上線,工程團隊就要在接下來的兩周里每周拼命地干100小時的活。但是,如果團隊的工作強度如此之大,就會把人搞得非常地疲勞和焦慮,這樣就很容易出現工作上的失誤。
如果團隊能夠設法做到嚴守敏捷原則,繼續依靠工程最佳實踐,那么測試驅動開發、持續集成、結對編程和其他方法將引導團隊準時地發布并靈活地安排休息時間。
團隊只需這么做。我們在高壓時堅守敏捷原則,并握緊手里的槍。使用敏捷能為營銷活動帶來信心,其關鍵就是堅信這樣的一個事實,其實許多特性可以有多種實現方式。例如,假設有一個特性是要把視頻上傳到你的網站上,那么至少有兩種實現方式。方案A:花10天時間開發,使用戶可以上傳任何語言、任何格式和任何長度的視頻文件。方案B:花1天時間開發,讓用戶可以把YouTube的鏈接粘到一個輸入框里。
你怎么選擇我不得而知,但如果我是產品經理,而且時間已經到八月一號了,那我肯定會選擇方案B。
最終的結果是,我們在八月十號成功地發布了產品,它包含了所有的關鍵特性。我們有意欠下了大量的技術債,包括選擇用一天的時間完成視頻上傳的特性。八月十號一帆風順,之后我們把新特性和之前欠下的技術債重新排定了優先級。我們把技術債和新特性一起放到故事列表中重新排序,快速恢復到了兩周一個迭代的平穩工作效率中。
概括起來說,敏捷工程實踐的價值已經超越了工程團隊,對整個企業的好處是顯而易見的。持續運用高效開發過程的公司將帶著巨大的優勢同我們一起走進下個十年。讓你的團隊以最適合的方式去實現敏捷工程實踐吧,如果你有任何問題都可以向我提問,我會非常樂意地與你一起一邊喝喝咖啡、喝喝啤酒一邊詳細地交流討論的。
關于作者
Debbie Madden是一位經驗豐富的管理人員、戰略顧問和接口人。目前,她是 Stride的首席執行官,為高管和企業家們提供戰略建議和一些首席驚喜官的咨詢。Debbie信奉以人為本。她的生活和工作都堅守著熱情、誠實、勇敢、公平的基本原則。她專門為技術、專業服務和初創公司提供指導和咨詢。Debbie堅信,在接下來的十年軟件構建流程將成為公司的巨大優勢。敏捷和初創引發了她的思考。她相信,迭代、協作的方法會把權力授予團隊,個人愛好與商業優先級將保持一致。已經過去的十年,Debbie一直在經營Cyrus Innovation。最近,她已經成為Cyrus的首席執行官,把這家公司從一無所有發展到了規模達60人、價值數百萬美元、五次獲得Inc5000強增長最快的私營企業稱號,并被Crain評為紐約最好的工作場所。
posted on 2014-08-14 09:22 順其自然EVO 閱讀(164) 評論(0) 編輯 收藏 所屬分類: 測試學習專欄