qileilove

          blog已經(jīng)轉(zhuǎn)移至github,大家請訪問 http://qaseven.github.io/

          從敏捷工程實踐中獲益的五種途徑

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

          posted on 2014-08-14 09:22 順其自然EVO 閱讀(167) 評論(0)  編輯  收藏 所屬分類: 測試學習專欄

          <2014年8月>
          272829303112
          3456789
          10111213141516
          17181920212223
          24252627282930
          31123456

          導航

          統(tǒng)計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 洱源县| 丽江市| 武乡县| 舞阳县| 额敏县| 环江| 施秉县| 阿巴嘎旗| 含山县| 兴城市| 雅江县| 高淳县| 济宁市| 水富县| 宁强县| 巴林左旗| 利津县| 莎车县| 抚宁县| 珲春市| 江山市| 龙海市| 七台河市| 罗城| 疏勒县| 禄丰县| 章丘市| 玉田县| 盐津县| 泗洪县| 白银市| 武冈市| 五常市| 江陵县| 普洱| 迁安市| 柘荣县| 宜阳县| 马尔康县| 安新县| 来安县|