注:作者Nicholas Clark是DoubleDutch公司首席技術(shù)官,該公司主要為貿易展覽和貿易大會(huì )開(kāi)發(fā)社交活動(dòng)App應用。
2013年9月,蘋(píng)果公司正式發(fā)布了iOS 7操作系統,并暗示此操作系統將會(huì )解決SDK支持的遺留問(wèn)題。在DoubleDutch公司(我們偉貿易展覽和貿易大會(huì )開(kāi)發(fā)社交活動(dòng)的移動(dòng)應用程序),iOS7此舉對于我們而言提供了一次絕佳的機遇,可以讓我們重新評估當前產(chǎn)品的狀態(tài)。
在過(guò)去的數年時(shí)間里,我們開(kāi)發(fā)的軟件已經(jīng)得到了長(cháng)足的發(fā)展,而且公司也在不斷完善自己的愿景。但是,圍繞著(zhù)我們的應用程序,公司仍然需要承受較大的負擔(技術(shù)性債務(wù))。我們當時(shí)做了一個(gè)決定,那就是,公司需要立刻重新開(kāi)始、重新改寫(xiě)我們的應用程序,并且不去關(guān)注短期收益,優(yōu)先考慮可長(cháng)期執行的戰略。
在這個(gè)過(guò)程中,筆者在創(chuàng )業(yè)階段學(xué)到了很多,并且感受到了成長(cháng)的收獲,更重要的是,我知道了應該在什么時(shí)候、從最基礎的地方重新思考你的產(chǎn)品。
一家初創(chuàng )公司的幾個(gè)階段
在一家初創(chuàng )公司成立初期,除了創(chuàng )意之外應該就沒(méi)有太多東西了。你需要花了好幾個(gè)月的時(shí)間忙這忙那,比如學(xué)習市場(chǎng)營(yíng)銷(xiāo),與潛在的客戶(hù)見(jiàn)面,還要形成一個(gè)可行的公司發(fā)展方向。
當企業(yè)的方向開(kāi)始越來(lái)越具體,你所開(kāi)發(fā)的東西就會(huì )變成一款最低可行性產(chǎn)品(MVP),而且會(huì )努力找到自己的首批客戶(hù)。這一過(guò)程將會(huì )持續進(jìn)行,直到你獲得到理想的客戶(hù),然后收集用戶(hù)反饋,接著(zhù)再不斷地循環(huán)這個(gè)過(guò)程。你的市場(chǎng),其實(shí)就是你產(chǎn)品需要解決的那些問(wèn)題,將會(huì )變得越來(lái)越重要。
從一個(gè)技術(shù)角度來(lái)看,如果時(shí)間嚴重短缺,初創(chuàng )公司的早期團隊可以由幾個(gè)工程師組成,但是,如果對市場(chǎng)了解有限,加上缺乏資源和分配,可能導致產(chǎn)品和結構性的決策無(wú)法按時(shí)完成。
在這個(gè)階段,客戶(hù)要求會(huì )不斷融入,每個(gè)客戶(hù)都代表了業(yè)務(wù)的一大塊比例,你別無(wú)選擇,只能接受他們。
有些客戶(hù)要求和產(chǎn)品預期較為相符,但是有些則是一些“一次性”的需求。千萬(wàn)不要有“不惜一切代價(jià)滿(mǎn)足客戶(hù)需求”這樣的想法,你必須要不斷地提升產(chǎn)品,并保持核心客戶(hù)的滿(mǎn)意,這點(diǎn)是至關(guān)重要的。
在經(jīng)歷上述過(guò)程之后,你的客戶(hù)群將會(huì )迅速增長(cháng),同時(shí)你的產(chǎn)品功能和復雜度也會(huì )隨之增加。由于對更大的市場(chǎng)有了一定了解,你會(huì )逐漸找到自己的核心競爭力,并且意識到有必要把自己的產(chǎn)品擴展成一個(gè)平臺。
由于產(chǎn)品更新?lián)Q代變得越來(lái)越快,產(chǎn)品代碼可能會(huì )變得過(guò)于臃腫,支持成本會(huì )隨著(zhù)時(shí)間變得越來(lái)越高。過(guò)去對增長(cháng)非常有幫助的產(chǎn)品可配制性,也迅速成為了一種負擔,導致產(chǎn)品更新的節奏越來(lái)越慢。由于此時(shí)的企業(yè)變得越來(lái)越復雜,從而影響到新員工的招聘,由于人手不足,加上產(chǎn)品配置錯誤增多,產(chǎn)品Bug也會(huì )越來(lái)越多。
不過(guò),現在你的工程團隊無(wú)論是在規模還是在專(zhuān)業(yè)技術(shù)上都已經(jīng)變得非常成熟了,而且企業(yè)此時(shí)也實(shí)現了與市場(chǎng)的契合,并準備開(kāi)始積極擴展。有了明確的目標,加上具有較強執行力的團隊,一切就只等時(shí)間幫你解決技術(shù)債務(wù)了?,F在你所要做的,就是為高速增長(cháng)做好準備。
增長(cháng)的好處和壞處
實(shí)現產(chǎn)品和市場(chǎng)的契合是一種很奇妙的感覺(jué),但你必須保持有足夠的靈活性,保持創(chuàng )新,快速做出改變。
一旦你的初創(chuàng )公司實(shí)現了這種契合,那么就需要考慮如何應對日益增長(cháng)的技術(shù)性債務(wù),以下有兩個(gè)很明顯的選擇:1)迭代重構,并不斷提升產(chǎn)品組件2)對于重寫(xiě)(部分)全部產(chǎn)品的工作,要加大投入。
第一個(gè)選擇可以延長(cháng)支持技術(shù)債務(wù)所需要的時(shí)間,但是前期如果沒(méi)有大量成本投入則很難得到持續性的改觀(guān)。重寫(xiě)App應用不僅涉及到的前期成本非常高,而且回報也具有較高的風(fēng)險。不僅如此,重寫(xiě)App應用是對產(chǎn)品未來(lái)不必的一種結構性設計,它不是要解決產(chǎn)品的遺留問(wèn)題。
在評估App應用代碼庫的時(shí)候,有幾個(gè)重要的指標,這些指標會(huì )影響我們做出決定,是否需要重寫(xiě)絕大部分代碼:
未來(lái)的產(chǎn)品核心件需要做大量結構性改變才能實(shí)現
該產(chǎn)品的技術(shù)債務(wù)讓開(kāi)發(fā)速度變慢,并給工程師帶來(lái)負擔
從產(chǎn)品的核心體驗被越來(lái)越多的功能取代
一個(gè)迫在眉睫的事情(比如iOS 7發(fā)布)要求必須進(jìn)行重新架構產(chǎn)品
工程團隊對產(chǎn)品和未來(lái)有著(zhù)非常深刻的理解
如果你身處在一個(gè)類(lèi)似的情況下,比如產(chǎn)品的最后期限迫在眉睫,比如要投入大量時(shí)間,而且你的產(chǎn)品可以從一些關(guān)鍵性改變中受益,那么重寫(xiě)代碼可能是你必須要做的正確選擇。
權衡風(fēng)險
也有人會(huì )說(shuō),重寫(xiě)代碼也許不是一個(gè)非常明智的決策。讓公司整個(gè)工程團隊重新構建一些東西,而且更重要的是,原來(lái)的產(chǎn)品已經(jīng)積累了龐大的客戶(hù)群,這些用戶(hù)很可能會(huì )重復安裝很多次更新,直到重寫(xiě)應用完成。因此,如果要獲得更大回報,重寫(xiě)代碼的確是有較高風(fēng)險的。
如果你決定在長(cháng)遠發(fā)展上下個(gè)賭注,決定重寫(xiě)代碼,那么就需要增加更新的速度,并且要專(zhuān)注于提供最好的終端用戶(hù)體驗,并用最快的時(shí)間找到新的工程師。
對于筆者所在的DoubleDutch公司來(lái)說(shuō),重寫(xiě)App應用意味著(zhù)我們必須要用四個(gè)月的時(shí)間轉移絕大部分工程團隊的注意力,因為我們選擇了改良自己的應用程序接口(API),安卓應用程序,以及iOS應用。在iOS 7兼容性更新上,我們沒(méi)有做太多架構性的改變,因此我們兩名工程師在不到兩個(gè)月的時(shí)間里完成了這項工作。
當然,我們這么做也是一個(gè)非常冒險的舉措。展會(huì )活動(dòng)類(lèi)型的App應用現在競爭性越來(lái)越大,我們之前的App應用的銷(xiāo)售非常出色,因此當時(shí)整個(gè)公司的目標就是盡可能快的發(fā)展壯大,而重寫(xiě)產(chǎn)品似乎和搶奪市場(chǎng)份額的目標不大吻合。隨后,我們重新評估了風(fēng)險,認為競爭對手暫時(shí)還無(wú)法追趕或超越我們,所以如果要迅速有效的獲得未來(lái)創(chuàng )新的能力,我們最終決定重寫(xiě)App應用。
實(shí)現飛躍
接著(zhù)上面的話(huà)題,你肯定會(huì )問(wèn)出一個(gè)非常重要的問(wèn)題,那就是,哪個(gè)風(fēng)險更大一些呢?是減緩幾個(gè)月時(shí)間去開(kāi)發(fā)新功能,還是讓競爭對手重復快速更新?
對于筆者所在的公司而言,我們堅信自己的執行能力,并決心要成為行業(yè)領(lǐng)導者??紤]到這一點(diǎn),我們的希望用創(chuàng )新壓倒競爭對手,但是我們也會(huì )承擔一定的風(fēng)險,比如競爭對手有可能在短期內超越我們。
一開(kāi)始,在我們開(kāi)發(fā)自己的應用程序的時(shí)候,對于市場(chǎng)并沒(méi)有一個(gè)較為成熟的認識,我們只是隨波逐流地去構建自己的產(chǎn)品。事后看來(lái),我們在同行業(yè)中需要有一個(gè)強大的立足點(diǎn),從以往的經(jīng)驗中得到教訓,才能為未來(lái)做更好的準備。
那么,我們是否做出了正確的決策呢?現在來(lái)看還為時(shí)過(guò)早,但是從公司的發(fā)展速度和表現來(lái)看,我們有足夠的理由保持樂(lè )觀(guān)。
相關(guān)閱讀