“新瓶裝舊酒”
- 來源:《第一財經》YiMagazine smarty:if $article.tag?>
- 關鍵字:舊酒,新瓶,包袱 smarty:/if?>
- 發(fā)布時間:2022-04-14 20:57
“我覺得,你們還是應該下決心扔掉現(xiàn)在的包袱,重新開始。”視頻會議對面的人說。大概是怕無意中冒犯到我們,畢竟這句話聽起來像是說給失足青年的,他又補充了一句,“可能是我站著說話不腰疼吧。”
我們在討論閱覽室的iOS App,對面是蘋果開發(fā)者部門工程師。這是一次一對一的技術咨詢,屬于蘋果為需要扶持的App開發(fā)者提供的服務。我在蘋果的官方渠道填寫表單申請的。
我們當然需要扶持啊。我們正在開發(fā)App的兩位工程師,一個月前還不會寫iOS。一位是我們的合伙人范懷宇,我們一般管他叫范老師。我和范老師從2011年一起在豌豆莢工作,他是中國最早接觸安卓開發(fā)的那批工程師,著有一本叫《Android開發(fā)精要》的書,其豆瓣評分一直是我們調侃的對象。我是看范老師的blog認識了他。因為安卓的開放性,當年我們對安卓都是真愛,可以說正因此我們才有機會在一起工作。時過境遷,范老師要開始學習寫iOS App了。
明明擅長安卓,但正式開始開發(fā)閱覽室App的時候,我們決定先做iOS版本。是沒有困難也要制造困難的意思嗎?也不是。定性和定量分析都可以充分支持一個判斷。盡管安卓絕對用戶量更大,那些喜歡認真閱讀、對內容品質和體驗有更高追求的人,還是更容易在iPhone用戶里找到,他們也應該是最早開始使用閱覽室的一群用戶。
可以說,從前寫安卓,是對技術的癡迷和熱血;現(xiàn)在寫iOS,則是對閱讀對使命的熱愛。一把年紀從頭開始學習一個新的平臺,讓人感動。
范老師很自信,覺得沒有什么編程語言是他學不會的,而且學習新東西本來也是樂趣。事實證明……他是對的。范老師和我們另外一個安卓工程師楊佳東開始自學iOS開發(fā),沒多久,我們就在他的手機上看到一個新的App了。
新手畢竟是新手。盡管不同平臺在“道”上是相通的,作為資深工程師很容易上手,但iOS開發(fā)有一些特別入門的“術”。比如,范老師就一直沒有學會如何把App打包放到別人的手機上,我們一開始只能拿他的手機來看,遠程的同學只能靠想象—似乎他到現(xiàn)在也還沒有學會,只是他把這個工作交給了佳東。
這也是為什么我預約了蘋果的技術咨詢。
蘋果的工程師在開會之前并不知道我們是誰。讓我驚訝的是,我一說“閱覽室”,對方就知道了。原來他也看到了我們的“預售”,表示挺佩服的。他還說,以前住錦秋家園的時候可以搜索到我們辦公室的Wi-Fi—豌豆莢2011年的時候在錦秋家園租了一套住宅辦公。親切的寒暄結束后,范老師開始介紹App現(xiàn)在的架構設計,介紹到所用的某個框架時,對方至少驚呼了三遍:
“你們用的這個也太老了吧!”
我們其實是在輕芒的基礎上開發(fā)閱覽室,而輕芒的前身又是豌豆莢在2014年前后開始開發(fā)的,也就是說,閱覽室App雖然是個“新”App,但里面的某些代碼已經是8年前寫的了。被吐槽“古老”的框架,是8年前我們的工程師選擇的一個由Uber開發(fā)的框架。要知道,8年前Uber還是引領潮流的當紅公司。但以我們這個行業(yè)的時間維度,8年前簡直就是上古時代—現(xiàn)在早就沒有人在繼續(xù)維護這些框架了。
那為什么要在一個老App的基礎上開發(fā)呢?因為之前我們在產品規(guī)劃階段做的另一個決策,就是決定將輕芒在過去幾年開發(fā)過的功能,如果可以,盡量“遷徙”到閱覽室中。我管這個叫“大遷徙”。在吃完俄羅斯菜以后,我們決定閱覽室“先做做看吧”。我負責產品規(guī)劃,首先就是要決定這個App要包括什么功能。
“創(chuàng)業(yè)”就是要做新的事情,這好像是一個亙古不變的真理。我們這個行業(yè)尤其喜新厭舊。市場喜歡“全新”的東西,營銷部門總是把這個詞放在標題中,iPhone每年都有新款,Chrome瀏覽器每四周會發(fā)布一個新版本。我偶爾寫寫前端頁面,大概幾個月一次,差不多每次都得重新學習最新的開發(fā)框架。做事情的人也喜歡“全新”的東西。沒有一個工程師愿意接手一個別人的項目。何況,我們之前的產品在商業(yè)上也不算成功,不保留之前任何的工作,全部推倒重來,也是合理的。
我不知道在大家的想象里,一個App的功能是如何決定的。在我過去的工作所建立的框架中,這既是一個創(chuàng)造性工作,又被嚴格的方法論約束,大概就像解一道幾何題。這次,我在紙上畫了一些設計稿草圖,又往下構思了幾條功能,感覺似曾相識,這不都是我們在輕芒已經解決過的問題嗎?雖然App首頁長得很不一樣,但要解決的用戶的具體問題,以及能想到的解決方案都沒有什么區(qū)別。打個比方,就像是拿起卷子,發(fā)現(xiàn)這不是我以前做過的題嗎?
連這個感受都是似曾相識的,我在專欄的第一期講述過當我意識到“閱覽室”這個想法和輕芒沒有太大區(qū)別時的沮喪。我當時自圓其說的方式都可以沿用—一個穩(wěn)定的系統(tǒng),輸入和外部條件沒有變化,輸出自然也不需要有變化。在這個案例中,輸入可以認為是對用戶的理解,這幾年來有進化,但沒有推翻;外部條件,可以說是市場環(huán)境和技術進步,我認為和一開始做輕芒時也沒有本質變化。系統(tǒng),也就是我的腦子,我也認為它作為一個決策系統(tǒng),是足夠穩(wěn)定的。那么,我們就直接拿以前的答案來,不是也很好嗎?
況且,這些問題我們已經解了六年了,這里面應該有很多寶貴的積累才是。
既然邏輯推導的結果是以前的功能就很好,那就用已有的功能吧。畢竟我們也不是典型的“創(chuàng)業(yè)”團隊,違反“常識”的地方多了。所以,閱覽室App第一期的規(guī)劃,可以說大量工作都是“新瓶裝舊酒”。
但也是有“全新”的工作的。比如我們做了新的視覺設計,我也為閱覽室的新定位專門設計了2到3個亮點功能,還有圍繞幾個主題,比如強化“閱讀習慣養(yǎng)成”和“社區(qū)氛圍”等等做的小功能。補充一些理論背景,在整個行業(yè)充分競爭的背景下,一個App的大部分功能都不會是差異化的。比如,幾乎所有支持上傳頭像的App都提供剪裁功能,但做這個功能并不能創(chuàng)造獨特的、“非我不可”的價值。一般新產品在初期應該更著重自己差異化的、“非我不可”的部分,再慢慢補齊一些“沒有不行”的功能。
所以,決定盡量“遷徙”我們之前的產品功能,其實是讓新的App一開始就擁有比較完善的“沒有不行”的功能,使其是一個相對成熟App的狀態(tài)。需要做出亮點的,還是要做亮點。“新瓶裝舊酒”,新瓶也要花很多功夫。至于推倒重來—人們總是覺得重來一次自己一定會比之前做得更好,但也往往無法正確預估自己的能力。我們上次大規(guī)模重寫的時候,原計劃花2個月,實際上花了15個月,質量是否有提升不得而知。
保留之前的功能而不是推倒重來,看起來是一個理智的決定,但也是一個充滿風險的決定。我們要付出額外的財務成本才可以獲得之前代碼的使用許可,畢竟這是兩個不同的公司。我們也難以預料將舊的功能改造成我們滿意的狀態(tài)需要花費多少時間,我們只是相信,總該比從頭再來快一些吧。只能說,在已知的信息下,“遷徙”看起來是一個好的決定。至于最后來看是不是一個好的決定,以后才有答案。
范老師另外一個自信,就是覺得沒有他看不懂的代碼。但即使好脾氣如他,我也不時聽到他在我對面的工位上抓著頭發(fā)說臟話。那一定是在讀之前留下來的代碼。之前做輕芒雜志的時候,受限于人手,不少功能和交互在質量上其實都做了妥協(xié)?,F(xiàn)在,范老師和我制定了新的質量標準,如果一個舊的功能不費什么力氣就可以符合質量標準,我們就會遷徙過來并啟用,然后再逐步重構。否則,我們會先關閉這個功能。慢一點就慢一點,功能一開始少一點就少一點。
傳承的另一種說法就是包袱。為了降低風險,我們反而決定將風險最高的遷徙工作放在最前面。這部分工作的難度和工作量都難以估計,數(shù)量、質量和時間無法兼顧。按范老師的說法,起碼我們得先知道冰山底下有多深。我算了一下,過去在輕芒發(fā)布過的功能點大約有770個,加上規(guī)劃中的總共有1600個,有一些功能由于產品定位的變化,在一開始就明確了不會保留;其余的功能點,到2月底為止我們做了徹底的整理,保留了其中的286個。冰山底下,看清楚了。
我借機做了許多處女座該做的事情,美其名曰“打好基礎”。我在整理自己的計時單時驚訝地發(fā)現(xiàn),我單單在整理已有功能并尋找一個較為漂亮的方法來組織整理上,就花了66小時。周夢婷聽說后語重心長地和我說,她也是處女座,但她覺得一個人在多大程度上能和不完美共存,會決定他的智慧的高度。
聽起來她的意思是我還有很大的進步空間。但,我們決定“新瓶裝舊酒”而不是推倒重來,某種程度上也是選擇和不完美共存吧。
