2009年,Farhan Thawar加入App開(kāi)發(fā)公司Xtreme Labs任 VP of Engineering一職。那時(shí)候的Xtreme囊中已經(jīng)有很多大客戶(hù),其中就包括了最大的社交網(wǎng)絡(luò )和最熱門(mén)的體育組織。而這些大客戶(hù)的共同點(diǎn)就是,他們都亟不可待地要在移動(dòng)互聯(lián)搶占先機。
無(wú)需贅言,移動(dòng)終端一次次用數據證明了自己才是大勢所趨。Facebook公布其在美國日訪(fǎng)問(wèn)量的78%來(lái)自手機端,Twitter是 75%。并且Twitter 65%的廣告收入來(lái)自手機廣告。
對于創(chuàng )業(yè)公司來(lái)說(shuō),他們有限的時(shí)間和金錢(qián)資源使其不得不在移動(dòng)化的道路上步步為營(yíng)。今天的Farhan Thawar在 Xtreme被加拿大公司Pivotal Labs收購后任Pivotal Labs的 VP-Engineering一職,他談?wù)摿藙?chuàng )業(yè)公司在通往移動(dòng)化道路上的5 個(gè)誤區。
誤區1:在每個(gè)平臺上建原生App(“Native App”)純粹是種浪費
現實(shí):如果你想要一個(gè)5顆星的App,不用掙扎了,5顆星是屬于原生App的。
跨平臺App(Cross-Platform App)的好處無(wú)需贅述,這是個(gè)一勞永逸的工程,一次代碼能在所有設備上使用。聽(tīng)起來(lái)簡(jiǎn)單,沒(méi)錯,Facebook,LinkedIn,甚至美國西南航空剛開(kāi)始也都是這么想的。但圖方便的代價(jià)就是,很快Mark Zuckerberg就跑出來(lái)宣稱(chēng)對于HTML5 (可使網(wǎng)頁(yè)App實(shí)現接近原生App的體驗效果)是個(gè)巨大的錯誤。Thawar至今仍記憶猶新的是,在西南航空還在用跨平臺App的時(shí)候,他參加的所有會(huì )議都把這個(gè)App作為App Store里最糟糕的案例拿出來(lái)講。
“公司們取捷徑的時(shí)候,絲毫沒(méi)有意識到,他們把最糟的用戶(hù)體驗留給了所有人“
三家公司后來(lái)都重新開(kāi)發(fā)它們的App。然而跨平臺App仍對在時(shí)間金錢(qián)上都捉襟見(jiàn)肘的創(chuàng )業(yè)公司最具吸引力。他們過(guò)度依賴(lài)HTML5,混合App (“Hybrid App”)和跨平臺工具包,盡管它們都無(wú)法生成絕佳的用戶(hù)體驗,至少現在還達不到。每個(gè)看上去很美的解決方案都有它的弊端:
HTML5:跨瀏覽器兼容問(wèn)題難以解決,導致最后需要對每個(gè)平臺進(jìn)行優(yōu)化。
混合App:其實(shí)就是原生app外殼封裝的web app,這種app會(huì )像網(wǎng)頁(yè)一樣整體刷新重繪界面,給人慢的印象。此外,應用本身和web界面間的溝通層通常較為復雜,也更容易出錯。原生app無(wú)界面延遲,只重載數據。
跨平臺工具包:要求每個(gè)平臺有大量自定義代碼,這樣給每個(gè)平臺寫(xiě)原代碼更容易。
與其求廣不如求精,把最熱門(mén)平臺的App寫(xiě)深寫(xiě)透才最重要。這又引發(fā)了另一個(gè)議論,究竟哪個(gè)平臺能帶來(lái)最大收益?當大多數公司都把操作系統iOS或 Android放在首位時(shí),調查結果令他們大跌眼鏡。其實(shí)黑莓和Windows Phone的使用者才是一些公司的目標客戶(hù),這一切都取決于你想要這個(gè)App扮演什么角色。為找到最佳平臺就意味著(zhù)要挖掘客戶(hù)群的人口統計資料,從而發(fā)現用戶(hù)們不同的使用習慣。例如Android用戶(hù)和iOS用戶(hù)就有十分不容的使用習慣。Thawar認為要在完全攻克一個(gè)操作平臺之后再拓展到其他平臺,從時(shí)間和質(zhì)量上來(lái)看,這都是做出一個(gè)好App的唯一途徑。
誤區2:我們已經(jīng)有完善的后臺支持App了
現實(shí):你需要改變,升級或者完全重建后臺以創(chuàng )造出最佳移動(dòng)體驗。
API設計和實(shí)現對構建出運行優(yōu)良的App至關(guān)重要。很多公司都體驗到遠高于網(wǎng)站的來(lái)自移動(dòng)終端的訪(fǎng)問(wèn)量。試想,以銀行為例,多數人或許一周都不會(huì )登錄網(wǎng)銀一次卻可以每天瀏覽50次手機銀行。你的后臺設施可以從容應對這樣大的流量嗎?Thawar記得曾有一個(gè)擁有優(yōu)良網(wǎng)站后臺的客戶(hù),在移動(dòng)App上線(xiàn)后,才意識到服務(wù)器在處理每個(gè)請求時(shí)就需要往回輸送1.4MB的數據,在這種量級的數據交換下優(yōu)良的用戶(hù)體驗幾乎不可能。
Thawar給公司們應對類(lèi)似問(wèn)題的建議是:
將有效載荷最大化:最好的移動(dòng)用戶(hù)體驗和最小的數據傳輸并。對于移動(dòng)終端來(lái)說(shuō),好的API允許從服務(wù)器回傳的最大的有效載荷應低于4KB。
分頁(yè)處理:任何類(lèi)型的返回列表都應當支持游標類(lèi)型和分頁(yè)的結果(例如,我能夠從第四頁(yè)開(kāi)始的25個(gè)結果)。
重試:
允許客戶(hù)端向服務(wù)器多次發(fā)送相同的API請求以確保收到,而‘重試‘同樣的API請求并不意味著(zhù)向同一個(gè)服務(wù)器發(fā)送兩個(gè)請求。
低延遲:每一個(gè)API請求的延遲越小,App的反應越敏捷。
每一個(gè)屏幕生成單個(gè)API請求:最完美的情形是移動(dòng)終端的每個(gè)屏幕都只向后臺發(fā)送不超過(guò)一個(gè)的API請求。允許在服務(wù)器終端多程序運行并回傳數據以達到松散耦合。
誤區3:自己開(kāi)發(fā)和外包給移動(dòng)開(kāi)發(fā)公司一樣快。
現實(shí):自己開(kāi)發(fā)至少要多花4倍時(shí)間。
Tharwar有著(zhù)和各種公司合作的經(jīng)驗,甚至是最后不選擇和他們合作的公司,他也都一一分類(lèi)存檔以積累經(jīng)驗。很多公司會(huì )來(lái)到Thawar的團隊這里詢(xún)問(wèn)多久能做好一個(gè)怎樣的App。當從Thawar的團隊里得知這個(gè)App需要1 到3 個(gè)月的時(shí)間后,一些公司選擇自己開(kāi)發(fā)了。但等他們的App在 App Store上線(xiàn)那至少是1 年后的事了,4倍的推遲屬于正常范圍。
很多團隊都有自己的HTML,CSS或 JavaScript的資源,但極少創(chuàng )業(yè)公司能有一個(gè)成熟的移動(dòng)開(kāi)發(fā)團隊。選擇自己開(kāi)發(fā)App實(shí)則是在金錢(qián)和時(shí)間的權衡中選擇了后者。但為什么開(kāi)發(fā)APP要花創(chuàng )業(yè)公司這么久的時(shí)間呢— Tharwar認為創(chuàng )業(yè)公司忽略了最關(guān)鍵的需求: 對口的人才。
多數公司都沒(méi)有把增強工程師們在某一特定方面技能的時(shí)間算進(jìn)去。當決定自己開(kāi)發(fā)時(shí),你需要的不僅僅是出色的工程師,而是有移動(dòng)產(chǎn)品開(kāi)發(fā)經(jīng)驗,QA和 UI設計方面的專(zhuān)才。并且這樣的一支團隊還要能達到高效密切的溝通。如果做不到,可能的結果是:錯誤的產(chǎn)品愿景,或是不完善的QA等等。
如果你決定找外包的App開(kāi)發(fā)公司,那如何選擇又是一個(gè)問(wèn)題。你需要關(guān)注的對方的企業(yè)文化是否契合,相互間是否能建立起高效的溝通反饋,對方公司是否有相關(guān)經(jīng)驗。Thawar認為雙方能夠高效溝通是最關(guān)鍵的。以Chipotle為例,這個(gè)大型連鎖快餐店自2009年的第一版App上線(xiàn)后,直到2013年才推出第二版–四年的延遲歸咎于溝通低效。不要忘記,使用者期待見(jiàn)到是一個(gè)性能和設計上的不斷完善的App。
Tharwar給出的建議是,在挑選合作公司是關(guān)注以下問(wèn)題:
從過(guò)往的項目和客戶(hù)那里,他們在技術(shù)和經(jīng)驗上分別學(xué)到了什么?
能否和客戶(hù)本身的研發(fā)團隊共同開(kāi)發(fā)?
他們熟悉“敏捷開(kāi)發(fā)“(Agile Software
Development)嗎,能否做到例如緊密協(xié)作,密切溝通,頻繁交付新版本等等。
他們曾犯過(guò)最大的錯誤是什么?
Tharwar認為最后一點(diǎn)是最重要的,這是個(gè)關(guān)于誠實(shí)度和透明性的測試。也會(huì )讓你對相互間的合作方式有一個(gè)初步的試水。
誤區4:我如果把App的開(kāi)發(fā)外包了,那我什么也不用做了。
現實(shí):創(chuàng )業(yè)公司作為客戶(hù),也要密切參與到開(kāi)發(fā)過(guò)程中。
最完美的情況是讓雙方每天坐在一起工作,App開(kāi)發(fā)公司才能夠切實(shí)理解你究竟想要什么。對于Tharwar的 App開(kāi)發(fā)團隊而言,他們的目標是盡早以及不斷交付有價(jià)值的軟件。對于客戶(hù)方而言,通過(guò)和軟件開(kāi)發(fā)公司的合作也是一個(gè)積累經(jīng)驗和為未來(lái)自己開(kāi)發(fā)App準備的過(guò)程。一個(gè)優(yōu)秀的移動(dòng)開(kāi)發(fā)團隊甚至可以讓你看清楚以后要雇傭什么樣的員工,且在無(wú)形中提高你未來(lái)移動(dòng)團隊的質(zhì)量。
誤區5:一旦我把項目給這個(gè)開(kāi)發(fā)團隊,我就得永遠依賴(lài)他們。
現實(shí):你隨時(shí)可以離開(kāi),也可以自己接管。
令人諷刺的一個(gè)現象是,最好的移動(dòng)開(kāi)發(fā)公司最后都銷(xiāo)聲匿跡,因為他們教會(huì )了客戶(hù)如何去建立自己的移動(dòng)開(kāi)發(fā)部門(mén)?!敖Y對編程”(Pair Programming)讓雙方尤其是客戶(hù)方的優(yōu)秀的工程師們不斷進(jìn)步,當創(chuàng )業(yè)公司羽翼漸豐時(shí),建立自己的移動(dòng)開(kāi)發(fā)部就不是難事了。
作為一個(gè)創(chuàng )業(yè)公司,你需要一個(gè)理解你公司,產(chǎn)品并且把你的成功和他們自己的成功結合在一起的伙伴。這樣的伙伴不僅能夠祝你在移動(dòng)業(yè)務(wù)上勢如破竹,更能給整個(gè)公司的業(yè)務(wù)帶來(lái)新的機遇。