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