大廠與普通公司的差別
對比BAT這類公司跟普通公司的工程師,其實他們的差距其實本來不大,不管是誰都只是努力地做好自己的事情,只是大公司這類的機會要來得多。
說說差距,主要是:深度、求新。
1. 深度。拿我上家公司的同事的簡歷爲例,他提到了Android中圖片的動態加載。好傢伙,這是一個比較有難度的問題,至少如果你不懂ClassLoader、一些系統對應的代碼是搞不定的。但是深入地問他:圖片加載框架怎麼解決不同資源ID重複、怎麼檢查對應的系統API是否可用(因爲用反射調用了很多系統API,它們不是Public的)、這個方案是怎麼選型的。他都沒有做好回答的準備。大廠裏面因爲用戶量大,牽一髮而動全身,每一項新技術的選用,都會經過至少兩個以上方案的對比,還必須拿出對應的數據證明它對性能的改進。而這都是本來能力跟你同一個level的人做的,只不過他們在大廠中不得不去完成,他們有更多的時間深入一項技術,而不是拼命做業務。
2. 求新。這是來大廠時的感受,新技術會以最快的速度得到傳播,得到應用。大廠內部很鼓勵這樣的事情。在React Native一出來,天貓就已經在進行改造。Android M一出來,微信的工程師們就已經想好了流氓方案。
如何選擇?
今天我的好友中有人問了我這個問題:
在小公司裏面做全棧好,還是大公司裏面做專業的移動端技術專家好?
對於這個問題,我想我大概有點發言權。在我過去若干年的職業生涯中,各種類型的公司也算都經歷過,小一點的公司,大概有四五十人,大廠也待過幾家。
總體來說,也算是瞭解“專業工程師”和“全棧工程師”這兩個名詞背後的水深水淺。
有時,當我們去跟一些人交流,會發現一個奇怪的現象,往往小公司的更喜歡稱自己爲“全棧工程師”,而大廠出來的,則反而不敢自稱自己爲“全棧工程師”。這究竟是爲何呢?
我們可以繼續引述經典理論“達克效應”。
1、不知道自己不知道。
2、知道自己不知道。
3、知道自己知道。
4、不知道自己知道。
這四個階段其實無論在技術層面,還是職場發展過程中,都無處不在。
在我們每個人說起漫長,說起短暫的職業生涯中,總是會歷經無數次技術的發展,甚至變革,這些技術其實在給我們創造價值的同時,也一點點在我們的靈魂深處留下陰影。
有的技術或理論,會對我們的職業發展產生非常深刻的影響;有的則如雨後彩虹一般,突然出現,卻又遽然消失。
每一種技術或理論的產生總會有一套成體系的脈絡,也許入門很容易,但要成爲專家其實非常困難。達克效應表現的也是這樣一種效應。
那些看起來很容易就學會的東西,往往要深入或許更加困難。而許多大廠開發者深刻體會其中的不容易,所以若非經過最少幾百小時的學習,其實不敢自稱爲專家,更遑論自稱“全棧工程師”了。
其實,有的人自稱爲“全棧工程師”,倒不如說是“全能工程師”---每種技術都或多或少懂一點,能夠在很短的時間內完成任務,但一旦要有所深入,就略顯不足,無法再進一步了。
但,無法在技術層面有所深入,是一件難以啓齒的事情麼?
Android發展
也許並非如此。我深深的感覺,在IT行業,看起來風起雲湧,浪潮迭起,但依然充滿前途和光明,其主要原因在於:人們對基於互聯網場景下的應用,需求從來就沒有因爲互聯網技術的發展而有所降低,反而越來越細緻,越來越具體,產生着越來越深遠的影響。
例如,很多年前就說美國互聯網泡沫破滅,但今天互聯網經濟反而越來越重要了;移動互聯網也有人唱衰,“說BAT才掌握船票,已經壟斷中國經濟,其他公司幾乎毫無機會”。卻莫名其妙間,又多出了頭條、美團、小米、滴滴、京東、拼多多等數不盡的優秀互聯網公司。
再過十年IT產業會逐漸退潮麼,IT人才將會毫無施展才華的土壤麼。不得而知,而且也不重要。重要的是,即便在互聯網技術飛速發展的今天,中國依然對優秀的IT工程師非常稀缺。
即使是在某乎上天天可以看到這種:
這種
還有這種
當然了,還有這種
在這種情況下,高級Android開發工程師的薪資卻不斷走高
時至今日,軟件實現過程並沒有因爲軟件技術人才的增加而逐漸簡化,反而依然非常複雜。我們其實都能看到,在IT行業,五年經驗以下的開發者始終居於大多數,不管是十年前,還是今天,行業都幾乎沒有太大的變化。我們能指望現在的年輕開發者能夠提前規避我們之前遇到過的那些問題麼?
歷史告訴我們:人們走過的彎路,後人其實還是會再走一遍。看似大爆炸的互聯網,知識滿地都是。其實,知識過載和知識過乏沒有任何區別。所以,我們寫過的那些垃圾代碼,我們以前遇到過的那些bug,依然有許多年輕人在沿着我們的步伐再走一遍。
那些隱藏在軟件界面的冰山之下,難道bug突然減少了?究竟會不會在哪天突然爆發?客戶提出的需求,程序員們究竟是如何實現的?
我始終認爲,專業工程師依然非常匱乏,無論過去、今天,或未來。
專業工程師或許不一定是某個領域的專家,也許是某些具備優秀跨職能能力的開發者。
他們首先能夠基於某些行業場景出發,以獨特的視角發掘問題的本質,並快速的將業務問題轉換爲技術實現,還能抽絲剝繭,發現不同事物之間的關聯關係,從而更好的將業務問題以軟件的形式進行呈現,
他們也能靈活的發現不同技術之間的優缺點,並使用合適的技術問題來進行適配,使得問題能夠以最快的速度進行解決。
他們還能從多個角度出發,而不僅僅是從【軟件代碼實現】這個維度出發來解決問題,他們所具備的良好的溝通能力和專業素養,使得客戶/用戶能夠願意傾聽提出的建議,從而以最少的代價來解決問題。
成爲專業工程師,與選擇“大廠”或選擇“小廠”有非常明顯的區別麼?
大公司和小公司都有不同的發展軌跡,不同的人適合不同的發展方向。無論怎麼選,其實都是“小樣本”。
個體選擇走【跨職能型人才路線】或走【專業人才】路線,對於偌大的中國來說,都其實不會對歷史的車輪產生多大的影響,但我們的選擇其實是在慢慢的改變我們的生活。
有時,小廠在能夠填補我們對於經濟上的匱乏,又有時,選擇了大廠會讓我們以爲未來的發展無憂。
確實如此,有時一些小廠反而能夠比大廠提供短期內更加誘人的薪資,這對一些經濟條件不太好的人來說,猶如“久旱甘霖”;而大廠看似平滑的發展曲線,能夠讓我們只要沿着設定的方向走下去,肯定不會走錯。
但真的小廠就意味着“朝不保夕”,大廠就一定是“高枕無憂”麼?誰也說不準。
最重要的,也許依然是認清自己的定位,無論在大廠,還是小廠,使自己成爲出色的“專業工程師”,更加全面的成長,或許更能讓我們的職場立於不敗之地。
技術更新不斷,進階之路不停
除了認清自己的定位以外,本質上真正能夠讓我立於中年而不敗的是什麼?
是技術!
你想要提升核心競爭力,最需要提升的是什麼?
是技術!
不管你在大廠還是小廠,永遠只有技術能夠支撐得起你的薪資,而當你薪資虛高而技術水平不足的時候,我建議你馬上着手提升,不然下一步很可能就是被迫轉行了……
客戶端開發的知識點就那麼多,面試問來問去還是那麼點東西。所以面試沒有其他的訣竅,只看你對這些知識點準備的充分程度。so,出去面試時先看看自己複習到了哪個階段就好。
所以需要梳理知識,提升儲備
架構師築基必備技能:深入Java泛型+註解深入淺出+併發編程+數據傳輸與序列化+Java虛擬機原理+反射與類加載+動態代理+高效IO
Android高級UI與FrameWork源碼:高級UI晉升+Framework內核解析+Android組件內核+數據持久化
360°全方面性能調優:設計思想與代碼質量優化+程序性能優化+開發效率優化
解讀開源框架設計思想:熱修復設計+插件化框架解讀+組件化框架設計+圖片加載框架+網絡訪問框架設計+RXJava響應式編程框架設計+IOC架構設計+Android架構組件Jetpack
NDK模塊開發:NDK基礎知識體系+底層圖片處理+音視頻開發
微信小程序:小程序介紹+UI開發+API操作+微信對接
Hybrid 開發與Flutter:Html5項目實戰+Flutter進階
知識梳理完之後,就需要進行查漏補缺,所以針對這些知識點,我手頭上也準備了不少的電子書和筆記,這些筆記將各個知識點進行了完美的總結。
這裏附上針對字節跳動的面試題整理的合集,我們進行了分類,循序漸進,由基礎到深入,由易到簡。
將內容整理成了五個章節:
計算機基礎面試題、數據結構和算法面試題、Java面試題、Android面試題、其他擴展面試題、非技術面試題總共五個章節354頁。
還有一份Android開發相關源碼解析,這份Android學習PDF大全真的包含了方方面面了
內含微信 MMKV 源碼、AsyncTask 源碼、Volley 源碼、Retrofit源碼、OkHttp 源碼等等486頁超全面Android開發相關源碼精編解析
字節跳動真題解析、Android開發相關源碼解析、簡歷模板可以【簡信】我免費獲取
面試時HR也是不可以忽略的環節,我們經常也會遇到很多關於簡歷製作,職業困惑、HR經典面試問題回答等有關面試的問題。
有全套簡歷製作、春招困惑、HR面試等問題解析參考建議。
這些都是我閒暇還會反覆翻閱的精品資料。可以有效的幫助大家掌握知識、理解原理。當然你也可以拿去查漏補缺,提升自身的競爭力。
資料太多,全部展示會影響篇幅,暫時就先列舉這些部分截圖,以上資源均免費分享,以上內容均放在了開源項目:【github】 中已收錄,大家可以自行獲取(或者關注主頁掃描加微信獲取)。