現在學習安卓還有錢途嗎?
當下安卓開發人近乎飽和,谷歌也推出了新的下一步主打的開發語言kotlin,那麼作為一個即將大三的軟體工程專業的學生,現在還有學安卓的必要嗎?
前幾天和大學畢業去的那家公司的同事敘舊。
當時公司裡面三個安卓,現在除了我都失業去做餐飲了,一個靠家裡在萬達開了春餅店,另一個在學校食堂包了個檔口做麻辣燙,而且tmd賺的都比我多。
感覺有點像零幾年那波php,15年我們當時都開玩笑說,現在大街上看到10個賣烤串的有7個是原來做php的。現在我們做安卓的也都開飯店了,真是可悲可嘆……最可悲可嘆的是,安卓同事大浪淘沙轉行了,tmd賺的比我多,真讓人嫉妒啊。
可能明天我就出門做祥子火勺了!
安卓是一個平台,我理解的安卓工程師,是熟悉安卓 API 的 Java 工程師。
有沒有錢途這個不好說,市場恢復了理性,需要高級開發,精通某一方面(比如音視頻)的,對安卓 framework 層有深入了解的,還是容易找到好坑的。市場會淘汰一波人,這也是正常現象。比如現在很火的前端,有沒有看到當年安卓火爆時候的影子?別把自己限制在安卓開發這個層面上,一個好的安卓工程師其實要學習很多方面的知識。網路,jvm,服務端,Linux底層,framework層。。。安卓不過是一個方向罷了,跟其他的開發並沒太大區別。
另一個方面我覺得安卓沒有飽和,初級飽和了,中高級還是很難招。優秀的就更難了。現在無非就是入行要求提升,但是工資沒以前那麼高了,看起來好像是安卓開發飽和。
個人還是看好安卓這個平台。
隨便嘮叨一句,如果決定入行,不管做哪方面的開發,基本功還是很重要。基本功足夠好做安卓還是服務端還是其他什麼,都沒差。
我司大牛從服務端做起,安卓缺人就和我一塊做安卓項目,雖然在安卓某些機制上有些不太了解的東西在不斷學習,但是單從代碼結構和代碼質量方面來看就甩我幾條街。。。。而且大牛同時兼顧JS端的review。合作的這段時間讓我體會到語言啊平台啊都是浮雲,真正牛逼的是工程師的思維。功夫在詩外,安卓就是一個平台,我們要修鍊的是內功,觸類旁通。雖然我是做iOS的,但目前的App開發市場來說,iOS其實和安卓是一條船上的,因為要一個安卓App就必然需要一個iOS App!
先說說目前應用市場的收益,按照最新的歷年的數據(我不記得具體,但都可以網上查到),一直都是iOS平台應用收益遠超安卓平台收益,而同時安卓擁有遠超iOS的市佔率,這就造成至少目前來說,iOS和安卓任一平台都不會應用開發公司所拋棄,所以那種只有一個平台的開發者的公司最好不用去了,去了也很可能不用多久也會被裁;
接著回到應用開發需求上,看到有的答案說原生不行了,需要h5來搞跨平台才行,因為這可以降低成本和時間,作為摻合過H5開發的iOS開發者看著這種話就想說一句「呵呵」,雖然我沒多高超的技術,也沒在啥大公司混過,但我還是很清楚H5的體驗遠遠low於原生,而從用戶需求角度而言,除非你真的有本事靠絕對的內容留住用戶,那你絕不能忽視體驗的重要性!好多時候頁面切換的滑與不滑真的十分影響心情!
這句話應該沒有多少人質疑吧,為什麼大型的商城App、銀行App敢用H5,一方面是因為他們的內容更新迭代確實快,H5相對更符合需求,尤其是這類App內經常會出現很複雜的富文本需求,H5確實有利這部分開發,但大家別忘了另一個事實,那就是用戶離不開這些App提供的本質服務,要網購有多少人敢不走淘寶、京東,真放心走三流電商?銀行App里直接涉及轉賬、理財業務,體驗再差也就是幾分鐘,再怎麼說也比出趟門舒服吧!這才是那些App敢於這麼「浪」,這麼刷流氓的原因,換其他應用商你給他十個膽子他也不敢這麼玩!現在App市場里同類競品簡直數不勝數,內容不足體驗來湊,體驗不足是因為內容強大到超乎想像!這一點真得給騰訊點個贊,雖然不喜歡這家公司好多黑歷史,但騰訊一直很重視用戶體驗,騰訊一直在堅守原生的路上走著,不管他內容如何,我只知道我用騰訊的App沒有啥卡的時候,用阿里的我多留一秒我都想狗帶,但不得不用沒辦法!
說完原生和H5分別需要的場景以後再說原生的現狀!
確實目前移動開發的需求大不如前,不是因為應用開發需要少了,而是這兩年真正在行內活下來的人都已經可以獨當一面個人高效開發了!兩年前,雖然人多,但好多人經驗不足,加上熱潮下的不理智,公司會放開手大招人,保證效率,但現在不同了,業內的好多人都能夠獨立做出不是那種特別複雜的App(即一般公司需要做的面對特定用戶的中小型App),就拿我最近換的公司來說,需要針對硬體產品做App,App複雜度說大不大,說小不小,但安卓和iOS各一個,就足以完成需求,這才是目前移動端開發者需求真正減少的原因,因為公司發現並不需要那麼多開發者,一兩個足以應付需求,所以公司需要的是可靠的員工,而不是海量的新人,畢竟公司並沒有帶新人的義務,當然這一點我也很感謝當初接納我的上家公司裡帶我的一位前輩!並且按照我目前所在公司的規劃而言,只有當所計劃推出的平台真正變強了才會開始擴大讓開發人員負責功能細化保證每一項功能的精確無誤,而說實話市場上能做到這一步需求的還是很少的,當然我希望我所處的這家能做到這一步,至少不出意外做到這一步對我也是有利的^_^
最後大體總結一下:
1、只要web的體驗不能真正意義上較好的追平原生(那種寫一兩個頁面顯得流暢的少來扯,真正上一點檔次立馬出事率直飆,而且真正適配器來web並不比原生省勁),原生就不會死,太多公司指望著靠體驗來超過內容實力相平的對手,因為體驗只要招幾個水平真正好的開發和設計就能突飛猛進,而內容需要時間的積累和機遇的出現!
2、不能保證學的很好且對此行有興趣的也可以不用考慮,目前市場開始趨於穩定(不完全等價於飽和,飽和的只是新手市場,大牛市場永遠在稀缺),將會把好多新人拒之門外,這確實不是很友好,但對目前行情來說,是對公司最有利的選擇方案,公司選擇一個能夠獨立開發常規不是很複雜的2、3年經驗的開發人員的成本肯定是遠比收幾個還不確定能不能做事的新人來的低
鄙人做Android三年了,從一個無名小卒,混到無名大卒(此處有尷尬),師傅領進門,修行在個人。全靠自覺自學。語言這麼多,框架這麼多,學無止境。所有東西不過都是為業務服務。哪裡有需求,哪裡就有戰場!為了業務快速迭代,我開始學習前端了!吾深知,人應勿忘初心。所以魚和熊掌我要兼得,總有閃亮的一天。即便沒有,我也會因為興趣使然,去做這件事。
我們知道,互聯網技術更新很快,android更新的更快,所以學習android的個人覺得是頭腦比較靈活,接受新知識能力較強的人,很多東西過幾天就有新方法,新的組件,這也意味著對新知識有一定的敏感度。android其實屬於前端範疇,就目前我的了解,android的市場需求確實相對以前飽和了,我不知道題主什麼水平,個人是不建議將android作為主方向的,即使學校是985.如果是升大三的話,建議留意下即將到來的秋招,春招,將自己當做明年就要畢業了,做下筆試題,也試試投投簡歷,感受下校招的氛圍,這樣有利於接下來選擇什麼方向,刷刷牛客網
學得精到哪都有錢途,學成半吊子到哪都沒錢途。
大三、大四的時候,也是各種問別人做iOS有錢途么?那時候,14年中的樣子,別人告訴我有,上手簡單、工資高、offer大堆隨便挑。然後就入坑了……現在iOS行情有多坑,同行應該是有目共睹的。
現在移動端,很多公司都採用react native/web + native來開發的,如果你可以把安卓學學,計算機基礎紮實,通過校招找一份不錯的offer我想是比較簡單的。
但是,一定要注意的是,如果校招沒找到合適的,你想通過社招去從那些自稱三四年經驗的安卓開發去搶offer,然後別人開的工資比你低的時候……會發現絕望就是這麼簡單。曾經學過Android,曾經想過找一份Android開發的工作。
但是,現在也不得不承認,Android、ios的市場需求已經大大不如以前,起碼是初級程序員的需求已經飽和,但高級程序員的需求還是很大的。可惜的是,沒幾個人能跳過初級程序員這個階段,正確的說來,應該說是沒人能跳過初級程序員這個成長階段。剛剛畢業/轉行的,能有幾個人是能一口吃成胖子、一飛衝天成大牛的呢?所以這就很尷尬了。
不過如果從學習的角度來看,學Android還是能學到很多東西的,甚至比一開始就學後台開發能學到的東西更多。
因為Android操作系統內存小,對性能要求高,且比較少像Spring這種大而全的框架(至少在我學的時候是這樣),這時候就要求你去了解一些操作系統、多線程、網路編程等等這些東西。看看那些Android開源框架/Android底層代碼,也能學到很多設計模式、代碼簡潔等東西。這些還是很有意義的。
而這些對於Java後台來說,很多都被跳過了,因為Java Web太成熟了,Tomcat、Spring這些容器已經幫你做了很多東西,使得你不是很需要了解多線程、網路編程這些東西,也能照樣寫業務代碼。(當然,如果深入進去,Java後台要學的東西也不會比Android少。每個方向都是這樣的。)
所以,就現在的大環境來說,我的建議是:單學Android,不如學大前端(Android、ios、web前端框架等)。不要太鎖死一個方向,時代正在不斷改變,你看Android都可以用kotlin來寫了。。。大前端就是要緊跟時代節奏,學無止境。。。
我來說點客戶端開發者不太愛聽的吧。
現在很多公司的項目:1)為了兼容多平台、2)為了快速升級、3)為了減少多種技術棧員工導致的成本。都慢慢開發使用h5頁面,所謂的客戶端僅僅只是一個webview的殼而已。
每個app就好像是一個專用的瀏覽器,訪問的頁面全部都是後端下載過來的html頁面。如果網頁實現不了的功能,則開些與系統交互的介面。
這樣會導致什麼樣的後果呢?
就是客戶端開發的需求會大量減少。因為再複雜的app,如果不涉及太多系統層面的交互,也就一個程序員就夠了。甚至有些小項目一個人都不用,要麼外包,要麼找人兼一下。
當然,同時對前端的需求會大量增加。這也是為什麼近幾年前端職位一直缺乏的原因之一。
不過,能代替的全部都是原來那些簡單的界面展現的邏輯。
如果能研究的比較深,例如系統內核的優化和修改,瀏覽器內核的優化和修改等等。此類人才還是非常有錢途的,尤其大公司都需要。
歡迎點贊。
——————————————————————
補充下:
我從來沒說過native會完全被h5代替。native確實有h5難以達到的優勢。所以很多複雜交互的app是無法脫離native的。但是這依然阻止不了那些不複雜的交互大量被h5代替的現實。
還有,當時回答的時候就預感到客戶端的同學們會很不開心。但是沒想到很多跳出來直接對我人身攻擊。對此,我能理解,但你們情緒已經失控,所以我不與評論。
來,深吸一口氣,平靜下。無論我說的有沒有道理,客戶端的需求不會因為我的言論而突然消失,對吧。那有什麼好生氣的呢?
學android當然是很有意思的一門行業。語言基於Java,從事公司大部分為互聯網性質。交集行業也廣,會接觸到前端 後台 產品 設計 很多方面,你在從業過程中會感覺到什麼都要學習接觸一點。後期你可以轉後台開發,學學相通的iOS,也可以轉前端JS,甚至轉產品。android入門簡單,官方API豐富,開源活躍。有Google爹扶持,這個很重要,你會發現每年都在學新東西。
至少接下10年,Android這操作系統不會衰敗,更有可能比現在還風光。不過基於它進行app開發的程序員是否錢途,那要看你掌握的編程技能了。我把Android的app程序員分為三類。
1、只會基於Javascript的Web框架開發,像RN、Vue、Angular。
2、會用Java、kotlin原生開發,會調用NDK寫的庫,但不會用C/C++寫NDK庫。
3、熟悉NDK編程,能熟練使用C/C++。
隨著硬體觸摸技術、各種Sensor的成熟以及整體微處理器能力的提升和小型化,使2007年末開始移動時代。現在距2007過去十年,很多跡象指向同一個結論:移動app的高速增長已經飽和,比如用戶已經不再願意下載新的app。可技術不會停滯不前,用戶對app的功能需求不會有盡頭,下一階段app增長點會是在哪裡?——人工智慧。近幾年以深度學習為主力掀起了一波人工智慧浪潮,不得不承認,這波浪潮在很多地方被吹噓過頭了。但是,此波DNN技術的確給機器視覺領域帶來變革,讓識別可靠性大幅提升,如果把這個提升應用到移動app,勢將在不少行業觸發新增長點。
具體到實現方法,OpenCV+TensorFlow極可能將是接下一段時間人工智慧兩個核心庫,它們在iOS、Android都已(初步)實現了產品化,接下就是慢慢形成產業生態,這生態中的一個特點是將分化出兩種開發者,第一種是編寫模型的,第二種是編寫app的。app程序員自然屬於第二種,不過相比於以往,如果要能在app中使用人工智慧得多學什麼呢?1)在app中使用模型;2)會進行OpenCV一系列API調用。而以現在技術看,至少接下一、兩年,這兩者的調用都逃不開用C/C++。隨著時間推移,腳本語用調用會成形,那時腳本語言會是什麼?個人不看好是Javascript,因為Javascripts和C/C++的隔閡太大。——無論怎樣,要使用人工智慧,會NDK的Android程序員是必不可缺的。
以上是在傳統app中嵌入人工智慧,然後給Android app引出一個新增長點。除了它,Android又一增長點是機器人,正是在這領域的發展,我認為十年後的Android可能比現在更風光。「如何『自寫』機器人人操作系統?一種低成本又高效的方案是定製Android。相比基於linux改,定製Andorid帶來的額外優勢是已支持llvm、C++11和boost。工具鏈中重要環節,像Webrtc、Tensorflow、cardtographer已要求編譯器至少要支持C++11或boost。同樣,編譯器用llvm放棄gcc,這已是不可逆趨勢。」(家用機器人中的app)。
對機器人,由於軟體比手機app要複雜,於是對如何使用CPU、內存這些都會更嚴格,導致的是會要求儘可能多地用C/C++編程。但它本質就是個Android,逃不開Android編程框架,這當中自然更多將是NDK編程。
回歸主題,讓看開始分出的三類開發者。第三種開發者(NDK)將錢途無限,當然前提是他們要擴展其它知識,像會OpenCV、TensroFlow,還有像Webrtc。至於第二種,中規中矩,雖然傳統移動app沒啥可發展了,但新增長點出現後他們還能有所做為。至於第一種,不言自明,——正所謂一分技術一分貨,淘汰也是情理之中。
既然題主問的是錢途,而且是個大學生,我必須要答:沒有關係。
為什麼沒有關係?
第一,很多校招是不區分前後端Java開發的,所以題主要做的先是打基礎,而不是糾結Android合適不合適的問題,什麼是基礎,相信題主也懂,所以題主還是先努力學習;
第二,校招的offer基本是一個價格的,除非是special offer,所以在錢途上關係不大,所以題主需要再努力學習;
第三,工作後錢途如何,完全和你入職前沒有什麼關係,重要的是入職後的運氣和努力,甚至有時候運氣比努力說不定更有效,但是運氣控制不了,所以題主最後還得努力學習;
所以綜合三點來看,題主要做的是已經呼之欲出。
至於很多答主又開始native,web之爭,各種前景風向標預測,聽聽就好。以我從業多年經驗,這些紛爭從來沒有停止過,什麼native要死,web前端要坐火箭,android要掛,iOS統領天下,java要死,kotlin一統江山等等層出不窮,我想問,so what?馬克思說,「人挪活,樹挪死,此處不留爺,自有留爺處」。
更何況,沒有架刀逼你只學一個技術。大學時期到畢業工作幾個月都是做後端,後來做android前端,寫過iOS,做過windows,計算機很多東西都是相通的,特別是抽象的東西,退一萬步講,即使轉個業應該也不難吧。
不要糾結到細節上去,覺得感興趣那就去干,想當年,當我寫第一個android程序時,手上拿的還是諾基亞,以後怎麼樣,天知道?
我個人做了個大概的比方,cs有點像蓋房子,拿android來說,kernel像是地基,驅動framework層這些像房子,而app像是裝修房子,打地基蓋房子只要你能把各種基礎搞勞以後都不會脫離建築物這個框架,而裝修就不同了,有中國風 歐美風,北歐風,工業風,日系。。。也就是說你要搞出花樣就要懂各種裝修風格的內在,不然哪一年流行什麼風格你怎麼知道。如果今年北歐是流行風格(打個比方),過幾年復古潮一來多數家庭又選擇復古的,你只懂北歐裝修就要失業了。像我只會android app開發的,感覺再不轉行寫其他平台,就快失業了。
現在學,和1949年入國民黨有什麼區別?
崗位有,相較15年及之前少了很多,要求工作經驗年限變高,掌握技能要求變高
還時常背鍋
發展前景肯定是有的,只能家居、車載等領域很多還是用到安卓系統的
看個人了吧
大神到哪都吃香
別聽什麼學好就有前途,全是騙人的,這種人不是傻就是壞。大勢就是大勢,原生開發大勢已去。學好了能幹嘛?去淘寶?去微信?人家架構已經很成熟了好吧?你進去了能有什麼發展?況且絕大部分人根本進不去。看看十幾年前windows開發做的好的,現在在幹嘛。既然才大三,就別跳這個坑了。
我們組正在招Android,一面就是我。既然大家這麼自信,來私信內推吧。
閱文集團_社會招聘
可以明確的告訴題主無論什麼時候你問類似的問題的時候說明你自己的內心深處是動搖了,要麼就是不感興趣要麼就是看不懂,學不會……前景都是你的潛意識給你的動搖找借口。
我讀大學之前周圍的人告訴我學英語吧,英語有前途,英語和外國人打交道,有前途;
我大二的時候我周圍的人又告訴我學英語沒前途,趕緊趁現在多學一點別的東西……我那時候跟你現在的狀態是一樣的,深度懷疑我的努力還有沒有意義,陷入深深的焦慮中……於是我入行自學Java
後來畢業了,我找的工作都是什麼?互聯網,跟英語沒毛的關係……我學的Java也沒學好。
再到現在我自己做產品開始自學安卓,對就是貴乎一直看衰的安卓,用他們的看法是不是就沒有前途?我之前的英語基礎加上我自學Java那段時間對數據結構的了解在我自學安卓的時候發揮的作用是很大的。
我要告訴你的是要驗證一件事千萬不要輕易問周圍的人,他們跟你的圈子重合度太高,基本上他們的答案就是你心裡的答案。
擴展開來就是來貴乎問的問題獲得的答案(尤其是這種「……還有沒有前途」的問題)太主觀完全反應的是回答者的個人認知,這些答主的認知範圍差距太大,所以你得不到相對更客觀的答案。
對世界一知半解的人最喜歡看衰這世界;
對世界一知半解的人最喜歡看好這世界; 對,越是對某領域一知半解以為掌握了全部真理的人越容易極端的看待某個領域——要麼極端看衰,要麼極端吹捧。你現在既然學了這個專業就要靜下來學下去,說句雞湯一點的話就是你現在所學的一切都不會白學,因為你不知道在將來的某一天它就會變現……
安卓發展到現在也經歷了互聯網「颳風」的那麼幾年。在那幾年裡是個不冷靜的年代,那幾年不僅是安卓的黃金時代也是ios,Java,object-C的黃金時代,好找工作,工資還高……於是人們就沉浸在「黃金時代」中不願意醒來,還時不時的有意無意的拿現在同那個時代比。
市場趨於冷靜了,理性了,風停了,也摔死了不少想借風勢起飛的豬,而這些豬都是程序員們曾經的歸宿……
現在的技術領域基本你問哪一個需要肯定都會有人唱衰有人鼓吹。知乎是個目標篩選器,來到這裡答題的人我相信沒有多少真正的大牛,也沒有多少真正一無所知的小白,絕大多數我相信都是我前文說的「對世界一知半解的人」,讓這部分人來回答問題肯定是走兩個極端的。
說了這麼多我就是要告訴題主,這世界充滿了概率,任何人無論是創業,找工作,找對象……都是一種概率。人的命運年輕的時候看是掌握在自己手裡,如果你經歷的多了就會發現人的命運真的不是自己可以掌握的!
或許這就是「人在江湖,身不由己」吧。
我的回答只是基於我的經歷,你不必採納,也不必認真,畢竟,每個人的具體條件都不一樣。你現在可以學下去(我也建議你學下去)又或者換專業,這個隨性了。
但是希望你記住一句話: 人類最善於總結過去但卻沒有一丁點能力去預測未來。
看,我現在就在學安卓。你既然學了軟體工程難道不理解編程語言觸類旁通這個現象么?不論是面向對象還是面向過程我相信只要你能夠充分的利用你的歸納想像能力完全可以快速入門其他語言的!前提是你仍然對你所學感興趣而不是被逼的。
碼字不易,時間緊張,回答的可能邏輯不好,希望能給你帶來啟發。看這道題下很多答案仍在的鄙視HTML5的性能,搞什麼原生開發正統論,目測已經很久沒體驗過領先的混合應用能做到什麼程度,市面上各種頭條資訊類應用都是用WebView做內容呈現的,用起來感覺到卡了么。
其實這個問題很簡單,大部分應用都是展示類的,WEB 方案做展示類的應用有得天獨厚的優勢,隨著硬體的發展,性能問題在一天天變得不明顯,大趨勢就是如此。很多人說選用 HTML5或者一些跨平台方案要踩坑,但是做過的都知道即使踩坑也比原生搞兩個平台快多了,所以才有越來越多的人願意來繼續踩坑。
誠然,高端的Android和iOS工程師一直是稀缺,但是想想去培訓幾個月就想上崗的人成為高端工程師的概率有多大,承認與否都要清楚,培訓這條道現在越來越難走,想要走出來就要付出常人所沒有的努力。
回答題主的問題,沖著『錢途』學開發,不管是哪個方向,沒有深入下去的心還是別了,現實會打臉打得很疼,這行吃香的永遠是能不斷學習,不斷迭代的人。
利益相關:三年混合App開發者,這期間自學了iOS和Android的基礎開發,以及React Native,這樣多個視角下看問題還是能注意到一些有意思的事兒的。
不光是android,只要是程序員,都沒前途!除非你任勞任怨…犧牲業餘時間加班+不斷學習…但你都只是資本家的一個棋子而已…
推薦閱讀:
※如何評價 Google 的 Nexus 系列手機?
※當你掌握什麼Android技能時,面試官會非常想要你?
※安卓還有哪些做得不夠完美的地方(2015年9月)?