敏捷是一種態(tài)度,試錯是一種信仰。在互聯(lián)網開發(fā)里,如果能夠有一個團隊在更短的時間內嘗試了更多機會,并能改進過來,就能獲得更多勝出的機會。
微信敏捷實踐之道
早在2006年接手 QQ 郵箱業(yè)務,按步照班一年過去,QQ 郵箱差點死掉。觸到了底,團隊開始反思,到底是哪兒錯了??雌饋硭坪跄嵌紱]錯,但這恰恰是最大的錯,用張小龍的話講:“一個非常平庸的團隊用了一些非常平庸的方法去做出來一個非常平庸的產品”,而且是不知不覺的,這樣下去很危險。
當時 Allen 的做法是拉出去了一個十個人的“敏捷小隊”,有負責后臺的,前端的,設計的,產品的,大家就都坐在一起。有什么想法、改進立馬去實現,往往大家討論的需求,可能夜里或第二天一早就出來了。正是這種敏捷的方法,讓 QQ 郵箱觸底反彈,起死回生。
作為中國最早的一批知名程序員,早在加入騰訊以前,張小龍就知道“小快靈”對技術研發(fā)意味著什么。要知道, Foxmail 的第一個版本就是他一個人寫出來的。
張小龍團隊對敏捷的實踐,就這么一直延續(xù)。
為了給產品決策者提供最大的自由度,敏捷原則成為整個微信開發(fā)流程的指導原則。對微信來說,在發(fā)布前的十分鐘,也是允許產品決策者提出變更的。不斷修改,不斷試錯,這已經成了微信的特色。對有著海量用戶、單一的功能每天可能會承受上百億訪問的微信來說,這種產品變動是相當大的挑戰(zhàn),但微信做到了??上攵?,微信的研發(fā)承擔了多大的壓力。
如果要說敏捷的最大局限性,可能就在于對技術人員的高要求。程序員出身的張小龍對研發(fā)人員的要求就是“沒有技術實現不了的”,如果實現不了,就再來一次,兩次,三次。研發(fā)團隊的支持,給了產品決策最大的自由,這也是微信勝出的關鍵之一。
那么,什么是敏捷?
敏捷軟件開發(fā)(Agile Software Development)
敏捷軟件開發(fā)(Agile Software Development)從1990年開始逐漸引起廣泛關注,與傳統(tǒng)的瀑布開發(fā)模式相比較,敏捷開發(fā)更快、更輕、更靈活,是一種應對快速變化的需求的一種軟件開發(fā)能力。敏捷(Agile)這個詞起源于17位技術高手在2001年發(fā)起的敏捷聯(lián)盟,并確立了敏捷軟件開發(fā)宣言。
敏捷軟件開發(fā)宣言
我們一直在實踐中探尋更好的軟件開發(fā)方法,
身體力行的同時也幫助他人。由此我們建立了如下價值觀:
個體和互動 高于 流程和工具
工作的軟件 高于 詳盡的文檔
客戶合作 高于 合同談判
響應變化 高于 遵循計劃
也就是說,盡管右項有其價值,我們更重視左項的價值。
Tripwire 前創(chuàng)始人及 CTO Gene Kim 在他的白皮書《The Top 11 Things You Need to Know about DevOps》里寫道:“相對于瀑布開發(fā)模式,敏捷開發(fā)過程的一個基本原則就是以更快的頻率交付最小化可用的軟件。在敏捷的目標里,最明顯的是在每個 Sprint 的迭代周期末尾,都具備可以交付的功能?!?/span>
敏捷強調團隊之間的緊密協(xié)作、面對面的溝通,是一種以人為本、迭代、循環(huán)漸進的開發(fā)方法。在互聯(lián)網時代,敏捷作為一種快速迭代,迅速試錯,小步快跑的開發(fā)方式,逐漸成為互聯(lián)網公司角逐競爭的有力砝碼。
快速迭代、小步快跑
敏捷不光是快,還是靈活,實際中強調對需求的快速響應和適應。敏捷開發(fā)要求最小可行化驗證(也就是精益創(chuàng)業(yè)里的 MVP 法則),及時調整,增量迭代。也就是說,在敏捷開發(fā)里,快速試錯是允許的,產品快速迭代,迅速收集反饋,并不斷優(yōu)化完善,這是一個健康的產品研發(fā)流程。
在互聯(lián)網時代,不試錯,不敢犯錯的技術團隊是可悲的,這只是意味著在用平庸的方法來做事。事實上,敏捷的產品開發(fā),會利用一切可實現的方式來規(guī)避風險,比如微信的所有產品功能迭代會通過灰度發(fā)布和A/B測試的方法先小流量測試,通過了再全量發(fā)布,將風險降到最低,也獲取了迭代反饋。海量用戶和迭代風險絕不是拒絕擁抱敏捷的理由,從某些意義上講,擁抱敏捷是擁抱變化和適應互聯(lián)網發(fā)展節(jié)奏的表現。
敏捷帶來一個最好的心理感受是什么呢?我們今天可以想一些與眾不同的點子,然后我們可以很快就看到效果,因為我們可以很快把它上線了,然后可以去驗證,如果不對就下線,如果還有改進余地,下個星期再去改它。如果改了還不行,那繼續(xù)下線,如果改了行,它一定很好……這是一個能夠持續(xù)實現你的想法的過程。
最后,我們來看看敏捷宣言遵循的原則,體會敏捷之美
我們遵循以下原則:
我們最重要的目標,是通過持續(xù)不斷地及早交付有價值的軟件使客戶滿意。
欣然面對需求變化,即使在開發(fā)后期也一樣。
為了客戶的競爭優(yōu)勢,敏捷過程掌控變化。
經常地交付可工作的軟件,相隔幾星期或一兩個月,傾向于采取較短的周期。
業(yè)務人員和開發(fā)人員必須相互合作,項目中的每一天都不例外。
激發(fā)個體的斗志,以他們?yōu)楹诵拇罱椖俊?/span>
提供所需的環(huán)境和支援,輔以信任,從而達成目標。
不論團隊內外,傳遞信息效果最好效率也最高的方式是面對面的交談。
可工作的軟件是進度的首要度量標準。
敏捷過程倡導可持續(xù)開發(fā)。
責任人、開發(fā)人員和用戶要能夠共同維持其步調穩(wěn)定延續(xù)。
堅持不懈地追求技術卓越和良好設計,敏捷能力由此增強。
以簡潔為本,它是極力減少不必要工作量的藝術。
最好的架構、需求和設計出自自組織團隊。
團隊定期地反思如何能提高成效,并依此調整自身的舉止表現。
|
|