新聞中心
客戶端開發(fā)的成長思考
作為客戶端開發(fā)程序員,首當其沖就是完成業(yè)務迭代,服務好產(chǎn)品用戶和業(yè)務團隊。服務好產(chǎn)品用戶是業(yè)務團隊存在的價值,服務好業(yè)務團隊是客戶端開發(fā)存在的價值。業(yè)務發(fā)展要考慮變現(xiàn),要考慮增長,要考慮留存等等,最終落地的環(huán)節(jié)往往需要客戶端開發(fā)來實現(xiàn)。
創(chuàng)新互聯(lián)自2013年起,先為桑植等服務建站,桑植等地企業(yè),進行企業(yè)商務咨詢服務。為桑植企業(yè)網(wǎng)站制作PC+手機+微官網(wǎng)三網(wǎng)同步一站式服務解決您的所有建站問題。
除了業(yè)務迭代,根據(jù)業(yè)務特色和客戶端開發(fā)團隊特點,會圍繞高效研發(fā)體系和穩(wěn)定研發(fā)質(zhì)量不斷做優(yōu)化,也有的會嘗試跨端能力建設、新技術(shù)探索落地。在更大一點的公司還會關注團隊的技術(shù)影響力輸出,以及不可忽視的安全和合規(guī)能力。
為了更好的衡量客戶端質(zhì)量,往往會用卡頓、卡死、crash等基礎指標來評估質(zhì)量,同時也會不斷做包大小優(yōu)化、啟動優(yōu)化、磁盤和流量監(jiān)控、流暢度優(yōu)化、cpu和電量優(yōu)化等等來提升基礎體驗。同時還要關注研發(fā)過程中的效率提升,比如說研發(fā)流程優(yōu)化、編譯優(yōu)化、自動化測試等等。
客戶端能做的事情非常多,有服務于用戶的業(yè)務方向,也有保障質(zhì)量的基礎方向,還有提供各種通用能力的中臺方向,還有從事各種跨端建設、音視頻處理、網(wǎng)絡建設等等 。從供需關系來看,智能手機的市場規(guī)模是客戶端開發(fā)崗位需求的天花板,全球接近40億的智能手機就是客戶端開發(fā)這個行業(yè)的未來保障。至于脈脈“客三消”理論鼓吹的大前端取代客戶端開發(fā),是典型的杞人憂天。從事過客戶端開發(fā)的程序員都知道客戶端原生Native開發(fā)是不可能被跨端的技術(shù)完全取代。RN、flutter等是在某些特定環(huán)境下會有不錯應用收益,但不管是交互體驗、研發(fā)體驗,各項性能指標都比不上原生開發(fā)語言。
客戶端開發(fā)是移動互聯(lián)網(wǎng)快速發(fā)展的產(chǎn)物,本身也有一些從事的風險點,從我的經(jīng)歷來看,主要有以下問題:
客戶端的很多日常工作是需求開發(fā),需求開發(fā)主要是由各種業(yè)務邏輯、各類界面的實現(xiàn)。最常見的現(xiàn)象是 一年經(jīng)驗用三年,三年經(jīng)驗用十年 。由于客戶端所見即所得的特點,很多開發(fā)者在度過前期的上手期之后,就一直重復使用類似的思考模式去解決問題。如果沒有環(huán)境壓迫,也沒有自己主動去思考突破,會在日復一日的勞作中迷失成長。時間較長之后,往往會陷入能力增長的瓶頸期。
客戶端開發(fā)的求職者和招聘者之間,現(xiàn)在有一種相互矛盾的現(xiàn)象: 求職者感覺外面客戶端開發(fā)的需求量在不斷的變少,招聘者一直在苦惱招不到人。
客戶端開發(fā)的崗位減少是由于移動互聯(lián)網(wǎng)的基建越來越成熟,相比流量成本和維護成本都更高的App,很多小公司選擇使用了更加便捷的小程序、公眾號、抖音短視頻等等大公司提供的基礎平臺,導致了客戶端開發(fā)的崗位需求量在不斷減少。
招聘者苦惱的是招聘不到優(yōu)秀的開發(fā)者,由于互聯(lián)網(wǎng)行業(yè)常年有長期唱衰客戶端開發(fā)的現(xiàn)象(從以前的PC開發(fā)到現(xiàn)在是移動端開發(fā)),再加上最近幾年興起的算法崗位和數(shù)據(jù)分析崗位競爭,越來越少的優(yōu)秀畢業(yè)生投身到客戶端的這個行業(yè)上,導致優(yōu)秀的開發(fā)者供不應求。
“中年危機”是懸在程序員頭上的達摩克里斯之劍,這不僅僅是客戶端開發(fā)會面臨的問題,這是所有大齡程序員都必須面對的互聯(lián)網(wǎng)從業(yè)現(xiàn)狀。由于前面提到的互聯(lián)網(wǎng)基建成熟帶來了的客戶端崗位需求減少問題,客戶端開發(fā)在中年危機這個問題顯得更有壓力。
但是如果覺得從事前端開發(fā)或者后臺開發(fā)就不用面對中年危機,就是太過于樂觀了。設想一下,一個公司為了節(jié)省成本都不做App了,他還會去招一個40的前端開發(fā)或者后端開發(fā)嗎?
互聯(lián)網(wǎng)行業(yè)在快速發(fā)展,薪酬待遇也在不斷提升,這也帶來源源不斷的新人。 當一個新人和老人能力相差不大時,性價比更高的新人往往更容易勝出。 想要避免中年危機,唯有不斷鍛煉自己的能力,思考自己的不足之處,提升自己在市場的競爭力。
根據(jù)自己的粗淺認知,我覺得有下面幾個方向可以努力。
大部分公司的官方回答永遠是彈性工作制,事情干完就可以走。但是事情永遠不可能做完,事情可以做完的公司還有市場競爭力?
我的看法是順應潮流,合理安排時間。優(yōu)先完成工作的事情,然后利用多余時間來進行學習。盡量不要把工作安排的滿滿當當,這樣疲于奔命會讓生活非常疲憊;也不要夸大工作難度、渾水摸魚,摸魚是對自己最大的不負責。按公司提倡的工作時間,合理安排工期,如果還有一些時間可以放松下心態(tài),花點時間學習和成長。
可以從下面幾個方向去探索:
學習如何從重復工作中學習和成長是必須的,因為再新的工作也會變成舊的工作。
學習的方向可以是做事、技術(shù)、思考、規(guī)劃、團隊等等,找一個當下最需要成長的能力開始鍛煉。合理使用環(huán)境的壓力,形成自己的學習和成長動力;偏技術(shù)側(cè)需要自己拆分目標,逐步實現(xiàn)目標,這是非常重要的自驅(qū)力。
成長的過程很簡單,制定目標,實現(xiàn)目標。目標需要有一定的量化標準,模棱兩可讓目標變得不可觸碰。制定目標也要考慮目標的指引作用,對個人而言,目標描述的過程會比結(jié)果更加重要。
努力學習換來好結(jié)果,好結(jié)果繼而激勵產(chǎn)生進步動力,建立一個良好的正向反饋循環(huán)。
一個職業(yè)的未來,要看行業(yè)的發(fā)展前景。 移動互聯(lián)網(wǎng)的發(fā)展規(guī)模,注定客戶端在短期內(nèi)仍然是剛需。至于長期發(fā)展之后,移動互聯(lián)網(wǎng)被新的時代取代,那么也會有新的崗位延伸出來,到時再緊跟時代潮流即可。
另外要把業(yè)務和技術(shù)分開,技術(shù)只是一個工具。在前期確實需要積累客戶端的知識和相關技術(shù),但是隨著時間的推移,慢慢會接觸更多的知識。不要給自己設限制,在適當?shù)臅r機技術(shù)棧可以擴大到后端。假如某個人只做某一個模塊,那么也需要去接觸這個模塊的前因后果,數(shù)據(jù)的產(chǎn)生消費。眼界如果局限在客戶端,那么只能知其然不知其所以然。重點是在于人,人才是解決問題的核心,具體的技術(shù)只是工具。
Archsummit 2019重磅分享|閑魚Flutter&FaaS云端一體化架構(gòu)
作者:閑魚技術(shù)-國有
國有,閑魚架構(gòu)團隊負責人。在7月13號落幕的2019年Archsummit峰會上就近一年來閑魚在FlutterFaaS一體化項目上的 探索 和實踐進行了分享。
隨著無線,IoT的發(fā)展,5G的到來,移動研發(fā)越發(fā)向多端化發(fā)展。傳統(tǒng)的基于Native+Web+服務端的開發(fā)方式,研發(fā)效率低下,顯然已經(jīng)無法適應發(fā)展需要。
我們希望 探索 閑魚這樣規(guī)模的獨立APP的高效研發(fā)架構(gòu)。主要思路是圍繞Flutter解決多端問題,并使Flutter與FaaS等無服務容能力打通,形成云端一體化的研發(fā)能力,支持一云多端的發(fā)展需要。在某些場景已經(jīng)取得效果,希望分享過程中的思考,與大家交流。
閑魚選擇Flutter主要是出于高性能的考慮。Flutter高性能主要來源于2個原因:
更多比較:
沒有銀彈的解決方案,F(xiàn)lutter與RN各有優(yōu)點。如何選擇因素很多,關鍵看如何取舍,舉個例子:
云端技術(shù)棧的打通,是減少協(xié)同的不錯的解法。以往前端+Node.js的一體化方案大家應該不會陌生,然而如果端側(cè)使用了Flutter,那云側(cè)Dart自然是第一選擇。
FaaS的本質(zhì)是運行在云端,那Dart適合用在云/Server上嗎?
Dart語言早于Flutter,在最初的設計上,Dart就可以用于Web、Server。Dart具備一些服務端語言的特點:
閑魚首先嘗試將Dart作為普通的Server,替代傳統(tǒng)的Java Server,然后再將Dart容器嵌入到FaaS容器中。建立Dart Server能力是第一步,也是主要的工作量所在。
閑魚在Dart Server方面的建設思路:
開發(fā)期:
運行期:
上述內(nèi)容實現(xiàn)了FlutterDart FaaS的技術(shù)棧的統(tǒng)一,但僅技術(shù)棧統(tǒng)一還遠遠不夠,端、云的同學仍然無法真正互補和一體化打通,原因在于還有更多深入問題需要考慮:
面向這些問題,閑魚的解法思路:
案例一,一體化在資源均衡方面的體現(xiàn)。在近期的一個項目中,云端一體化使原本2個月的項目時間,減少了20天。
案例二,一體化在業(yè)務閉環(huán)方面的體現(xiàn)。負責增長的一位開發(fā)同學,專注在增長業(yè)務上,在合適的情況下為合適的人投放合適的內(nèi)容,以此帶來用戶的增長和活躍效果。一體化的方式下,可以統(tǒng)一云、端的切面,業(yè)務研發(fā)不再受云、端的限制。
一體化是建設高效研發(fā)框架的方向,并不是所有場景都需要一體化的開發(fā),但一體化的Flutter、FaaS等技術(shù)組件,可以獨立使用,也會帶來效率提升,并且與原有的開發(fā)模式兼容。從一體化的思路去建設,可以使整體架構(gòu)體系更加一致,也有機會做一體的架構(gòu)沉淀。
未來閑魚希望在一體化上做更多嘗試和深入 探索 ,包括一體化工具、一體化業(yè)務平臺、數(shù)據(jù)化智能化等方向。
Flutter跨平臺框架(Dart語言)
Flutter是谷歌的移動UI框架,可以快速在iOS和Android上構(gòu)建高質(zhì)量的原生用戶界面。 Flutter可以與現(xiàn)有的代碼一起工作。在全世界,F(xiàn)lutter正在被越來越多的開發(fā)者和組織使用,并且Flutter是完全免費、開源的。(-中文網(wǎng);-英文網(wǎng))
Flutter是一種趨勢,勢必會取代RN,成為最主流的跨平臺開發(fā)框架,基于Dart語言。ios開發(fā)必須Mac電腦。android開發(fā)window、linux、Mac均可。
像美團外賣這樣的APP用一種開發(fā)語言,能開發(fā)得出來嗎?
像美團外賣這樣的APP用一種開發(fā)語言,能開發(fā)得出來嗎?答案是不能。
美團發(fā)展到現(xiàn)在可以說已經(jīng)是一個【巨無霸】了,里面集成了很多很多功能,除了核心的外賣,還有 旅游 、 娛樂 、購物、出行,金融等等業(yè)務線,那么這么多復雜的業(yè)務根本不可能用同一種開發(fā)語言實現(xiàn)。
那么美團都用到哪些開發(fā)語言和技術(shù)了呢?下面就根據(jù)我的理解詳細說一下。
前端是把產(chǎn)品的核心服務交給用戶的呈現(xiàn)者,它的表述方式、展示形式以及交互邏輯都跟用戶息息相關,都影響著用戶使用產(chǎn)品的體驗,也就是說直接影響產(chǎn)品的用戶留存。
前端開發(fā)主要分為三大類型:Andriod、IOS和PC(H5) ,Android開發(fā)語言是Kotlin和Java,IOS開發(fā)語言是Object-c和Swift,PC(H5)開發(fā)語言就比較雜了,有JS、CSS、HTML,還有很多第三方的前端框架,比如Angular.js、vue.js、Bootstrap、JQuery等等。
關于后端的功能,這一點可以說是眾說紛紜,主要需要考慮的是如何實現(xiàn)功能、數(shù)據(jù)的交互流程和存取、平臺的穩(wěn)定性與性能等。
那么后端都用到哪些開發(fā)語言和技術(shù)呢?
根據(jù)后端技術(shù)選型的標準,后端可選的開發(fā)語言和技術(shù)是非常多的。
比如Java體系的話,可以選用SpringMVC、Spring cloud、Hibernate,Mybatis、Mysql、Redis、Memcache、zookeeper、Kafka......;
比如Python體系的話,可以選用Django、Flask、Tarnado、Web2py等,中間件都是通用的,Redis,MQ、MySQL、Kafka等都可以用在python體系中;
當然還有PHP、C、Perl等開發(fā)語言。
綜上所述,美團這個巨無霸公司,隨著業(yè)務線的擴展用到的技術(shù)肯定會越來越多,而且越來越復雜,技術(shù)快速變革的時代,適者生存的競爭性也會越來越激烈。
俗話說:羅馬不是一日建成的,任何事都不可能一蹴而就,包含技術(shù)。在以后的發(fā)展中美團也會逐步更新自己的技術(shù)和開發(fā)語言的。
至少三種語言。后端一種語言(比如Java丶Go丶Python丶PHP等),后端語言及生態(tài)比較成熟。下面重點聊前端App開發(fā)。
前臺兩種語言(Android和iOS是不同的開發(fā)環(huán)境。比如Android用Java或者Kotlin,iOS采用Object C++或Swift),稱之為Native開發(fā)。
當然創(chuàng)業(yè)公司可以用一種前端語言寫App前端,這樣就不需要Android和蘋果分兩種語言寫,寫一次代碼可以編譯成Android和iOS的App,現(xiàn)在通行的方案有Vue之類的DOM渲染模式,以及ReactNative方案(RN)。性能上RN優(yōu)于DOM渲染但低于用Native開發(fā)的App。所以美團這種公司,一定是Native方式寫App,但RN是初創(chuàng)項目不錯的選擇。
與RN競爭的還有一種新貴flutter,是google推出來的,但設計原理與RN不同,性能方面優(yōu)于RN,只是目前生態(tài)不夠健全,國內(nèi)有閑魚app是采用此技術(shù)。未來可能會占一席之地。
最后,其實App開發(fā)已經(jīng)是強努之末,我覺得主流應該是朝PWA和小程序方向發(fā)展。
你好,開發(fā)譬如美團這種APP,用一種語言是實現(xiàn)不了的,一個APP有安卓和蘋果兩個操作系統(tǒng),開發(fā)能在安卓iOS端應用的APP主流的開發(fā)語言和技術(shù)是很多的,如后臺有JAVA、C++、PHP、Python等多種開發(fā)語言,前端有kotlin、HTML、css、jquery、ajax、bootstrap、angular.js、react、vue.js、node.js、swift、object-c等多種語言和框架。
一個APP的開發(fā)是需要前端技術(shù)和后臺技術(shù)共同配合完成,這樣的APP不論是功能還是性能都給用戶很好的體驗,單一開發(fā)語言畢竟技術(shù)支持有限,所以即使能開發(fā)出來,APP的用戶體驗也是不理想的。
一般APP有這幾種開發(fā)組合模式:1、原生安卓iOS開發(fā),前端:JAVA、kotlin、swift、object-c后臺:JAVA、PHP、C++等后臺技術(shù),這種模式開發(fā)周期長,成本高,性能好;2、混合APP開發(fā)即hybrid app,前端以網(wǎng)頁技術(shù)為主,穿插原生開發(fā)功能,兼具原生APP和web app的優(yōu)點,如淘寶、微信等應用都是走的這個技術(shù);3、web app,前端純網(wǎng)頁技術(shù),后臺為主流開發(fā)語言,這種模式開發(fā)速度快,成本低,界面體驗可能弱一些。
可見開發(fā)一款APP大多數(shù)都是多種語言配合完成,謝謝閱讀。
看完之前的評論,依然好奇為什么一個語言不能完全勝任。
前端跨平臺的方案有react native,cordova,flutter等,如果需要兼容開發(fā)小程序,h5頁面,可以采用taro來開發(fā),一套代碼,所有平臺通吃。
后端的方案有服務端運行時nodejs,大數(shù)據(jù)背景下運用而生的數(shù)據(jù)庫mobgodb,緩存解決方案redis,搜索工具elasticsearch,負載均衡ngix,基本上是需要什么就有什么
所以總結(jié)下來,一句話,一種語言可以實現(xiàn)類似美團這樣的app和小程序。為什么美團使用的語言那么多,一大原因估計是美團app開發(fā)的早,當時前端技術(shù)不成熟,工具沒現(xiàn)在這么多。
使用混合開發(fā)與C++ 進行跨平臺開發(fā),有好有壞。
C++ 進行跨平臺開發(fā)
編寫一次,隨處運行。早在 2013 年,Dropbox 就采用上述策略進行移動開發(fā),這背后的想法很簡單:用 C++ 編寫一次代碼,而不是用 Java 和 Objective-C 編寫兩次。那時,整個移動工程團隊相對還比較小,但需要支持快速增長的移動路線圖。因此,公司希望找到一種方法,使這個小團隊可以快速交付大量 Android 和 iOS 代碼。
如今,Dropbox 完全放棄了這個策略,轉(zhuǎn)而使用各個平臺的原生語言(主要是 Swift 和 Kotlin ,這兩種語言在剛開始制定移動策略時還不存在)。
Hybrid App混合開發(fā)
Hybrid App主要以JS+Native兩者相互調(diào)用為主,從開發(fā)層面實現(xiàn)“一次開發(fā),多處運行”的機制,成為真正適合跨平臺的開發(fā)。Hybrid App兼具了Native App良好用戶體驗的優(yōu)勢,也兼具了Web App使用HTML5跨平臺開發(fā)低成本的優(yōu)勢。
目前已經(jīng)有眾多Hybrid App開發(fā)成功應用,比如美團、愛奇藝、支付寶等知名移動應用,都是采用Hybrid App開發(fā)模式。
移動應用開發(fā)的方式,目前主要有三種:
幾種模似都可以開發(fā)出應用,小應用無所謂,但是大流量應用,對圖形要求高的如 游戲 等原生開發(fā)的效果還是最好
支付寶打開很慢,就是因為采用混合開發(fā),使用人多了不如原生開發(fā)
不行的哦。任何你看到的應用和網(wǎng)頁,都需要多個語言開發(fā)的,大的分比如前端和后端,用的語言都是不一樣的
本文題目:flutter和rn,flutter和rn的優(yōu)缺點
文章地址:http://fisionsoft.com.cn/article/dsidddc.html