以互聯網思維做好客戶端軟件

       如今已是移動互聯網時代,作爲一個做PC客戶端軟件的程序員,心中也曾充滿着疑惑和焦慮:自己是否要轉崗做移動APP呢?PC客戶端軟件是否有一天會消亡?但是以下這篇文章不僅解決了我所有困惑,讓我重拾信心,還讓我改變了對傳統客戶端軟件開發的舊思維--用互聯網思維做客戶端。互聯網+的時代已經來臨,作爲程序員的我們,當然要張開胸懷擁抱這技術的潮流啦~!!

轉載自陸其明先生的博客:http://blog.csdn.net/happydeer/article/details/38581213

加入愛奇藝的時間不長,但我感受到的震撼卻不小。在外企打拼了十幾個春秋,今年終於有機會進入一家國內頂尖的互聯網企業,真真切切地有一番不太一樣的體驗。

不過,我今天並不想說在外企工作與國內企業的差別。目前,我負責“愛奇藝PPS影音”PC客戶端軟件的研發。也許有人會有疑問:怎麼還在做PC軟件?大家不都一窩蜂似的轉去做移動開發了嗎?然而,大家要明白的是,雖然PC行業已經風光不再,但PC飽有的體量仍然是巨大的,並且PC自有其不可替代的價值;PC軟件還要繼續做,今天我想說一說的是,怎樣以互聯網思維來做好客戶端軟件。


說起互聯網,大家自然便會想起網站。(順便提一下,愛奇藝就是以網站起家的;現如今,愛奇藝的服務已經覆蓋包括PC、MAC、手機、平板、電視、機頂盒等各種終端。)想必大家也知道網站與客戶端軟件各有優劣吧,比如:網站可以運行在任何設備的瀏覽器上,不需要用戶安裝,也不麻煩用戶升級,能在各個終端保持統一的用戶體驗;而相比之下,原生的客戶端軟件運行得更快,並且能夠充分利用本地資源爲用戶帶來更加強勁、炫目的功能。(推薦閱讀Jeff Atwood的一篇博文:App會取代網站嗎?)我們的客戶端軟件是用C++寫的,性能自然不必多說。而我們公司的互聯網基因,也促使我們把網站的衆多優點融合進了客戶端軟件。

先說說研發流程吧。互聯網行業最大的特點就是變化快。我們求新,必須快速迭代,快速試錯。網站採用的是這種開發模式,我們的客戶端軟件開發也可以。我們採用了Scrum敏捷開發流程——兩週一次迭代,每兩週發佈一個版本。我們稱之爲“小步快跑”——把大功能拆小,分階段實現,追求微創新。比較一下傳統的軟件開發模式:先制定一份詳盡冗長的PRD,然後是動輒1~3個月(甚至半年)的開發週期,再加上一個較長的穩定期來修復足夠多的bug,等到發佈產品的時候,市場環境早就不一樣了……互聯網環境容不得如此慢的節奏!

上面說到了快速試錯。那麼,怎麼試呢?又怎麼知道我們是對還是錯呢?這就要依賴數據啦!網站有它的先天優勢,可以很方便地收集到這些數據:用戶在網站上停留了多久,點了什麼網頁,在網頁上點了什麼按鈕,用戶使用的是什麼瀏覽器,同時有多少人在線,訪問的峯值出現在什麼時間段,等等。我們在客戶端裏也加入了類似的投遞代碼。我們還有強大的數據統計和分析團隊的支持,讓我們對客戶端軟件性能以及用戶行爲瞭如指掌。我們很容易就能知道客戶端軟件的啓動耗時、崩潰率、用戶在我們客戶端裏看了哪些視頻、播放是不是有卡頓等信息。在我們嘗試做了一個新功能、但又不確定用戶是否會喜歡的時候,我們也可以通過一個小渠道發佈這個版本,然後在後臺觀察各種統計數據,以此來幫助我們決定是否應該繼續開發這個功能,或者在後續迭代裏需要在哪些方面做改進。

我們每兩週對外發佈一個版本。我們也深知,發出去的版本就像潑出去的水,也是我們未來必須揹負的包袱。時間一長,客戶端版本碎片化,幾千萬用戶手上的版本多達幾十種。我們固然可以通過軟件自帶的升級機制把最新版本的客戶端送到用戶手上,但出於種種原因,新版本能夠做到高於90%的覆蓋已經不錯了,而這個數字絕對達不到100%。然而,網站卻能做到。網站添加了新功能之後,一旦部署,頃刻之間就能被全世界的所有用戶使用上。問題是,我們怎麼在客戶端裏獲得像網頁那樣的靈活性呢?我們的做法是,對於性能要求不高並且可能會頻繁調整的部分,用HTML/JavaScript來實現,並在客戶端裏用內嵌瀏覽器打開這些網頁;而對於性能要求高的部分,堅決採用我們強大的C++皮膚庫來把網頁本地化。一個很好的例子就是愛奇藝影視大全(http://v.iqiyi.com),在與網站保持協同的基礎上,我們讓它在客戶端裏表現出了更爲卓越的性能。

在功能實現方面,我們時刻保持着一種意識:儘量不把業務邏輯在客戶端裏寫死。否則的話,一旦業務邏輯有變,我們必須修改客戶端的代碼,然後再做全網升級,一來週期比較長,二來新版本也做不到100%的覆蓋,結果就比較被動了。舉一個VIP會員相關的例子吧。在客戶端,我們有針對當前登錄用戶的類型來做不同會員套餐促銷的需求,具體的業務邏輯是:如果當前是普通會員,則跳到白銀套餐的購買頁面(url1);如果當前是白銀會員,則跳黃金套餐頁面(url2);如果當前是黃金會員,則跳鉑金套餐頁面(url3)。一些經驗欠缺的開發人員會把上述邏輯直接實現在客戶端軟件裏,就像下圖中左邊所示的那樣。遺憾的是,一旦VIP會員套餐的促銷邏輯有變,比如,要改成對所有用戶都推銷鉑金套餐,那就慘了!更靈活的實現方式應該像下圖中右邊那樣,客戶端只是調用一個相對固定的url(並帶上必要的參數),而把具體的業務邏輯實現在服務器端。

當然,上面只是一個很小的例子。爲了在客戶端裏獲得足夠的靈活性(不通過發佈新版本就能滿足業務需求),我們還給很多功能加上了雲端配置。只要我們發現某些功能的用戶體驗不理想,隨時都可以調整控制參數,甚至將其徹底關閉。我們始終牢記,我們在做的不是一個單純、孤立的客戶端軟件——我們提供的是一種互聯網服務。也因爲如此,我們的客戶端軟件同時很好地支持了編輯運營(及時發佈時事或專題、熱門推薦、快速上線或下線節目等),以及靈活的廣告策略控制。

PC軟件真的沒落了嗎?其實不然!也許我們只是需要順應潮流,改變一下自己的思維方式。我們相信,只要有用戶存在,每個終端都是重要的。因此,即使沒有聚光燈、鮮花或掌聲,我們仍然在堅持不懈地努力做好產品,全心全意爲我們的用戶服務!


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章